From 2331040af3af1bb5e4684516c0d4661ea545bbfe Mon Sep 17 00:00:00 2001 From: Baz Date: Wed, 2 Oct 2024 19:00:45 +0300 Subject: [PATCH 001/379] =?UTF-8?q?=F0=9F=90=9B=20Source=20Chargebee:=20Up?= =?UTF-8?q?date=20CDK=20version=20to=20`^5`;=20increased=20the=20`maxSecon?= =?UTF-8?q?dsBetweenMessages`=20(#46294)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-chargebee/metadata.yaml | 4 +- .../connectors/source-chargebee/poetry.lock | 1022 +++++++++++++++-- .../source-chargebee/pyproject.toml | 6 +- .../source_chargebee/components.py | 127 +- .../source_chargebee/manifest.yaml | 2 +- .../unit_tests/integration/test_addon.py | 2 +- .../unit_tests/integration/test_coupon.py | 2 +- .../unit_tests/integration/test_customer.py | 2 +- .../unit_tests/integration/test_event.py | 2 +- .../integration/test_hosted_page.py | 2 +- .../unit_tests/integration/test_plan.py | 2 +- .../integration/test_site_migration_detail.py | 2 +- .../integration/test_subscription.py | 2 +- ...est_subscription_with_scheduled_changes.py | 2 +- .../integration/test_virtual_bank_account.py | 2 +- .../unit_tests/test_component.py | 2 +- docs/integrations/sources/chargebee.md | 1 + 17 files changed, 1087 insertions(+), 97 deletions(-) diff --git a/airbyte-integrations/connectors/source-chargebee/metadata.yaml b/airbyte-integrations/connectors/source-chargebee/metadata.yaml index 46919fd551b29..4772e28381317 100644 --- a/airbyte-integrations/connectors/source-chargebee/metadata.yaml +++ b/airbyte-integrations/connectors/source-chargebee/metadata.yaml @@ -10,13 +10,13 @@ data: connectorSubtype: api connectorType: source definitionId: 686473f1-76d9-4994-9cc7-9b13da46147c - dockerImageTag: 0.6.12 + dockerImageTag: 0.6.13 dockerRepository: airbyte/source-chargebee documentationUrl: https://docs.airbyte.com/integrations/sources/chargebee githubIssueLabel: source-chargebee icon: chargebee.svg license: MIT - maxSecondsBetweenMessages: 300 + maxSecondsBetweenMessages: 21600 name: Chargebee remoteRegistries: pypi: diff --git a/airbyte-integrations/connectors/source-chargebee/poetry.lock b/airbyte-integrations/connectors/source-chargebee/poetry.lock index 5ce08b628a355..b34cdeebd3242 100644 --- a/airbyte-integrations/connectors/source-chargebee/poetry.lock +++ b/airbyte-integrations/connectors/source-chargebee/poetry.lock @@ -1,54 +1,92 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "0.80.0" +version = "5.9.0" description = "A framework for writing Airbyte Connectors." optional = false -python-versions = "<4.0,>=3.9" +python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-0.80.0-py3-none-any.whl", hash = "sha256:060e92323a73674fa4e9e2e4a1eb312b9b9d072c9bbe5fa28f54ef21cb4974f3"}, - {file = "airbyte_cdk-0.80.0.tar.gz", hash = "sha256:1383512a83917fecca5b24cea4c72aa5c561cf96dd464485fbcefda48fe574c5"}, + {file = "airbyte_cdk-5.9.0-py3-none-any.whl", hash = "sha256:aad20eaa6741a1fdaa25d7aef87a32d9b2562a3f8797281d70af23d7cc871a6c"}, + {file = "airbyte_cdk-5.9.0.tar.gz", hash = "sha256:57280fab00308b44e089d685d7e3b2ffa646d2d7df5cc39e4f78e9a8c8d8ca76"}, ] [package.dependencies] -airbyte-protocol-models = "0.5.1" +airbyte-protocol-models-dataclasses = ">=0.13,<0.14" backoff = "*" cachetools = "*" +cryptography = ">=42.0.5,<43.0.0" Deprecated = ">=1.2,<1.3" -dpath = ">=2.0.1,<2.1.0" +dpath = ">=2.1.6,<3.0.0" genson = "1.2.2" isodate = ">=0.6.1,<0.7.0" Jinja2 = ">=3.1.2,<3.2.0" jsonref = ">=0.2,<0.3" jsonschema = ">=3.2.0,<3.3.0" +langchain_core = "0.1.42" +nltk = "3.8.1" +orjson = ">=3.10.7,<4.0.0" +pandas = "2.2.2" pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" +pydantic = ">=2.7,<3.0" +pyjwt = ">=2.8.0,<3.0.0" pyrate-limiter = ">=3.1.0,<3.2.0" python-dateutil = "*" +pytz = "2024.1" PyYAML = ">=6.0.1,<7.0.0" requests = "*" requests_cache = "*" +serpyco-rs = ">=1.10.2,<2.0.0" wcmatch = "8.4" [package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.0.271)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] +vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] [[package]] -name = "airbyte-protocol-models" -version = "0.5.1" -description = "Declares the Airbyte Protocol." +name = "airbyte-protocol-models-dataclasses" +version = "0.13.0" +description = "Declares the Airbyte Protocol using Python Dataclasses. Dataclasses in Python have less performance overhead compared to Pydantic models, making them a more efficient choice for scenarios where speed and memory usage are critical" optional = false python-versions = ">=3.8" files = [ - {file = "airbyte_protocol_models-0.5.1-py3-none-any.whl", hash = "sha256:dfe84e130e51ce2ae81a06d5aa36f6c5ce3152b9e36e6f0195fad6c3dab0927e"}, - {file = "airbyte_protocol_models-0.5.1.tar.gz", hash = "sha256:7c8b16c7c1c7956b1996052e40585a3a93b1e44cb509c4e97c1ee4fe507ea086"}, + {file = "airbyte_protocol_models_dataclasses-0.13.0-py3-none-any.whl", hash = "sha256:0aedb99ffc4f9aab0ce91bba2c292fa17cd8fd4b42eeba196d6a16c20bbbd7a5"}, + {file = "airbyte_protocol_models_dataclasses-0.13.0.tar.gz", hash = "sha256:72e67850d661e2808406aec5839b3158ebb94d3553b798dbdae1b4a278548d2f"}, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.6.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +files = [ + {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, + {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, ] [package.dependencies] -pydantic = ">=1.9.2,<2.0.0" +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "atomicwrites" @@ -60,6 +98,17 @@ files = [ {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, ] +[[package]] +name = "attributes-doc" +version = "0.4.0" +description = "PEP 224 implementation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "attributes-doc-0.4.0.tar.gz", hash = "sha256:b1576c94a714e9fc2c65c47cf10d0c8e1a5f7c4f5ae7f69006be108d95cbfbfb"}, + {file = "attributes_doc-0.4.0-py2.py3-none-any.whl", hash = "sha256:4c3007d9e58f3a6cb4b9c614c4d4ce2d92161581f28e594ddd8241cc3a113bdd"}, +] + [[package]] name = "attrs" version = "24.2.0" @@ -92,13 +141,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -149,6 +198,85 @@ files = [ {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, +] + +[package.dependencies] +pycparser = "*" + [[package]] name = "charset-normalizer" version = "3.3.2" @@ -248,6 +376,20 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -259,6 +401,60 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "cryptography" +version = "42.0.8" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, + {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, + {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, + {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, + {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, + {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, + {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] +nox = ["nox"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + [[package]] name = "deprecated" version = "1.2.14" @@ -278,13 +474,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "dpath" -version = "2.0.8" +version = "2.2.0" description = "Filesystem-like pathing and searching for dictionaries" optional = false python-versions = ">=3.7" files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, + {file = "dpath-2.2.0-py3-none-any.whl", hash = "sha256:b330a375ded0a0d2ed404440f6c6a715deae5313af40bbb01c8a41d891900576"}, + {file = "dpath-2.2.0.tar.gz", hash = "sha256:34f7e630dc55ea3f219e555726f5da4b4b25f2200319c8e6902c394258dd6a3e"}, ] [[package]] @@ -325,6 +521,63 @@ files = [ {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, ] +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.6" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.27.2" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "idna" version = "3.10" @@ -381,6 +634,42 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "joblib" +version = "1.4.2" +description = "Lightweight pipelining with Python functions" +optional = false +python-versions = ">=3.8" +files = [ + {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, + {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +description = "Apply JSON-Patches (RFC 6902)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, + {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, +] + +[package.dependencies] +jsonpointer = ">=1.9" + +[[package]] +name = "jsonpointer" +version = "3.0.0" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, +] + [[package]] name = "jsonref" version = "0.2" @@ -413,6 +702,45 @@ six = ">=1.11.0" format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] +[[package]] +name = "langchain-core" +version = "0.1.42" +description = "Building applications with LLMs through composability" +optional = false +python-versions = "<4.0,>=3.8.1" +files = [ + {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, + {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, +] + +[package.dependencies] +jsonpatch = ">=1.33,<2.0" +langsmith = ">=0.1.0,<0.2.0" +packaging = ">=23.2,<24.0" +pydantic = ">=1,<3" +PyYAML = ">=5.3" +tenacity = ">=8.1.0,<9.0.0" + +[package.extras] +extended-testing = ["jinja2 (>=3,<4)"] + +[[package]] +name = "langsmith" +version = "0.1.129" +description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." +optional = false +python-versions = "<4.0,>=3.8.1" +files = [ + {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, + {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, +] + +[package.dependencies] +httpx = ">=0.23.0,<1" +orjson = ">=3.9.14,<4.0.0" +pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} +requests = ">=2,<3" + [[package]] name = "markupsafe" version = "2.1.5" @@ -482,17 +810,242 @@ files = [ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] +[[package]] +name = "nltk" +version = "3.8.1" +description = "Natural Language Toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"}, + {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"}, +] + +[package.dependencies] +click = "*" +joblib = "*" +regex = ">=2021.8.3" +tqdm = "*" + +[package.extras] +all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] +corenlp = ["requests"] +machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] +plot = ["matplotlib"] +tgrep = ["pyparsing"] +twitter = ["twython"] + +[[package]] +name = "numpy" +version = "2.1.1" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, +] + +[[package]] +name = "orjson" +version = "3.10.7" +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, + {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, + {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, + {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, + {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, + {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, + {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, + {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, + {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, + {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, + {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, + {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, + {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, + {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, + {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, + {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, + {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, + {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, + {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, + {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, +] + [[package]] name = "packaging" -version = "24.1" +version = "23.2" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] +[[package]] +name = "pandas" +version = "2.2.2" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + [[package]] name = "pendulum" version = "2.1.2" @@ -569,64 +1122,154 @@ files = [ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + [[package]] name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" +version = "2.9.2" +description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] -typing-extensions = ">=4.2.0" +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.23.4" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pyjwt" +version = "2.9.0" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, + {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, +] [package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pyrate-limiter" @@ -739,6 +1382,17 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "pytz" +version = "2024.1" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, +] + [[package]] name = "pytzdata" version = "2020.1" @@ -812,6 +1466,109 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +[[package]] +name = "regex" +version = "2024.9.11" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, +] + [[package]] name = "requests" version = "2.32.3" @@ -880,6 +1637,60 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "serpyco-rs" +version = "1.11.0" +description = "" +optional = false +python-versions = ">=3.9" +files = [ + {file = "serpyco_rs-1.11.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4b2bd933539bd8c84315e2fb5ae52ef7a58ace5a6dfe3f8b73f74dc71216779e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:627f957889ff73c4d2269fc7b6bba93212381befe03633e7cb5495de66ba9a33"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0933620abc01434023e0e3e22255b7e4ab9b427b5a9a5ee00834656d792377a"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9ce46683d92e34abb20304817fc5ac6cb141a06fc7468dedb1d8865a8a9682f6"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bda437d86e8859bf91c189c1f4650899822f6d6d7b02b48f5729da904eb7bb7d"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a72bfbd282af17ebe76d122639013e802c09902543fdbbd828fb2159ec9755e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d4808df5384e3e8581e31a90ba7a1fa501c0837b1f174284bb8a4555b6864ea"}, + {file = "serpyco_rs-1.11.0-cp310-none-win_amd64.whl", hash = "sha256:c7b60aef4c16d68efb0d6241f05d0a434d873d98449cbb4366b0d385f0a7172b"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d47ee577cf4d69b53917615cb031ad8708eb2f59fe78194b1968c13130fc2f7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6090d9a1487237cdd4e9362a823eede23249602019b917e7bd57846179286e79"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7192eb3df576386fefd595ea31ae25c62522841ffec7e7aeb37a80b55bdc3213"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b52ef8affb7e71b9b98a7d5216d6a7ad03b04e990acb147cd9211c8b931c5487"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3480e09e473560c60e74aaa789e6b4d079637371aae0a98235440111464bbba7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c92e36b0ab6fe866601c2331f7e99c809a126d21963c03d8a5c29331526deed"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84f497361952d4566bc1f77e9e15a84a2614f593cc671fbf0a0fa80046f9c3d7"}, + {file = "serpyco_rs-1.11.0-cp311-none-win_amd64.whl", hash = "sha256:37fc1cf192bef9784fbf1f4e03cec21750b9e704bef55cc0442f71a715eee920"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3ea93d485f03dc8b0cfb0d477f0ad2e86e78f0461b53010656ab5b4db1b41fb0"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7772410d15694b03f9c5500a2c47d62eed76e191bea4087ad042250346b1a38e"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42118463c1679846cffd2f06f47744c9b9eb33c5d0448afd88ea19e1a81a8ddd"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:79481a455b76cc56021dc55bb6d5bdda1b2b32bcb6a1ee711b597140d112e9b1"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8fd79051f9af9591fc03cf7d3033ff180416301f6a4fd3d1e3d92ebd2d68697"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d29c8f9aeed734a3b51f7349d04ec9063516ffa4e10b632d75e9b1309e4930e4"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15609158b0d9591ffa118302cd9d0039970cb3faf91dce32975f7d276e7411d5"}, + {file = "serpyco_rs-1.11.0-cp312-none-win_amd64.whl", hash = "sha256:00081eae77fbf4c5d88371c5586317ab02ccb293a330b460869a283edf2b7b69"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3028893366a1985adcedb13fa8f6f98c087c185efc427f94c2ccdafa40f45832"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c18bf511316f3abf648a68ee62ef88617bec57d3fcde69466b4361102715ae5"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7dde9ef09cdfaf7c62378186b9e29f54ec76114be4c347be6a06dd559c5681e"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:18500ebc5e75285841e35585a238629a990b709e14f68933233640d15ca17d5f"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47c23132d4e03982703a7630aa09877b41e499722142f76b6153f6619b612f3"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5f8e6ba499f6a0825bee0d8f8764569d367af871b563fc6512c171474e8e5383"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15438a076047c34cff6601a977df54948e8d39d1a86f89d05c48bc60f4c12a61"}, + {file = "serpyco_rs-1.11.0-cp313-none-win_amd64.whl", hash = "sha256:84ee2c109415bd81904fc9abb9aec86a5dd13166808c21142cf23ec639f683bd"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5c97c16c865261577fac4effeccc7ef5e0a1e8e35e7a3ee6c90c77c3a4cd7ff9"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47825e70f86fd6ef7c4a835dea3d6e8eef4fee354ed7b39ced99f31aba74a86e"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24d220220365110edba2f778f41ab3cf396883da0f26e1361a3ada9bd0227f73"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3a46f334af5a9d77acc6e1e58f355ae497900a2798929371f0545e274f6e6166"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d72b748acce4b4e3c7c9724e1eb33d033a1c26b08a698b393e0288060e0901"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2b8b6f205e8cc038d4d30dd0e70eece7bbecc816eb2f3787c330dc2218e232d"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038d748bfff31f150f0c3edab2766b8843edb952cb1bd3bf547886beb0912dae"}, + {file = "serpyco_rs-1.11.0-cp39-none-win_amd64.whl", hash = "sha256:0fee1c89ec2cb013dc232e4ebef88e2844357ce8631063b56639dbfb83762f20"}, + {file = "serpyco_rs-1.11.0.tar.gz", hash = "sha256:70a844615ffb229e6e89c204b3ab7404aacaf2838911814c7d847969b8da2e3a"}, +] + +[package.dependencies] +attributes-doc = "*" +typing-extensions = "*" + [[package]] name = "setuptools" version = "75.1.0" @@ -911,6 +1722,32 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "tenacity" +version = "8.5.0" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, + {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, +] + +[package.extras] +doc = ["reno", "sphinx"] +test = ["pytest", "tornado (>=4.5)", "typeguard"] + [[package]] name = "toml" version = "0.10.2" @@ -922,6 +1759,26 @@ files = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] +[[package]] +name = "tqdm" +version = "4.66.5" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + [[package]] name = "typing-extensions" version = "4.12.2" @@ -933,6 +1790,17 @@ files = [ {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "tzdata" +version = "2024.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, +] + [[package]] name = "url-normalize" version = "1.4.3" @@ -1059,5 +1927,5 @@ files = [ [metadata] lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "9eb73b010b37559b290285599ad30cd4259fff54dc150026294f81cdd056b3b9" +python-versions = "^3.10,<3.12" +content-hash = "2c6d4faf7e1836ea62aa4c9ac879d18b0b9f29f2d5f0efa2e233170ee6b18b73" diff --git a/airbyte-integrations/connectors/source-chargebee/pyproject.toml b/airbyte-integrations/connectors/source-chargebee/pyproject.toml index 36df5c81bf844..3d28ee59a15db 100644 --- a/airbyte-integrations/connectors/source-chargebee/pyproject.toml +++ b/airbyte-integrations/connectors/source-chargebee/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.6.12" +version = "0.6.13" name = "source-chargebee" description = "Source implementation for Chargebee." authors = [ "Airbyte ",] @@ -16,8 +16,8 @@ repository = "https://github.com/airbytehq/airbyte" include = "source_chargebee" [tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "0.80.0" +python = "^3.10,<3.12" +airbyte-cdk = "^5" [tool.poetry.scripts] source-chargebee = "source_chargebee.run:run" diff --git a/airbyte-integrations/connectors/source-chargebee/source_chargebee/components.py b/airbyte-integrations/connectors/source-chargebee/source_chargebee/components.py index 1580bd767182e..e5ab3b9fc4127 100644 --- a/airbyte-integrations/connectors/source-chargebee/source_chargebee/components.py +++ b/airbyte-integrations/connectors/source-chargebee/source_chargebee/components.py @@ -5,7 +5,7 @@ from dataclasses import InitVar, dataclass from typing import Any, Iterable, Mapping, Optional, Union -from airbyte_cdk.sources.declarative.incremental.cursor import Cursor +from airbyte_cdk.sources.declarative.incremental import DeclarativeCursor from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString from airbyte_cdk.sources.declarative.requesters.request_option import RequestOptionType from airbyte_cdk.sources.declarative.transformations.transformation import RecordTransformation @@ -51,8 +51,110 @@ def transform( return record +class PriorStateHandler: + """ + PriorStateHandler is a class responsible for managing the state of a stream by tracking and updating the prior state values. + + Args: + cursor_field (str): The field used to track the cursor position in the stream. + stream_state (Optional[StreamState]): The current state of the stream. + value_type (Optional[Any]): The default value type for the state. + key (str): The key used to store the prior state in the stream state. + + Methods: + Private: + property: _exists: Checks if the prior state key exists in the stream state. + propetry: _prior_state_value: Retrieves the prior state value for a specific stream. + property: _stream_state_value: Retrieves the state value of the stream. + func: _update(): Updates the stream state if the current stream state value is greater than the prior state value. + func: _init(): Sets the initial state for the stream by copying the current state. + + Public: + func: set(): Sets the state of the component. If the component does not exist, it initializes it. Otherwise, it updates the existing component. + """ + + def __init__( + self, + cursor_field: str, + stream_state: Optional[StreamState] = None, + value_type: Optional[Any] = None, + key: Optional[str] = None, + ) -> None: + self._cursor_field = cursor_field + self._stream_state = stream_state if stream_state is not None else {} + self._default_value: Any = value_type() if value_type is not None else str() + self._state_key: str = key if key else "prior_state" + + @property + def _exists(self) -> bool: + """ + Check if the prior state key exists in the stream state. + + Returns: + bool: True if the state key exists in the stream state, False otherwise. + """ + + return self._state_key in self._stream_state + + @property + def _prior_state_value(self) -> Any: + """ + Property that retrieves the prior state value for a specific stream. + + Returns: + int: The prior state value for the stream, or the default value type if not found. + """ + + return self._stream_state.get(self._state_key, {}).get(self._cursor_field, self._default_value) + + @property + def _stream_state_value(self) -> Any: + """ + Property that retrieves the state value of the stream. + + This method accesses the `stream_state` dictionary and returns the value + associated with the `cursor_field` key. If the key is not found, it returns + the default value specified by `self._default_value`. + + Returns: + int: The state value of the stream. + """ + + return self._stream_state.get(self._cursor_field, self._default_value) + + def _update(self) -> None: + """ + Updates the stream state if the current stream state value is greater than the prior state value. + + This method compares the current stream state value with the prior state value. + If the current stream state value is greater, it updates the stream state with the new value + using the state key and cursor field. + """ + + if self._stream_state_value > self._prior_state_value: + self._stream_state[self._state_key] = {self._cursor_field: self._stream_state_value} + + def _init(self) -> None: + """ + Sets the initial state for the stream by copying the current state. + + This method initializes the stream state by creating a copy of the current state + and assigning it to the state key specific to this stream. + """ + + self._stream_state[self._state_key] = self._stream_state.copy() + + def set(self) -> None: + """ + Sets the state of the component. If the component does not exist, it initializes it. + Otherwise, it updates the existing component. + """ + + self._init() if not self._exists else self._update() + + @dataclass -class IncrementalSingleSliceCursor(Cursor): +class IncrementalSingleSliceCursor(DeclarativeCursor): cursor_field: Union[InterpolatedString, str] config: Config @@ -62,6 +164,11 @@ def __post_init__(self, parameters: Mapping[str, Any]): self._state = {} self._cursor = None self.cursor_field = InterpolatedString.create(self.cursor_field, parameters=parameters) + self._prior_state = PriorStateHandler( + cursor_field=self.cursor_field.eval(self.config), + stream_state=self._state, + value_type=int, + ) def get_request_params( self, @@ -109,13 +216,27 @@ def _get_request_option(self, option_type: RequestOptionType, stream_slice: Stre def get_stream_state(self) -> StreamState: return self._state + def select_state(self, stream_slice: Optional[StreamSlice] = None) -> Optional[StreamState]: + return self.get_stream_state() + def set_initial_state(self, stream_state: StreamState): + """ + Sets the initial state of the stream based on the provided stream state. + + This method evaluates the cursor field using the configuration, retrieves the cursor value from the + provided stream state, and updates the internal state and cursor if the cursor value is present. + Additionally, it sets or updates the existing prior state with the cursor value. + + Args: + stream_state (StreamState): The state of the stream to initialize from. + """ + cursor_field = self.cursor_field.eval(self.config) cursor_value = stream_state.get(cursor_field) if cursor_value: self._state[cursor_field] = cursor_value - self._state["prior_state"] = self._state.copy() self._cursor = cursor_value + self._prior_state.set() def observe(self, stream_slice: StreamSlice, record: Record) -> None: """ diff --git a/airbyte-integrations/connectors/source-chargebee/source_chargebee/manifest.yaml b/airbyte-integrations/connectors/source-chargebee/source_chargebee/manifest.yaml index bacee70b19c59..31562c2876087 100644 --- a/airbyte-integrations/connectors/source-chargebee/source_chargebee/manifest.yaml +++ b/airbyte-integrations/connectors/source-chargebee/source_chargebee/manifest.yaml @@ -1,4 +1,4 @@ -version: "0.29.0" +version: 5.8.0 definitions: nested_selector: diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_addon.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_addon.py index 21ec3a51ac9a2..877c571b3bc10 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_addon.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_addon.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_coupon.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_coupon.py index 9d938c97176cd..32f3a7c5cb807 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_coupon.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_coupon.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_customer.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_customer.py index 31a24fe7f38f5..4c7d0441ca377 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_customer.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_customer.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_event.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_event.py index 030bf4a5a5e5b..c472c62f56e50 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_event.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_event.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_hosted_page.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_hosted_page.py index f0acbbb098f0b..10a00ae6cf29a 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_hosted_page.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_hosted_page.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_plan.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_plan.py index 5f67711df72ec..c7d651edf35b3 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_plan.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_plan.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_site_migration_detail.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_site_migration_detail.py index 35f8cad27b2df..40972289716a8 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_site_migration_detail.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_site_migration_detail.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_subscription.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_subscription.py index d3d4b0a79640c..86b5f34d32035 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_subscription.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_subscription.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_subscription_with_scheduled_changes.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_subscription_with_scheduled_changes.py index dcb1b2e33e2b2..0eff336263df9 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_subscription_with_scheduled_changes.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_subscription_with_scheduled_changes.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -19,7 +20,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_virtual_bank_account.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_virtual_bank_account.py index a1c908f0c2056..0f986eb87b6fe 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_virtual_bank_account.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/integration/test_virtual_bank_account.py @@ -5,6 +5,7 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput, read from airbyte_cdk.test.mock_http import HttpMocker @@ -18,7 +19,6 @@ find_template, ) from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateBlob, ConfiguredAirbyteCatalog, FailureType, StreamDescriptor, SyncMode from source_chargebee import SourceChargebee from .config import ConfigBuilder diff --git a/airbyte-integrations/connectors/source-chargebee/unit_tests/test_component.py b/airbyte-integrations/connectors/source-chargebee/unit_tests/test_component.py index 431370e560cbf..54709f56fed03 100644 --- a/airbyte-integrations/connectors/source-chargebee/unit_tests/test_component.py +++ b/airbyte-integrations/connectors/source-chargebee/unit_tests/test_component.py @@ -2,7 +2,7 @@ # Copyright (c) 2023 Airbyte, Inc., all rights reserved. # import pytest -from airbyte_cdk.sources.declarative.types import Record, StreamSlice +from airbyte_cdk.sources.types import Record, StreamSlice from source_chargebee.components import CustomFieldTransformation, IncrementalSingleSliceCursor diff --git a/docs/integrations/sources/chargebee.md b/docs/integrations/sources/chargebee.md index e74628fe2b82b..c1508a6e3a717 100644 --- a/docs/integrations/sources/chargebee.md +++ b/docs/integrations/sources/chargebee.md @@ -104,6 +104,7 @@ The Chargebee connector should not run into [Chargebee API](https://apidocs.char | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------| +| 0.6.13 | 2024-10-01 | [46294](https://github.com/airbytehq/airbyte/pull/46294) | Update CDK version to `^5`, increased the `maxSecondsBetweenMessages` to 6 hours. | | 0.6.12 | 2024-09-28 | [46169](https://github.com/airbytehq/airbyte/pull/46169) | Update dependencies | | 0.6.11 | 2024-09-21 | [45805](https://github.com/airbytehq/airbyte/pull/45805) | Update dependencies | | 0.6.10 | 2024-09-14 | [45254](https://github.com/airbytehq/airbyte/pull/45254) | Update dependencies | From 15589bb1bdc78f1eff263718735fdee8ab0c6385 Mon Sep 17 00:00:00 2001 From: Chris Reid Date: Wed, 2 Oct 2024 11:32:20 -0500 Subject: [PATCH 002/379] fix(source-google-sheets): fail the sync attempt when google responds with an api error (#45108) --- .../source-google-sheets/metadata.yaml | 2 +- .../source-google-sheets/pyproject.toml | 2 +- .../source_google_sheets/source.py | 5 ++++ .../unit_tests/test_stream.py | 23 +++++++++++++++++++ docs/integrations/sources/google-sheets.md | 1 + 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/airbyte-integrations/connectors/source-google-sheets/metadata.yaml b/airbyte-integrations/connectors/source-google-sheets/metadata.yaml index eaeb815c222eb..a5926a4bfcf55 100644 --- a/airbyte-integrations/connectors/source-google-sheets/metadata.yaml +++ b/airbyte-integrations/connectors/source-google-sheets/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: file connectorType: source definitionId: 71607ba1-c0ac-4799-8049-7f4b90dd50f7 - dockerImageTag: 0.7.3 + dockerImageTag: 0.7.4 dockerRepository: airbyte/source-google-sheets documentationUrl: https://docs.airbyte.com/integrations/sources/google-sheets githubIssueLabel: source-google-sheets diff --git a/airbyte-integrations/connectors/source-google-sheets/pyproject.toml b/airbyte-integrations/connectors/source-google-sheets/pyproject.toml index c62d1a5fb954b..8813ea592b358 100644 --- a/airbyte-integrations/connectors/source-google-sheets/pyproject.toml +++ b/airbyte-integrations/connectors/source-google-sheets/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.7.3" +version = "0.7.4" name = "source-google-sheets" description = "Source implementation for Google Sheets." authors = [ "Airbyte ",] diff --git a/airbyte-integrations/connectors/source-google-sheets/source_google_sheets/source.py b/airbyte-integrations/connectors/source-google-sheets/source_google_sheets/source.py index 9a64904f1b707..eae6e37761231 100644 --- a/airbyte-integrations/connectors/source-google-sheets/source_google_sheets/source.py +++ b/airbyte-integrations/connectors/source-google-sheets/source_google_sheets/source.py @@ -259,6 +259,11 @@ def read( ) from e else: logger.info(f"{e.status_code}: {e.reason}. {error_description}") + raise AirbyteTracedException( + message=f"Stopped syncing process. {error_description}", + internal_message=error_description, + failure_type=FailureType.transient_error, + ) from e finally: logger.info(f"Finished syncing spreadsheet {spreadsheet_id}") diff --git a/airbyte-integrations/connectors/source-google-sheets/unit_tests/test_stream.py b/airbyte-integrations/connectors/source-google-sheets/unit_tests/test_stream.py index 13d445871dd1b..b939910d57f7c 100644 --- a/airbyte-integrations/connectors/source-google-sheets/unit_tests/test_stream.py +++ b/airbyte-integrations/connectors/source-google-sheets/unit_tests/test_stream.py @@ -252,6 +252,29 @@ def test_read_403_error(mocker, invalid_config, catalog, caplog): ) +def test_read_500_error(mocker, invalid_config, catalog, caplog): + source = SourceGoogleSheets() + mocker.patch.object(GoogleSheetsClient, "__init__", lambda s, credentials, scopes=SCOPES: None) + mocker.patch.object(GoogleSheetsClient, "get", return_value=mocker.Mock) + mocker.patch.object( + Helpers, + "get_sheets_in_spreadsheet", + side_effect=errors.HttpError(resp=set_resp_http_error(500, "Internal error encountered."), content=b""), + ) + + sheet1 = "soccer_team" + sheet1_columns = frozenset(["arsenal", "chelsea", "manutd", "liverpool"]) + sheet1_schema = {"properties": {c: {"type": "string"} for c in sheet1_columns}} + catalog = ConfiguredAirbyteCatalog(streams=catalog((sheet1, sheet1_schema),)) + with pytest.raises(AirbyteTracedException) as e: + next(source.read(logger=logging.getLogger("airbyte"), config=invalid_config, catalog=catalog)) + expected_message = ( + "There was an issue with the Google Sheets API. This is usually a temporary issue from Google's side." + " Please try again. If this issue persists, contact support" + ) + assert e.value.args[0] == expected_message + + def test_read_expected_data_on_1_sheet(invalid_config, mocker, catalog, caplog): source = SourceGoogleSheets() mocker.patch.object(GoogleSheetsClient, "__init__", lambda s, credentials, scopes=SCOPES: None) diff --git a/docs/integrations/sources/google-sheets.md b/docs/integrations/sources/google-sheets.md index 61dd374eb018f..8f59e80aa0104 100644 --- a/docs/integrations/sources/google-sheets.md +++ b/docs/integrations/sources/google-sheets.md @@ -188,6 +188,7 @@ Airbyte batches requests to the API in order to efficiently pull data and respec | Version | Date | Pull Request | Subject | |---------|------------|----------------------------------------------------------|-----------------------------------------------------------------------------------| +| 0.7.4 | 2024-09-09 | [45108](https://github.com/airbytehq/airbyte/pull/45108) | Google Sheets API errors now cause syncs to fail | | 0.7.3 | 2024-08-12 | [43921](https://github.com/airbytehq/airbyte/pull/43921) | Update dependencies | | 0.7.2 | 2024-08-10 | [43544](https://github.com/airbytehq/airbyte/pull/43544) | Update dependencies | | 0.7.1 | 2024-08-03 | [43290](https://github.com/airbytehq/airbyte/pull/43290) | Update dependencies | From 3ae14bb6c0936efbf811e3aca43eb73cb1743092 Mon Sep 17 00:00:00 2001 From: Dhroov Makwana Date: Thu, 3 Oct 2024 01:47:01 +0530 Subject: [PATCH 003/379] source-care-quality-commission contribution from pabloescoder (#46315) --- .../source-care-quality-commission/README.md | 39 + .../acceptance-test-config.yml | 17 + .../source-care-quality-commission/icon.svg | 6 + .../manifest.yaml | 1004 +++++++++++++++++ .../metadata.yaml | 35 + .../sources/care-quality-commission.md | 30 + 6 files changed, 1131 insertions(+) create mode 100644 airbyte-integrations/connectors/source-care-quality-commission/README.md create mode 100644 airbyte-integrations/connectors/source-care-quality-commission/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-care-quality-commission/icon.svg create mode 100644 airbyte-integrations/connectors/source-care-quality-commission/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-care-quality-commission/metadata.yaml create mode 100644 docs/integrations/sources/care-quality-commission.md diff --git a/airbyte-integrations/connectors/source-care-quality-commission/README.md b/airbyte-integrations/connectors/source-care-quality-commission/README.md new file mode 100644 index 0000000000000..d5e71f5ee0849 --- /dev/null +++ b/airbyte-integrations/connectors/source-care-quality-commission/README.md @@ -0,0 +1,39 @@ +# Care Quality Commission +This directory contains the manifest-only connector for `source-care-quality-commission`. +https://www.cqc.org.uk/ + +## Documentation reference: +Visit https://api-portal.service.cqc.org.uk/api-details#api=syndication for API Documentation. + +## Authentication setup +`source-care-quality-commission` uses API Key authentication.
+See the docs link above for steps to generate an API Key. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md). + +### Build +This will create a dev image (`source-care-quality-commission:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-care-quality-commission build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-care-quality-commission test +``` + diff --git a/airbyte-integrations/connectors/source-care-quality-commission/acceptance-test-config.yml b/airbyte-integrations/connectors/source-care-quality-commission/acceptance-test-config.yml new file mode 100644 index 0000000000000..5d891f1f98963 --- /dev/null +++ b/airbyte-integrations/connectors/source-care-quality-commission/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-care-quality-commission:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-care-quality-commission/icon.svg b/airbyte-integrations/connectors/source-care-quality-commission/icon.svg new file mode 100644 index 0000000000000..f815126884c72 --- /dev/null +++ b/airbyte-integrations/connectors/source-care-quality-commission/icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/airbyte-integrations/connectors/source-care-quality-commission/manifest.yaml b/airbyte-integrations/connectors/source-care-quality-commission/manifest.yaml new file mode 100644 index 0000000000000..5623216a41768 --- /dev/null +++ b/airbyte-integrations/connectors/source-care-quality-commission/manifest.yaml @@ -0,0 +1,1004 @@ +version: 5.8.1 + +type: DeclarativeSource + +description: |- + A manifest-only source for Care Quality Commission + https://www.cqc.org.uk/ + +check: + type: CheckStream + stream_names: + - inspection_areas + +definitions: + streams: + inspection_areas: + type: DeclarativeStream + name: inspection_areas + primary_key: + - inspectionAreaId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /inspection-areas + http_method: GET + request_headers: + User-Agent: PostmanRuntime/7.42.0 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - inspectionAreas + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/inspection_areas" + locations: + type: DeclarativeStream + name: locations + primary_key: + - locationId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /locations + http_method: GET + request_headers: + User-Agent: PostmanRuntime/7.42.0 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - locations + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 1000 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/locations" + providers: + type: DeclarativeStream + name: providers + primary_key: + - providerId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /providers + http_method: GET + request_headers: + User-Agent: PostmanRuntime/7.42.0 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - providers + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 1000 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/providers" + provider_locations: + type: DeclarativeStream + name: provider_locations + primary_key: + - organisationId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /providers/{{ stream_partition['providerId'] }}/locations + http_method: GET + request_headers: + User-Agent: PostmanRuntime/7.42.0 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - locations + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: providerId + partition_field: providerId + stream: + $ref: "#/definitions/streams/providers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/provider_locations" + locations_detailed: + type: DeclarativeStream + name: locations_detailed + primary_key: + - locationId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /locations/{{ stream_partition['locationId'] }} + http_method: GET + request_headers: + User-Agent: PostmanRuntime/7.42.0 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: locationId + partition_field: locationId + stream: + $ref: "#/definitions/streams/locations" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/locations_detailed" + providers_detailed: + type: DeclarativeStream + name: providers_detailed + primary_key: + - providerId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /providers/{{ stream_partition['providerId'] }} + http_method: GET + request_headers: + User-Agent: PostmanRuntime/7.42.0 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: providerId + partition_field: providerId + stream: + $ref: "#/definitions/streams/providers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/providers_detailed" + base_requester: + type: HttpRequester + url_base: https://api.service.cqc.org.uk/public/v1 + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"api_key\"] }}" + inject_into: + type: RequestOption + field_name: Ocp-Apim-Subscription-Key + inject_into: header + +streams: + - $ref: "#/definitions/streams/inspection_areas" + - $ref: "#/definitions/streams/locations" + - $ref: "#/definitions/streams/providers" + - $ref: "#/definitions/streams/provider_locations" + - $ref: "#/definitions/streams/locations_detailed" + - $ref: "#/definitions/streams/providers_detailed" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + description: >- + Your CQC Primary Key. See + https://www.cqc.org.uk/about-us/transparency/using-cqc-data#api for + steps to generate one. + order: 0 + title: API Key + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + inspection_areas: true + locations: true + providers: true + provider_locations: true + locations_detailed: true + providers_detailed: true + testedStreams: + inspection_areas: + streamHash: 3968ade03213106695603929de84e2a7e4e88d84 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + locations: + streamHash: 63c124c07b9d7d28dd2dcba586eedc65f6aba3dd + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + providers: + streamHash: 9541bf5fd90e169dac38ea1180cabf344f731772 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + provider_locations: + streamHash: 0e7e18777a7ead748fedfa417354b9c2f1ca62fb + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + locations_detailed: + streamHash: fa69d659d9eb932d0890315623608953033e47f8 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + providers_detailed: + streamHash: a8e137488c1ae05254758d3ac2d3c165b30152a1 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://api-portal.service.cqc.org.uk/api-details#api=syndication + +schemas: + inspection_areas: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + endDate: + type: + - string + - "null" + inspectionAreaId: + type: string + inspectionAreaName: + type: + - string + - "null" + inspectionAreaType: + type: + - string + - "null" + inspectionCategories: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + code: + type: + - string + - "null" + coreFlag: + type: + - string + - "null" + endDate: + type: + - string + - "null" + inspectionCategoryName: + type: + - string + - "null" + orgInspectionAreaRetirementDate: + type: + - string + - "null" + status: + type: + - string + - "null" + orgInspectionAreaRetirementDate: + type: + - string + - "null" + status: + type: + - string + - "null" + supersededBy: + type: + - array + - "null" + items: + type: + - string + - "null" + required: + - inspectionAreaId + locations: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + locationId: + type: string + locationName: + type: + - string + - "null" + postalCode: + type: + - string + - "null" + required: + - locationId + providers: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + providerId: + type: string + providerName: + type: + - string + - "null" + required: + - providerId + provider_locations: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + organisationId: + type: string + required: + - organisationId + locations_detailed: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + brandId: + type: + - string + - "null" + brandName: + type: + - string + - "null" + careHome: + type: + - string + - "null" + constituency: + type: + - string + - "null" + currentRatings: + type: + - object + - "null" + properties: + overall: + type: + - object + - "null" + properties: + keyQuestionRatings: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + rating: + type: + - string + - "null" + reportDate: + type: + - string + - "null" + reportLinkId: + type: + - string + - "null" + rating: + type: + - string + - "null" + reportDate: + type: + - string + - "null" + reportLinkId: + type: + - string + - "null" + reportDate: + type: + - string + - "null" + deregistrationDate: + type: + - string + - "null" + dormancy: + type: + - string + - "null" + gacServiceTypes: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + name: + type: + - string + - "null" + historicRatings: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + organisationId: + type: + - string + - "null" + overall: + type: + - object + - "null" + properties: + keyQuestionRatings: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + rating: + type: + - string + - "null" + rating: + type: + - string + - "null" + reportDate: + type: + - string + - "null" + reportLinkId: + type: + - string + - "null" + inspectionAreas: + type: + - array + - "null" + inspectionCategories: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + code: + type: + - string + - "null" + name: + type: + - string + - "null" + primary: + type: + - string + - "null" + inspectionDirectorate: + type: + - string + - "null" + lastInspection: + type: + - object + - "null" + properties: + date: + type: + - string + - "null" + lastReport: + type: + - object + - "null" + properties: + publicationDate: + type: + - string + - "null" + localAuthority: + type: + - string + - "null" + locationId: + type: string + locationTypes: + type: + - array + - "null" + mainPhoneNumber: + type: + - string + - "null" + name: + type: + - string + - "null" + numberOfBeds: + type: + - number + - "null" + odsCode: + type: + - string + - "null" + onspdCcgCode: + type: + - string + - "null" + onspdCcgName: + type: + - string + - "null" + onspdIcbCode: + type: + - string + - "null" + onspdIcbName: + type: + - string + - "null" + onspdLatitude: + type: + - number + - "null" + onspdLongitude: + type: + - number + - "null" + organisationType: + type: + - string + - "null" + postalAddressCounty: + type: + - string + - "null" + postalAddressLine1: + type: + - string + - "null" + postalAddressLine2: + type: + - string + - "null" + postalAddressTownCity: + type: + - string + - "null" + postalCode: + type: + - string + - "null" + providerId: + type: + - string + - "null" + region: + type: + - string + - "null" + registrationDate: + type: + - string + - "null" + registrationStatus: + type: + - string + - "null" + regulatedActivities: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + code: + type: + - string + - "null" + contacts: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + personFamilyName: + type: + - string + - "null" + personGivenName: + type: + - string + - "null" + personRoles: + type: + - array + - "null" + items: + type: + - string + - "null" + personTitle: + type: + - string + - "null" + name: + type: + - string + - "null" + relationships: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + reason: + type: + - string + - "null" + relatedLocationId: + type: + - string + - "null" + relatedLocationName: + type: + - string + - "null" + reports: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + firstVisitDate: + type: + - string + - "null" + linkId: + type: + - string + - "null" + reportDate: + type: + - string + - "null" + reportType: + type: + - string + - "null" + reportUri: + type: + - string + - "null" + specialisms: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + uprn: + type: + - string + - "null" + website: + type: + - string + - "null" + required: + - locationId + providers_detailed: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + companiesHouseNumber: + type: + - string + - "null" + constituency: + type: + - string + - "null" + contacts: + type: + - array + - "null" + deregistrationDate: + type: + - string + - "null" + inspectionAreas: + type: + - array + - "null" + inspectionCategories: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + code: + type: + - string + - "null" + name: + type: + - string + - "null" + primary: + type: + - string + - "null" + inspectionDirectorate: + type: + - string + - "null" + lastInspection: + type: + - object + - "null" + properties: + date: + type: + - string + - "null" + localAuthority: + type: + - string + - "null" + locationIds: + type: + - array + - "null" + items: + type: + - string + - "null" + mainPhoneNumber: + type: + - string + - "null" + name: + type: + - string + - "null" + odsCode: + type: + - string + - "null" + onspdIcbCode: + type: + - string + - "null" + onspdIcbName: + type: + - string + - "null" + onspdLatitude: + type: + - number + - "null" + onspdLongitude: + type: + - number + - "null" + organisationType: + type: + - string + - "null" + ownershipType: + type: + - string + - "null" + postalAddressLine1: + type: + - string + - "null" + postalAddressLine2: + type: + - string + - "null" + postalAddressTownCity: + type: + - string + - "null" + postalCode: + type: + - string + - "null" + providerId: + type: string + region: + type: + - string + - "null" + registrationDate: + type: + - string + - "null" + registrationStatus: + type: + - string + - "null" + regulatedActivities: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + code: + type: + - string + - "null" + name: + type: + - string + - "null" + nominatedIndividual: + type: + - object + - "null" + properties: + personFamilyName: + type: + - string + - "null" + personGivenName: + type: + - string + - "null" + personTitle: + type: + - string + - "null" + relationships: + type: + - array + - "null" + uprn: + type: + - string + - "null" + website: + type: + - string + - "null" + required: + - providerId diff --git a/airbyte-integrations/connectors/source-care-quality-commission/metadata.yaml b/airbyte-integrations/connectors/source-care-quality-commission/metadata.yaml new file mode 100644 index 0000000000000..9da1e57f984c5 --- /dev/null +++ b/airbyte-integrations/connectors/source-care-quality-commission/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.service.cqc.org.uk" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-care-quality-commission + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.1@sha256:4bc838b4dcc097a9f2c263db1aaa6ee71c1f434e952f5d6397208512029243b6 + connectorSubtype: api + connectorType: source + definitionId: 2366b7bf-b83e-471c-b4a0-1405887fdf6e + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-care-quality-commission + githubIssueLabel: source-care-quality-commission + icon: icon.svg + license: MIT + name: Care Quality Commission + releaseDate: 2024-10-02 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/care-quality-commission + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/care-quality-commission.md b/docs/integrations/sources/care-quality-commission.md new file mode 100644 index 0000000000000..c601e0d56ee67 --- /dev/null +++ b/docs/integrations/sources/care-quality-commission.md @@ -0,0 +1,30 @@ +# Care Quality Commission +A manifest-only source for Care Quality Commission +https://www.cqc.org.uk/ + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. Your CQC Primary Key. See https://www.cqc.org.uk/about-us/transparency/using-cqc-data#api for steps to generate one. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| inspection_areas | inspectionAreaId | No pagination | ✅ | ❌ | +| locations | locationId | DefaultPaginator | ✅ | ❌ | +| providers | providerId | DefaultPaginator | ✅ | ❌ | +| provider_locations | organisationId | No pagination | ✅ | ❌ | +| locations_detailed | locationId | No pagination | ✅ | ❌ | +| providers_detailed | providerId | No pagination | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|---------|------------|----------------------------------------------------------|-------------------------------------------------------------------------------------------| +| 0.0.1 | 2024-10-02 | [46315](https://github.com/airbytehq/airbyte/pull/46315) | Initial release by [@pabloescoder](https://github.com/pabloescoder) via Connector Builder | + +
From a71250d26544f7ecc092f17bdd7d1aa692a627d8 Mon Sep 17 00:00:00 2001 From: Yue Li <61070669+theyueli@users.noreply.github.com> Date: Wed, 2 Oct 2024 14:06:59 -0700 Subject: [PATCH 004/379] [source-postgres] make postgres source compile and use the latest CDK (#46299) --- .../connectors/source-postgres/build.gradle | 2 +- .../connectors/source-postgres/metadata.yaml | 2 +- .../source/postgres/PostgresSource.java | 25 ++- .../postgres/cdc/PostgresCdcProperties.java | 10 +- .../CloudDeploymentPostgresSourceTest.java | 6 +- docs/integrations/sources/postgres.md | 145 +++++++++--------- 6 files changed, 101 insertions(+), 89 deletions(-) diff --git a/airbyte-integrations/connectors/source-postgres/build.gradle b/airbyte-integrations/connectors/source-postgres/build.gradle index f8d41bf07616a..7f58327ba57d4 100644 --- a/airbyte-integrations/connectors/source-postgres/build.gradle +++ b/airbyte-integrations/connectors/source-postgres/build.gradle @@ -12,7 +12,7 @@ java { } airbyteJavaConnector { - cdkVersionRequired = '0.45.1' + cdkVersionRequired = '0.47.1' features = ['db-sources', 'datastore-postgres'] useLocalCdk = false } diff --git a/airbyte-integrations/connectors/source-postgres/metadata.yaml b/airbyte-integrations/connectors/source-postgres/metadata.yaml index 39e5aee8fb154..ac94fc1a9b747 100644 --- a/airbyte-integrations/connectors/source-postgres/metadata.yaml +++ b/airbyte-integrations/connectors/source-postgres/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: decd338e-5647-4c0b-adf4-da0e75f5a750 - dockerImageTag: 3.6.19 + dockerImageTag: 3.6.20 dockerRepository: airbyte/source-postgres documentationUrl: https://docs.airbyte.com/integrations/sources/postgres githubIssueLabel: source-postgres diff --git a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java index 097d545acb1ec..9fda6b6d01cec 100644 --- a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java +++ b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSource.java @@ -7,15 +7,15 @@ import static io.airbyte.cdk.db.jdbc.JdbcConstants.JDBC_COLUMN_COLUMN_NAME; import static io.airbyte.cdk.db.jdbc.JdbcConstants.JDBC_INDEX_NAME; import static io.airbyte.cdk.db.jdbc.JdbcConstants.JDBC_INDEX_NON_UNIQUE; +import static io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.CLIENT_KEY_STORE_PASS; +import static io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.CLIENT_KEY_STORE_URL; +import static io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.PARAM_CA_CERTIFICATE; +import static io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.parseSSLConfig; import static io.airbyte.cdk.db.jdbc.JdbcUtils.AMPERSAND; import static io.airbyte.cdk.db.jdbc.JdbcUtils.EQUALS; import static io.airbyte.cdk.db.jdbc.JdbcUtils.PLATFORM_DATA_INCREASE_FACTOR; import static io.airbyte.cdk.integrations.debezium.AirbyteDebeziumHandler.isAnyStreamIncrementalSyncMode; import static io.airbyte.cdk.integrations.source.jdbc.JdbcDataSourceUtils.DEFAULT_JDBC_PARAMETERS_DELIMITER; -import static io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.CLIENT_KEY_STORE_PASS; -import static io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.CLIENT_KEY_STORE_URL; -import static io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.PARAM_CA_CERTIFICATE; -import static io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.parseSSLConfig; import static io.airbyte.cdk.integrations.source.relationaldb.RelationalDbQueryUtils.getFullyQualifiedTableNameWithQuoting; import static io.airbyte.cdk.integrations.util.PostgresSslConnectionUtils.PARAM_SSL_MODE; import static io.airbyte.integrations.source.postgres.PostgresQueryUtils.NULL_CURSOR_VALUE_NO_SCHEMA_QUERY; @@ -53,6 +53,8 @@ import io.airbyte.cdk.db.factory.DataSourceFactory; import io.airbyte.cdk.db.factory.DatabaseDriver; import io.airbyte.cdk.db.jdbc.JdbcDatabase; +import io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils; +import io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.SslMode; import io.airbyte.cdk.db.jdbc.JdbcUtils; import io.airbyte.cdk.db.jdbc.StreamingJdbcDatabase; import io.airbyte.cdk.db.jdbc.streaming.AdaptiveStreamingQueryConfig; @@ -63,8 +65,6 @@ import io.airbyte.cdk.integrations.base.ssh.SshWrappedSource; import io.airbyte.cdk.integrations.source.jdbc.AbstractJdbcSource; import io.airbyte.cdk.integrations.source.jdbc.JdbcDataSourceUtils; -import io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils; -import io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.SslMode; import io.airbyte.cdk.integrations.source.jdbc.dto.JdbcPrivilegeDto; import io.airbyte.cdk.integrations.source.relationaldb.InitialLoadHandler; import io.airbyte.cdk.integrations.source.relationaldb.TableInfo; @@ -73,6 +73,8 @@ import io.airbyte.cdk.integrations.source.relationaldb.state.StateManager; import io.airbyte.cdk.integrations.source.relationaldb.streamstatus.StreamStatusTraceEmitterIterator; import io.airbyte.commons.exceptions.ConfigErrorException; +import io.airbyte.commons.features.EnvVariableFeatureFlags; +import io.airbyte.commons.features.FeatureFlags; import io.airbyte.commons.functional.CheckedConsumer; import io.airbyte.commons.functional.CheckedFunction; import io.airbyte.commons.json.Jsons; @@ -166,16 +168,27 @@ public class PostgresSource extends AbstractJdbcSource implements private Set publicizedTablesInCdc; private static final Set INVALID_CDC_SSL_MODES = ImmutableSet.of("allow", "prefer"); private int stateEmissionFrequency; + private final FeatureFlags featureFlags; public static Source sshWrappedSource(PostgresSource source) { return new SshWrappedSource(source, JdbcUtils.HOST_LIST_KEY, JdbcUtils.PORT_LIST_KEY, "security"); } PostgresSource() { + this(new EnvVariableFeatureFlags()); + } + + PostgresSource(FeatureFlags featureFlags) { super(DRIVER_CLASS, AdaptiveStreamingQueryConfig::new, new PostgresSourceOperations()); + this.featureFlags = featureFlags; this.stateEmissionFrequency = INTERMEDIATE_STATE_EMISSION_FREQUENCY; } + @Override + public FeatureFlags getFeatureFlags() { + return featureFlags; + } + @Override public ConnectorSpecification spec() throws Exception { if (cloudDeploymentMode()) { diff --git a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/cdc/PostgresCdcProperties.java b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/cdc/PostgresCdcProperties.java index 745f92cfceaa8..895a1e122f366 100644 --- a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/cdc/PostgresCdcProperties.java +++ b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/cdc/PostgresCdcProperties.java @@ -4,15 +4,15 @@ package io.airbyte.integrations.source.postgres.cdc; -import static io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.CLIENT_KEY_STORE_PASS; -import static io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.CLIENT_KEY_STORE_URL; -import static io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.SSL_MODE; -import static io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.TRUST_KEY_STORE_PASS; +import static io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.CLIENT_KEY_STORE_PASS; +import static io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.CLIENT_KEY_STORE_URL; +import static io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.SSL_MODE; +import static io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.TRUST_KEY_STORE_PASS; import com.fasterxml.jackson.databind.JsonNode; import io.airbyte.cdk.db.jdbc.JdbcDatabase; +import io.airbyte.cdk.db.jdbc.JdbcSSLConnectionUtils.SslMode; import io.airbyte.cdk.db.jdbc.JdbcUtils; -import io.airbyte.cdk.integrations.source.jdbc.JdbcSSLConnectionUtils.SslMode; import io.airbyte.integrations.source.postgres.PostgresSource; import io.airbyte.integrations.source.postgres.PostgresUtils; import java.net.URI; diff --git a/airbyte-integrations/connectors/source-postgres/src/test/java/io/airbyte/integrations/source/postgres/CloudDeploymentPostgresSourceTest.java b/airbyte-integrations/connectors/source-postgres/src/test/java/io/airbyte/integrations/source/postgres/CloudDeploymentPostgresSourceTest.java index 8a0b4f7059c51..7f13673805882 100644 --- a/airbyte-integrations/connectors/source-postgres/src/test/java/io/airbyte/integrations/source/postgres/CloudDeploymentPostgresSourceTest.java +++ b/airbyte-integrations/connectors/source-postgres/src/test/java/io/airbyte/integrations/source/postgres/CloudDeploymentPostgresSourceTest.java @@ -63,10 +63,8 @@ static void tearDownContainers() { private static final String SSL_MODE_REQUIRE = "require"; private Source source() { - PostgresSource source = new PostgresSource(); - source.setFeatureFlags( - FeatureFlagsWrapper.overridingDeploymentMode( - new EnvVariableFeatureFlags(), AdaptiveSourceRunner.CLOUD_MODE)); + PostgresSource source = new PostgresSource(FeatureFlagsWrapper.overridingDeploymentMode( + new EnvVariableFeatureFlags(), AdaptiveSourceRunner.CLOUD_MODE)); return PostgresSource.sshWrappedSource(source); } diff --git a/docs/integrations/sources/postgres.md b/docs/integrations/sources/postgres.md index 7b4cf74d5fcfe..ac005ed541b1a 100644 --- a/docs/integrations/sources/postgres.md +++ b/docs/integrations/sources/postgres.md @@ -329,78 +329,79 @@ According to Postgres [documentation](https://www.postgresql.org/docs/14/datatyp | Version | Date | Pull Request | Subject | |---------|------------|----------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 3.6.19 | 2024-09-17 | [45639](https://github.com/airbytehq/airbyte/pull/45639) | Adopt latest CDK to use the latest apache sshd mina to handle tcpkeepalive requests. | -| 3.6.18 | 2024-08-28 | [44878](https://github.com/airbytehq/airbyte/pull/44878) | Enable tcpKeepAlive for jdbc connection. | -| 3.6.17 | 2024-08-27 | [44841](https://github.com/airbytehq/airbyte/pull/44841) | Adopt latest CDK. | -| 3.6.16 | 2024-08-15 | [44119](https://github.com/airbytehq/airbyte/pull/44119) | Fix incorrect final state on initial read in CDC mode. | -| 3.6.15 | 2024-08-12 | [43945](https://github.com/airbytehq/airbyte/pull/43945) | Add missing replication slot config error. | -| 3.6.14 | 2024-08-08 | [43418](https://github.com/airbytehq/airbyte/pull/43418) | Adopt latest CDK. | -| 3.6.13 | 2024-07-30 | [42869](https://github.com/airbytehq/airbyte/pull/42869) | Adopt latest CDK. | -| 3.6.12 | 2024-07-30 | [42550](https://github.com/airbytehq/airbyte/pull/42550) | Correctly report stream states. | -| 3.6.11 | 2024-07-29 | [42852](https://github.com/airbytehq/airbyte/pull/42852) | Bump CDK version to latest to use new bug fixes on error translation. | -| 3.6.10 | 2024-07-23 | [42417](https://github.com/airbytehq/airbyte/pull/42417) | Handle null error message in ConnectorExceptionHandler. | -| 3.6.9 | 2024-07-23 | [42421](https://github.com/airbytehq/airbyte/pull/42421) | Remove final transient error emitter iterators. | -| 3.6.8 | 2024-07-22 | [41622](https://github.com/airbytehq/airbyte/pull/41622) | Bump CDK version to latest. | -| 3.6.7 | 2024-07-22 | [42411](https://github.com/airbytehq/airbyte/pull/42411) | Hide the "initial load timeout in hours" field by default in UI | -| 3.6.6 | 2024-07-22 | [41622](https://github.com/airbytehq/airbyte/pull/41622) | Fix bug in CDC syncing | -| 3.6.5 | 2024-07-22 | [42024](https://github.com/airbytehq/airbyte/pull/42024) | Fix a bug on resuming from a failed attempt. | -| 3.6.4 | 2024-07-17 | [42087](https://github.com/airbytehq/airbyte/pull/42087) | Translate more errors for Postgres source. | -| 3.6.3 | 2024-07-19 | [42122](https://github.com/airbytehq/airbyte/pull/42122) | Improve wass error message + logging. | -| 3.6.2 | 2024-07-18 | [42108](https://github.com/airbytehq/airbyte/pull/42108) | Disable incremental sync for view streams in xmin replication mode | -| 3.6.1 | 2024-07-05 | [40716](https://github.com/airbytehq/airbyte/pull/40716) | Fix typo in connector specification | -| 3.6.0 | 2024-07-17 | [40208](https://github.com/airbytehq/airbyte/pull/40208) | Start using the new error Postgres source error handler that comes with a new error translation layer. | -| 3.5.2 | 2024-07-17 | [42068](https://github.com/airbytehq/airbyte/pull/42068) | Add analytics for WASS case occurrence. | -| 3.5.1 | 2024-07-17 | [42055](https://github.com/airbytehq/airbyte/pull/42055) | Add debezium heartbeat timeout back to shutdown debezium. | -| 3.5.0 | 2024-07-17 | [41651](https://github.com/airbytehq/airbyte/pull/41651) | Implement WASS algo - large initial snapshots shouldn't block CDC. | -| 3.4.26 | 2024-07-15 | [41654](https://github.com/airbytehq/airbyte/pull/41654) | Allow null value for array typed columns in CDC. | -| 3.4.25 | 2024-07-12 | [41651](https://github.com/airbytehq/airbyte/pull/41651) | Throw transient error if tables of interest and undergoing full vacuum. | -| 3.4.24 | 2024-07-05 | [41067](https://github.com/airbytehq/airbyte/pull/41067) | Fix Postgres sending duplicated streams | -| 3.4.23 | 2024-07-01 | [40757](https://github.com/airbytehq/airbyte/pull/40757) | Rollback 3.4.22. | -| 3.4.21 | 2024-07-01 | [40516](https://github.com/airbytehq/airbyte/pull/40516) | Remove dbz hearbeat. | -| 3.4.20 | 2024-06-23 | [40559](https://github.com/airbytehq/airbyte/pull/40559) | Remove strict check for stream states of unknown types | -| 3.4.19 | 2024-06-23 | [40223](https://github.com/airbytehq/airbyte/pull/40223) | Revert the changes introduced in version 3.4.15. | -| 3.4.18 | 2024-06-14 | [39349](https://github.com/airbytehq/airbyte/pull/39349) | Full refresh stream sending internal count metadata. | -| 3.4.17 | 2024-06-13 | [39460](https://github.com/airbytehq/airbyte/pull/39460) | Bump postgres JDBC driver version | -| 3.4.16 | 2024-05-29 | [39474](https://github.com/airbytehq/airbyte/pull/39474) | Adopt latest CDK. | -| 3.4.15 | 2024-05-29 | [38773](https://github.com/airbytehq/airbyte/pull/38773) | Connect with adaptiveFetch=true. | -| 3.4.14 | 2024-06-08 | [39353](https://github.com/airbytehq/airbyte/pull/39353) | Upgrade Debezium to 2.6.2 | -| 3.4.13 | 2024-06-04 | [38875](https://github.com/airbytehq/airbyte/pull/38875) | read() throws config exception upon detecting transaction ID wraparound. | -| 3.4.12 | 2024-06-04 | [38836](https://github.com/airbytehq/airbyte/pull/38836) | check() throws config error upon detecting transaction ID wraparound. | -| 3.4.11 | 2024-06-04 | [38848](https://github.com/airbytehq/airbyte/pull/38848) | Improve UI message and doc on xmin | -| 3.4.10 | 2024-05-29 | [38584](https://github.com/airbytehq/airbyte/pull/38584) | Set is_resumable flag in discover. | -| 3.4.9 | 2024-05-29 | [38775](https://github.com/airbytehq/airbyte/pull/38775) | Publish CDK | -| 3.4.9 | 2024-05-28 | [38716](https://github.com/airbytehq/airbyte/pull/38716) | Publish CDK | -| 3.4.8 | 2024-05-28 | [38716](https://github.com/airbytehq/airbyte/pull/38716) | Stream status for postgres | -| 3.4.7 | 2024-05-20 | [38365](https://github.com/airbytehq/airbyte/pull/38365) | Rollback a previously version (3.4.6) | -| 3.4.5 | 2024-05-16 | [38303](https://github.com/airbytehq/airbyte/pull/38303) | Streams not in the CDC publication still have a cursor and PK. | -| 3.4.4 | 2024-05-15 | [38208](https://github.com/airbytehq/airbyte/pull/38208) | disable counts in full refresh stream in state message. | -| 3.4.3 | 2024-05-13 | [38104](https://github.com/airbytehq/airbyte/pull/38104) | Handle transient error messages. | -| 3.4.2 | 2024-05-10 | [38171](https://github.com/airbytehq/airbyte/pull/38171) | Bug fix on final state setup. | -| 3.4.1 | 2024-05-10 | [38130](https://github.com/airbytehq/airbyte/pull/38130) | Bug fix on old PG where ctid column not found when stream is a view. | -| 3.4.0 | 2024-04-29 | [37112](https://github.com/airbytehq/airbyte/pull/37112) | resumeable full refresh. | -| 3.3.33 | 2024-05-07 | [38030](https://github.com/airbytehq/airbyte/pull/38030) | Mark PG hot standby error as transient. | -| 3.3.32 | 2024-04-30 | [37758](https://github.com/airbytehq/airbyte/pull/37758) | Correct previous release to disable debezium retries | -| 3.3.31 | 2024-04-30 | [37754](https://github.com/airbytehq/airbyte/pull/37754) | Add CDC logs | -| 3.3.30 | 2024-04-30 | [37726](https://github.com/airbytehq/airbyte/pull/37726) | Remove debezium retries | -| 3.3.29 | 2024-04-23 | [37509](https://github.com/airbytehq/airbyte/pull/37509) | remove excessive logs | -| 3.3.28 | 2024-04-23 | [37509](https://github.com/airbytehq/airbyte/pull/37509) | Better error messages on switching between sync modes. | -| 3.3.27 | 2024-04-22 | [37445](https://github.com/airbytehq/airbyte/pull/37445) | Remove legacy bad values handling code. | -| 3.3.26 | 2024-04-10 | [36982](https://github.com/airbytehq/airbyte/pull/36982) | Populate airyte_meta.changes for xmin path | -| 3.3.25 | 2024-04-10 | [36981](https://github.com/airbytehq/airbyte/pull/36981) | Track latest CDK | -| 3.3.24 | 2024-04-10 | [36865](https://github.com/airbytehq/airbyte/pull/36865) | Track latest CDK | -| 3.3.23 | 2024-04-02 | [36759](https://github.com/airbytehq/airbyte/pull/36759) | Track latest CDK | -| 3.3.22 | 2024-04-01 | [36739](https://github.com/airbytehq/airbyte/pull/36739) | Fix useLocalCdk flag. | -| 3.3.21 | 2024-03-25 | [36584](https://github.com/airbytehq/airbyte/pull/36584) | Adopt Kotlin CDK. | -| 3.3.20 | 2024-03-25 | [36432](https://github.com/airbytehq/airbyte/pull/36432) | Failure to serialize values from Postgres DB shouldn't fail sync. | -| 3.3.19 | 2024-03-12 | [36333](https://github.com/airbytehq/airbyte/pull/36333) | Use newest CDK - deprecate dbz iterator | -| 3.3.18 | 2024-03-12 | [35599](https://github.com/airbytehq/airbyte/pull/35599) | Use newest CDK | -| 3.3.17 | 2024-03-12 | [35939](https://github.com/airbytehq/airbyte/pull/35939) | Use lsn_commit value instead of lsn_proc for CDC checkpointing logic. | -| 3.3.16 | 2024-03-11 | [35904](https://github.com/airbytehq/airbyte/pull/35904) | Adopt Java CDK 0.23.1- debezium retries. | -| 3.3.15 | 2024-02-29 | [34724](https://github.com/airbytehq/airbyte/pull/34724) | Add record count in state message. | -| 3.3.14 | 2024-03-06 | [35842](https://github.com/airbytehq/airbyte/pull/35842) | Add logging to understand cases with a large number of records with the same LSN. | -| 3.3.13 | 2024-02-27 | [35675](https://github.com/airbytehq/airbyte/pull/35675) | Fix invalid cdc error message. | -| 3.3.12 | 2024-02-22 | [35569](https://github.com/airbytehq/airbyte/pull/35569) | Fix logging bug. | -| 3.3.11 | 2024-02-20 | [35304](https://github.com/airbytehq/airbyte/pull/35304) | Add config to throw an error on invalid CDC position and enable it by default. | +| 3.6.20 | 2024-10-01 | [46299](https://github.com/airbytehq/airbyte/pull/46299) | Make postgres source compile and use the latest CDK | +| 3.6.19 | 2024-09-17 | [45639](https://github.com/airbytehq/airbyte/pull/45639) | Adopt latest CDK to use the latest apache sshd mina to handle tcpkeepalive requests. | +| 3.6.18 | 2024-08-28 | [44878](https://github.com/airbytehq/airbyte/pull/44878) | Enable tcpKeepAlive for jdbc connection. | +| 3.6.17 | 2024-08-27 | [44841](https://github.com/airbytehq/airbyte/pull/44841) | Adopt latest CDK. | +| 3.6.16 | 2024-08-15 | [44119](https://github.com/airbytehq/airbyte/pull/44119) | Fix incorrect final state on initial read in CDC mode. | +| 3.6.15 | 2024-08-12 | [43945](https://github.com/airbytehq/airbyte/pull/43945) | Add missing replication slot config error. | +| 3.6.14 | 2024-08-08 | [43418](https://github.com/airbytehq/airbyte/pull/43418) | Adopt latest CDK. | +| 3.6.13 | 2024-07-30 | [42869](https://github.com/airbytehq/airbyte/pull/42869) | Adopt latest CDK. | +| 3.6.12 | 2024-07-30 | [42550](https://github.com/airbytehq/airbyte/pull/42550) | Correctly report stream states. | +| 3.6.11 | 2024-07-29 | [42852](https://github.com/airbytehq/airbyte/pull/42852) | Bump CDK version to latest to use new bug fixes on error translation. | +| 3.6.10 | 2024-07-23 | [42417](https://github.com/airbytehq/airbyte/pull/42417) | Handle null error message in ConnectorExceptionHandler. | +| 3.6.9 | 2024-07-23 | [42421](https://github.com/airbytehq/airbyte/pull/42421) | Remove final transient error emitter iterators. | +| 3.6.8 | 2024-07-22 | [41622](https://github.com/airbytehq/airbyte/pull/41622) | Bump CDK version to latest. | +| 3.6.7 | 2024-07-22 | [42411](https://github.com/airbytehq/airbyte/pull/42411) | Hide the "initial load timeout in hours" field by default in UI | +| 3.6.6 | 2024-07-22 | [41622](https://github.com/airbytehq/airbyte/pull/41622) | Fix bug in CDC syncing | +| 3.6.5 | 2024-07-22 | [42024](https://github.com/airbytehq/airbyte/pull/42024) | Fix a bug on resuming from a failed attempt. | +| 3.6.4 | 2024-07-17 | [42087](https://github.com/airbytehq/airbyte/pull/42087) | Translate more errors for Postgres source. | +| 3.6.3 | 2024-07-19 | [42122](https://github.com/airbytehq/airbyte/pull/42122) | Improve wass error message + logging. | +| 3.6.2 | 2024-07-18 | [42108](https://github.com/airbytehq/airbyte/pull/42108) | Disable incremental sync for view streams in xmin replication mode | +| 3.6.1 | 2024-07-05 | [40716](https://github.com/airbytehq/airbyte/pull/40716) | Fix typo in connector specification | +| 3.6.0 | 2024-07-17 | [40208](https://github.com/airbytehq/airbyte/pull/40208) | Start using the new error Postgres source error handler that comes with a new error translation layer. | +| 3.5.2 | 2024-07-17 | [42068](https://github.com/airbytehq/airbyte/pull/42068) | Add analytics for WASS case occurrence. | +| 3.5.1 | 2024-07-17 | [42055](https://github.com/airbytehq/airbyte/pull/42055) | Add debezium heartbeat timeout back to shutdown debezium. | +| 3.5.0 | 2024-07-17 | [41651](https://github.com/airbytehq/airbyte/pull/41651) | Implement WASS algo - large initial snapshots shouldn't block CDC. | +| 3.4.26 | 2024-07-15 | [41654](https://github.com/airbytehq/airbyte/pull/41654) | Allow null value for array typed columns in CDC. | +| 3.4.25 | 2024-07-12 | [41651](https://github.com/airbytehq/airbyte/pull/41651) | Throw transient error if tables of interest and undergoing full vacuum. | +| 3.4.24 | 2024-07-05 | [41067](https://github.com/airbytehq/airbyte/pull/41067) | Fix Postgres sending duplicated streams | +| 3.4.23 | 2024-07-01 | [40757](https://github.com/airbytehq/airbyte/pull/40757) | Rollback 3.4.22. | +| 3.4.21 | 2024-07-01 | [40516](https://github.com/airbytehq/airbyte/pull/40516) | Remove dbz hearbeat. | +| 3.4.20 | 2024-06-23 | [40559](https://github.com/airbytehq/airbyte/pull/40559) | Remove strict check for stream states of unknown types | +| 3.4.19 | 2024-06-23 | [40223](https://github.com/airbytehq/airbyte/pull/40223) | Revert the changes introduced in version 3.4.15. | +| 3.4.18 | 2024-06-14 | [39349](https://github.com/airbytehq/airbyte/pull/39349) | Full refresh stream sending internal count metadata. | +| 3.4.17 | 2024-06-13 | [39460](https://github.com/airbytehq/airbyte/pull/39460) | Bump postgres JDBC driver version | +| 3.4.16 | 2024-05-29 | [39474](https://github.com/airbytehq/airbyte/pull/39474) | Adopt latest CDK. | +| 3.4.15 | 2024-05-29 | [38773](https://github.com/airbytehq/airbyte/pull/38773) | Connect with adaptiveFetch=true. | +| 3.4.14 | 2024-06-08 | [39353](https://github.com/airbytehq/airbyte/pull/39353) | Upgrade Debezium to 2.6.2 | +| 3.4.13 | 2024-06-04 | [38875](https://github.com/airbytehq/airbyte/pull/38875) | read() throws config exception upon detecting transaction ID wraparound. | +| 3.4.12 | 2024-06-04 | [38836](https://github.com/airbytehq/airbyte/pull/38836) | check() throws config error upon detecting transaction ID wraparound. | +| 3.4.11 | 2024-06-04 | [38848](https://github.com/airbytehq/airbyte/pull/38848) | Improve UI message and doc on xmin | +| 3.4.10 | 2024-05-29 | [38584](https://github.com/airbytehq/airbyte/pull/38584) | Set is_resumable flag in discover. | +| 3.4.9 | 2024-05-29 | [38775](https://github.com/airbytehq/airbyte/pull/38775) | Publish CDK | +| 3.4.9 | 2024-05-28 | [38716](https://github.com/airbytehq/airbyte/pull/38716) | Publish CDK | +| 3.4.8 | 2024-05-28 | [38716](https://github.com/airbytehq/airbyte/pull/38716) | Stream status for postgres | +| 3.4.7 | 2024-05-20 | [38365](https://github.com/airbytehq/airbyte/pull/38365) | Rollback a previously version (3.4.6) | +| 3.4.5 | 2024-05-16 | [38303](https://github.com/airbytehq/airbyte/pull/38303) | Streams not in the CDC publication still have a cursor and PK. | +| 3.4.4 | 2024-05-15 | [38208](https://github.com/airbytehq/airbyte/pull/38208) | disable counts in full refresh stream in state message. | +| 3.4.3 | 2024-05-13 | [38104](https://github.com/airbytehq/airbyte/pull/38104) | Handle transient error messages. | +| 3.4.2 | 2024-05-10 | [38171](https://github.com/airbytehq/airbyte/pull/38171) | Bug fix on final state setup. | +| 3.4.1 | 2024-05-10 | [38130](https://github.com/airbytehq/airbyte/pull/38130) | Bug fix on old PG where ctid column not found when stream is a view. | +| 3.4.0 | 2024-04-29 | [37112](https://github.com/airbytehq/airbyte/pull/37112) | resumeable full refresh. | +| 3.3.33 | 2024-05-07 | [38030](https://github.com/airbytehq/airbyte/pull/38030) | Mark PG hot standby error as transient. | +| 3.3.32 | 2024-04-30 | [37758](https://github.com/airbytehq/airbyte/pull/37758) | Correct previous release to disable debezium retries | +| 3.3.31 | 2024-04-30 | [37754](https://github.com/airbytehq/airbyte/pull/37754) | Add CDC logs | +| 3.3.30 | 2024-04-30 | [37726](https://github.com/airbytehq/airbyte/pull/37726) | Remove debezium retries | +| 3.3.29 | 2024-04-23 | [37509](https://github.com/airbytehq/airbyte/pull/37509) | remove excessive logs | +| 3.3.28 | 2024-04-23 | [37509](https://github.com/airbytehq/airbyte/pull/37509) | Better error messages on switching between sync modes. | +| 3.3.27 | 2024-04-22 | [37445](https://github.com/airbytehq/airbyte/pull/37445) | Remove legacy bad values handling code. | +| 3.3.26 | 2024-04-10 | [36982](https://github.com/airbytehq/airbyte/pull/36982) | Populate airyte_meta.changes for xmin path | +| 3.3.25 | 2024-04-10 | [36981](https://github.com/airbytehq/airbyte/pull/36981) | Track latest CDK | +| 3.3.24 | 2024-04-10 | [36865](https://github.com/airbytehq/airbyte/pull/36865) | Track latest CDK | +| 3.3.23 | 2024-04-02 | [36759](https://github.com/airbytehq/airbyte/pull/36759) | Track latest CDK | +| 3.3.22 | 2024-04-01 | [36739](https://github.com/airbytehq/airbyte/pull/36739) | Fix useLocalCdk flag. | +| 3.3.21 | 2024-03-25 | [36584](https://github.com/airbytehq/airbyte/pull/36584) | Adopt Kotlin CDK. | +| 3.3.20 | 2024-03-25 | [36432](https://github.com/airbytehq/airbyte/pull/36432) | Failure to serialize values from Postgres DB shouldn't fail sync. | +| 3.3.19 | 2024-03-12 | [36333](https://github.com/airbytehq/airbyte/pull/36333) | Use newest CDK - deprecate dbz iterator | +| 3.3.18 | 2024-03-12 | [35599](https://github.com/airbytehq/airbyte/pull/35599) | Use newest CDK | +| 3.3.17 | 2024-03-12 | [35939](https://github.com/airbytehq/airbyte/pull/35939) | Use lsn_commit value instead of lsn_proc for CDC checkpointing logic. | +| 3.3.16 | 2024-03-11 | [35904](https://github.com/airbytehq/airbyte/pull/35904) | Adopt Java CDK 0.23.1- debezium retries. | +| 3.3.15 | 2024-02-29 | [34724](https://github.com/airbytehq/airbyte/pull/34724) | Add record count in state message. | +| 3.3.14 | 2024-03-06 | [35842](https://github.com/airbytehq/airbyte/pull/35842) | Add logging to understand cases with a large number of records with the same LSN. | +| 3.3.13 | 2024-02-27 | [35675](https://github.com/airbytehq/airbyte/pull/35675) | Fix invalid cdc error message. | +| 3.3.12 | 2024-02-22 | [35569](https://github.com/airbytehq/airbyte/pull/35569) | Fix logging bug. | +| 3.3.11 | 2024-02-20 | [35304](https://github.com/airbytehq/airbyte/pull/35304) | Add config to throw an error on invalid CDC position and enable it by default. | | 3.3.10 | 2024-02-13 | [35036](https://github.com/airbytehq/airbyte/pull/34751) | Emit analytics message for invalid CDC cursor. | | 3.3.9 | 2024-02-13 | [35224](https://github.com/airbytehq/airbyte/pull/35224) | Adopt CDK 0.20.4 | | 3.3.8 | 2024-02-08 | [34751](https://github.com/airbytehq/airbyte/pull/34751) | Adopt CDK 0.19.0 | From f9aedb240f682a8b041d375ea689ed3337d26ed2 Mon Sep 17 00:00:00 2001 From: Yue Li <61070669+theyueli@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:26:32 -0700 Subject: [PATCH 005/379] [source-postgres] support cdc against a read-replica (continuation) (#46322) --- airbyte-integrations/connectors/source-postgres/metadata.yaml | 2 +- .../source/postgres/cdc/PostgresDebeziumStateUtil.java | 4 +++- docs/integrations/sources/postgres.md | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/airbyte-integrations/connectors/source-postgres/metadata.yaml b/airbyte-integrations/connectors/source-postgres/metadata.yaml index ac94fc1a9b747..9ce5fea11cc93 100644 --- a/airbyte-integrations/connectors/source-postgres/metadata.yaml +++ b/airbyte-integrations/connectors/source-postgres/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: decd338e-5647-4c0b-adf4-da0e75f5a750 - dockerImageTag: 3.6.20 + dockerImageTag: 3.6.21 dockerRepository: airbyte/source-postgres documentationUrl: https://docs.airbyte.com/integrations/sources/postgres githubIssueLabel: source-postgres diff --git a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/cdc/PostgresDebeziumStateUtil.java b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/cdc/PostgresDebeziumStateUtil.java index 1b75f269d0f7d..2d0cf32baaf11 100644 --- a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/cdc/PostgresDebeziumStateUtil.java +++ b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/cdc/PostgresDebeziumStateUtil.java @@ -247,7 +247,9 @@ private long currentXLogLocation(JdbcDatabase database) throws SQLException { } private Long currentTransactionId(final JdbcDatabase database) throws SQLException { - final List transactionId = database.bufferedResultSetQuery(conn -> conn.createStatement().executeQuery("select * from txid_current()"), + final List transactionId = database.bufferedResultSetQuery( + conn -> conn.createStatement().executeQuery( + "SELECT CASE WHEN pg_is_in_recovery() THEN txid_snapshot_xmin(txid_current_snapshot()) ELSE txid_current() END AS pg_current_txid;"), resultSet -> resultSet.getLong(1)); Preconditions.checkState(transactionId.size() == 1); return transactionId.get(0); diff --git a/docs/integrations/sources/postgres.md b/docs/integrations/sources/postgres.md index ac005ed541b1a..71dd09ed75f64 100644 --- a/docs/integrations/sources/postgres.md +++ b/docs/integrations/sources/postgres.md @@ -329,6 +329,7 @@ According to Postgres [documentation](https://www.postgresql.org/docs/14/datatyp | Version | Date | Pull Request | Subject | |---------|------------|----------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 3.6.21 | 2024-10-02 | [46322](https://github.com/airbytehq/airbyte/pull/46322) | Support CDC against a read-replica (continuation) | | 3.6.20 | 2024-10-01 | [46299](https://github.com/airbytehq/airbyte/pull/46299) | Make postgres source compile and use the latest CDK | | 3.6.19 | 2024-09-17 | [45639](https://github.com/airbytehq/airbyte/pull/45639) | Adopt latest CDK to use the latest apache sshd mina to handle tcpkeepalive requests. | | 3.6.18 | 2024-08-28 | [44878](https://github.com/airbytehq/airbyte/pull/44878) | Enable tcpKeepAlive for jdbc connection. | From 60584a09541c29b915aa3ee949606509920750d3 Mon Sep 17 00:00:00 2001 From: Brian Lai <51336873+brianjlai@users.noreply.github.com> Date: Thu, 3 Oct 2024 02:07:07 -0400 Subject: [PATCH 006/379] [airbyte-cdk] remove PrintBuffer due to issues when used by concurrent CDK (#46303) --- airbyte-cdk/python/airbyte_cdk/entrypoint.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/airbyte-cdk/python/airbyte_cdk/entrypoint.py b/airbyte-cdk/python/airbyte_cdk/entrypoint.py index dc7750035520a..945d28405336a 100644 --- a/airbyte-cdk/python/airbyte_cdk/entrypoint.py +++ b/airbyte-cdk/python/airbyte_cdk/entrypoint.py @@ -32,7 +32,9 @@ from airbyte_cdk.sources import Source from airbyte_cdk.sources.connector_state_manager import HashableStreamDescriptor from airbyte_cdk.sources.utils.schema_helpers import check_config_against_spec_or_exit, split_config -from airbyte_cdk.utils import PrintBuffer, is_cloud_environment, message_utils + +# from airbyte_cdk.utils import PrintBuffer, is_cloud_environment, message_utils # add PrintBuffer back once fixed +from airbyte_cdk.utils import is_cloud_environment, message_utils from airbyte_cdk.utils.airbyte_secrets_utils import get_secrets, update_secrets from airbyte_cdk.utils.constants import ENV_REQUEST_CACHE_PATH from airbyte_cdk.utils.traced_exception import AirbyteTracedException @@ -255,11 +257,13 @@ def _emit_queued_messages(self, source: Source) -> Iterable[AirbyteMessage]: def launch(source: Source, args: List[str]) -> None: source_entrypoint = AirbyteEntrypoint(source) parsed_args = source_entrypoint.parse_args(args) - with PrintBuffer(): - for message in source_entrypoint.run(parsed_args): - # simply printing is creating issues for concurrent CDK as Python uses different two instructions to print: one for the message and - # the other for the break line. Adding `\n` to the message ensure that both are printed at the same time - print(f"{message}\n", end="", flush=True) + # temporarily removes the PrintBuffer because we're seeing weird print behavior for concurrent syncs + # Refer to: https://github.com/airbytehq/oncall/issues/6235 + # with PrintBuffer(): + for message in source_entrypoint.run(parsed_args): + # simply printing is creating issues for concurrent CDK as Python uses different two instructions to print: one for the message and + # the other for the break line. Adding `\n` to the message ensure that both are printed at the same time + print(f"{message}\n", end="", flush=True) def _init_internal_request_filter() -> None: From 7ed70ee0b2c6f6facbe27ba9152c44e322b6be38 Mon Sep 17 00:00:00 2001 From: brianjlai Date: Thu, 3 Oct 2024 06:28:39 +0000 Subject: [PATCH 007/379] =?UTF-8?q?=F0=9F=A4=96=20patch=20bump=20Python=20?= =?UTF-8?q?CDK=20to=20version=205.10.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-cdk/python/CHANGELOG.md | 3 +++ airbyte-cdk/python/pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/airbyte-cdk/python/CHANGELOG.md b/airbyte-cdk/python/CHANGELOG.md index 9cb5501a873ab..f0630c87ef83a 100644 --- a/airbyte-cdk/python/CHANGELOG.md +++ b/airbyte-cdk/python/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 5.10.2 +Remove PrintBuffer optimization due to dropped records + ## 5.10.1 Async job component: improve memory usage diff --git a/airbyte-cdk/python/pyproject.toml b/airbyte-cdk/python/pyproject.toml index 1568a1b5aca9b..283d15520076c 100644 --- a/airbyte-cdk/python/pyproject.toml +++ b/airbyte-cdk/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-cdk" -version = "5.10.1" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." authors = ["Airbyte "] license = "MIT" From bbb9c2ea973f0f7f8655ab2e17ac9fb1df42d779 Mon Sep 17 00:00:00 2001 From: brianjlai Date: Thu, 3 Oct 2024 06:35:12 +0000 Subject: [PATCH 008/379] =?UTF-8?q?=F0=9F=A4=96=20Cut=20version=205.10.2?= =?UTF-8?q?=20of=20source-declarative-manifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-declarative-manifest/metadata.yaml | 2 +- .../connectors/source-declarative-manifest/poetry.lock | 8 ++++---- .../connectors/source-declarative-manifest/pyproject.toml | 4 ++-- docs/integrations/sources/low-code.md | 1 + 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml index 83de947e133d8..c41437921fd83 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml +++ b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml @@ -8,7 +8,7 @@ data: connectorType: source definitionId: 64a2f99c-542f-4af8-9a6f-355f1217b436 # This version should not be updated manually - it is updated by the CDK release workflow. - dockerImageTag: 5.10.1 + dockerImageTag: 5.10.2 dockerRepository: airbyte/source-declarative-manifest # This page is hidden from the docs for now, since the connector is not in any Airbyte registries. documentationUrl: https://docs.airbyte.com/integrations/sources/low-code diff --git a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock index c494713d0d910..49cfbaa553d7b 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock +++ b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.10.1" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.10.1-py3-none-any.whl", hash = "sha256:b965f38b28b303a8c85da29f80d9669c086cf0c502b919793b5cf66300d81997"}, - {file = "airbyte_cdk-5.10.1.tar.gz", hash = "sha256:9f100bf3da49aa087f11c9e42d9cc16801d232823a0c587eaf497e9fc7946c5a"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -1734,4 +1734,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10,<3.12" -content-hash = "a2c23f2792f49098786dbf3a13d8df6c058a000c98b221f867b3cee1a13158d0" +content-hash = "824ade154b723f64bd20a3081128a6bf77663c414b17dfafeb5360c06a54d0bf" diff --git a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml index 3a1eeb51738bf..7973361588f3f 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml +++ b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.10.1" +version = "5.10.2" name = "source-declarative-manifest" description = "Base source implementation for low-code sources." authors = ["Airbyte "] @@ -17,7 +17,7 @@ include = "source_declarative_manifest" [tool.poetry.dependencies] python = "^3.10,<3.12" -airbyte-cdk = "5.10.1" +airbyte-cdk = "5.10.2" [tool.poetry.scripts] source-declarative-manifest = "source_declarative_manifest.run:run" diff --git a/docs/integrations/sources/low-code.md b/docs/integrations/sources/low-code.md index 22319b140c2c7..16839e821238e 100644 --- a/docs/integrations/sources/low-code.md +++ b/docs/integrations/sources/low-code.md @@ -9,6 +9,7 @@ The changelog below is automatically updated by the `bump_version` command as pa | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------- | +| 5.10.2 | 2024-10-03 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.2 | | 5.10.1 | 2024-10-02 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.1 | | 5.10.0 | 2024-10-02 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.0 | | 5.9.0 | 2024-10-01 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.9.0 | From 07365b0c77811cf7156e482a67838ba2c484bb04 Mon Sep 17 00:00:00 2001 From: Maxime Carbonneau-Leclerc <3360483+maxi297@users.noreply.github.com> Date: Thu, 3 Oct 2024 08:42:20 -0400 Subject: [PATCH 009/379] =?UTF-8?q?=E2=9C=A8=20Source=20Salesforce:=20Bulk?= =?UTF-8?q?=20stream=20uses=20async=20CDK=20components=20(#45678)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Artem Inzhyyants Co-authored-by: Artem Inzhyyants <36314070+artem1205@users.noreply.github.com> --- .../integration_tests/bulk_error_test.py | 18 +- .../integration_tests/integration_test.py | 4 +- .../integration_tests/state.json | 2791 +++++++++++++++++ .../integration_tests/state_migration.py | 2625 ++++++++++++++++ .../source-salesforce/metadata.yaml | 2 +- .../connectors/source-salesforce/poetry.lock | 446 ++- .../source-salesforce/pyproject.toml | 7 +- .../source_salesforce/api.py | 3 +- .../source_salesforce/rate_limiting.py | 14 +- .../source_salesforce/run.py | 4 +- .../source_salesforce/source.py | 24 +- .../source_salesforce/streams.py | 736 +++-- .../source-salesforce/unit_tests/api_test.py | 378 +-- .../source-salesforce/unit_tests/conftest.py | 46 +- .../integration/test_bulk_stream.py | 331 +- .../integration/test_rest_stream.py | 6 +- .../unit_tests/integration/test_source.py | 2 +- .../unit_tests/integration/utils.py | 2 +- .../unit_tests/test_memory.py | 46 - .../unit_tests/test_rate_limiting.py | 71 + .../unit_tests/test_slice_generation.py | 13 +- docs/integrations/sources/salesforce.md | 251 +- 22 files changed, 6815 insertions(+), 1005 deletions(-) create mode 100644 airbyte-integrations/connectors/source-salesforce/integration_tests/state.json create mode 100644 airbyte-integrations/connectors/source-salesforce/integration_tests/state_migration.py delete mode 100644 airbyte-integrations/connectors/source-salesforce/unit_tests/test_memory.py create mode 100644 airbyte-integrations/connectors/source-salesforce/unit_tests/test_rate_limiting.py diff --git a/airbyte-integrations/connectors/source-salesforce/integration_tests/bulk_error_test.py b/airbyte-integrations/connectors/source-salesforce/integration_tests/bulk_error_test.py index 304c0d7d5b422..829350b465603 100644 --- a/airbyte-integrations/connectors/source-salesforce/integration_tests/bulk_error_test.py +++ b/airbyte-integrations/connectors/source-salesforce/integration_tests/bulk_error_test.py @@ -10,12 +10,13 @@ import pytest import requests_mock -from airbyte_cdk.models import ConfiguredAirbyteCatalog, SyncMode +from airbyte_cdk.models import SyncMode from airbyte_cdk.sources.streams import Stream +from airbyte_cdk.test.catalog_builder import CatalogBuilder from source_salesforce.source import SourceSalesforce HERE = Path(__file__).parent -_ANY_CATALOG = ConfiguredAirbyteCatalog.parse_obj({"streams": []}) +_ANY_CATALOG = CatalogBuilder().build() _ANY_CONFIG = {} _ANY_STATE = {} @@ -45,19 +46,6 @@ def get_any_real_stream(input_config: Mapping[str, Any]) -> Stream: return get_stream(input_config, "ActiveFeatureLicenseMetric") -def test_not_queryable_stream(caplog, input_config): - stream = get_any_real_stream(input_config) - url = f"{stream._legacy_stream.sf_api.instance_url}/services/data/{stream._legacy_stream.sf_api.version}/jobs/query" - - # test non queryable BULK streams - query = "Select Id, Subject from ActivityHistory" - with caplog.at_level(logging.WARNING): - assert stream._legacy_stream.create_stream_job(query, url) is None, "this stream should be skipped" - - # check logs - assert "is not queryable" in caplog.records[-1].message - - @pytest.mark.parametrize( "stream_name,log_messages", ( diff --git a/airbyte-integrations/connectors/source-salesforce/integration_tests/integration_test.py b/airbyte-integrations/connectors/source-salesforce/integration_tests/integration_test.py index 9eca8f43a0eda..1742ef72a9236 100644 --- a/airbyte-integrations/connectors/source-salesforce/integration_tests/integration_test.py +++ b/airbyte-integrations/connectors/source-salesforce/integration_tests/integration_test.py @@ -13,7 +13,7 @@ import pytest import requests from airbyte_cdk.models import SyncMode -from airbyte_protocol.models import ConfiguredAirbyteCatalog +from airbyte_cdk.test.catalog_builder import CatalogBuilder from source_salesforce.api import Salesforce from source_salesforce.source import SourceSalesforce @@ -22,7 +22,7 @@ NOTE_CONTENT = "It's the note for integration test" UPDATED_NOTE_CONTENT = "It's the updated note for integration test" -_ANY_CATALOG = ConfiguredAirbyteCatalog.parse_obj({"streams": []}) +_ANY_CATALOG = CatalogBuilder().build() _ANY_CONFIG = {} _ANY_STATE = {} diff --git a/airbyte-integrations/connectors/source-salesforce/integration_tests/state.json b/airbyte-integrations/connectors/source-salesforce/integration_tests/state.json new file mode 100644 index 0000000000000..ca7a270521f0f --- /dev/null +++ b/airbyte-integrations/connectors/source-salesforce/integration_tests/state.json @@ -0,0 +1,2791 @@ +[ + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcQueue__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:54.874Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dc3ObjectMeta__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:48.181Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "UserDefinedLabelAssignment" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:45.118Z", + "start": "2022-06-15T14:03:45.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcGroup__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:53.511Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "UserDefinedLabelAssignmentShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:45.159Z", + "start": "2022-06-15T14:03:45.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "UserDefinedLabelShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:45.259Z", + "start": "2022-06-15T14:03:45.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "DecisionTableDatasetLink" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:21.318Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dc3Duplicate__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:46.009Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "UserDefinedLabel" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:44.790Z", + "start": "2022-06-15T14:03:45.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "DecisionMatrixDefinitionVersion" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:24.350Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcIndex__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:53.947Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Invoice__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:10.041Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "MRRLog__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:19.095Z", + "start": "2022-09-09T14:03:32.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ServerOrder__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:10.019Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ContactHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:32.355Z", + "start": "2022-09-12T13:15:57.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcJob__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:54.478Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ContextParamMap" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:34.457Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "TaskStatus" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:20.386Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcTemp__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:57.468Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Profile" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:13.408Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementInterface" }, + "stream_state": { "__ab_no_cursor_state_message": true } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ContentDocumentLink" }, + "stream_state": { "__ab_no_cursor_state_message": true } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "BusinessProcessTypeDef" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:28.804Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "SatisfactionScore__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:21.143Z", + "start": "2022-04-15T23:26:47.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixRowHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:09.987Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixRowFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:33.354Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ShipmentAsset__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.265Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ContentDocument" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:35.688Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExplainabilityMsgTemplate" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.918Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Slack_Channel__mdt" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:29.949Z", + "start": "2022-06-26T20:19:14.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixVersionHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:33.165Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Document" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:13.433Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixColumn" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:27.330Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "IntegrationProviderDef" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:12.160Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetVersion" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:35.828Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementTopicHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:19.054Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureStep" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:12.073Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OpportunityTeamMember" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:11.382Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AccountTeamMember" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:38.212Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "User" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:34.478Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AccountHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.912Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__MatchGroup__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:55.274Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "DecisionTable" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.654Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ApplicationSubtypeDefinition" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.913Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixVersion" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:23.363Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:35.499Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:14.251Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExplainabilityMsgTemplateLocalization" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:27.978Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:38.408Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordAlertDataSource" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.923Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixColumnHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:17.415Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "IntegrationProviderAttr" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.619Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordAlertHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.919Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Case" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:29.322Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Task" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:19.441Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExplainabilityActionVersion" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:22.247Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:23.229Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:17.077Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "MarketData__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.208Z", + "start": "2022-06-17T12:27:35.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Opportunity" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:12.342Z", + "start": "2022-09-12T08:10:45.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "LeadHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.475Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrix" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.627Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordAlertCategory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.914Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AssetHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:39.972Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "DecisionMatrixDefinition" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.914Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "TimelineObjectDefinitionLocalization" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:21.536Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "DataKitDeploymentLog" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:14.857Z", + "start": "2022-07-04T15:23:18.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureVersionFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:17.896Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OPSMapping__mdt" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.913Z", + "start": "2022-09-06T09:03:27.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetVersionHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:34.169Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Shipment__History" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:23.648Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Shipment__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:33.725Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__CapacityModel__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:56.989Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OpportunityHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:35.746Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__MatchRule__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:38.540Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AssetRelationshipHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:32.047Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordAlertTemplate" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:19.803Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcTelemetry__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:55.005Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "LeadDailyMetric" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:37.317Z", + "start": "2022-05-22T17:25:39.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcFrequent__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:52.522Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcAudit__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:50.577Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcLayout__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:54.698Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcTrigger__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:58.125Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcDiscard__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:52.073Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "j1be_slack__Slack_Bot_Token__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:58.406Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ContactMonthlyMetric" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:34.389Z", + "start": "2022-05-22T17:25:39.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcTelemetry__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:57.390Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcAnalytics__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:49.897Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcAnalytics__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:49.307Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dc3ObjectMeta__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:48.616Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "UserRole" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:45.646Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "MarketData__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:39.083Z", + "start": "2022-06-07T10:37:50.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "FieldJourney__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:36.730Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "FieldJourney__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:36.561Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dc3Log__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:46.439Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AccountContactRole" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:34.369Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "UserLogin" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:45.428Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:38.004Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordAlertCategoryLocalization" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:38.188Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "dupcheck__dcDelta__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-06-18T22:55:51.127Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementInteraction" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.585Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "TimelineObjectDefinition" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:20.737Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Lead" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:25.961Z", + "start": "2022-09-12T10:40:04.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Contact" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:32.137Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Event" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:37.086Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementInteractionShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.915Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementAttendeeFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:12.192Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:37.489Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpsSetObjectAliasFieldVw" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:35.412Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementTopicFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:17.404Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OpportunityContactRole" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:31.550Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OrgMetric" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:12.178Z", + "start": "2022-07-26T21:18:01.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureVariableHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:30.094Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "MRRLog__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:09.999Z", + "start": "2022-09-09T14:03:32.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "DecisionTableParameter" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:30.097Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "MRRLog__History" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:31.347Z", + "start": "2022-09-09T14:03:32.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OpportunityFieldHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:37.122Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Shipment__Feed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:39.173Z", + "start": "2022-09-02T09:34:51.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Survey" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:14.955Z", + "start": "2022-04-12T22:24:30.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixRow" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.921Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "DecisionTblDatasetParameter" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:17.068Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementAttendeeHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:24.541Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:32.196Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "DataKitDeploymentLogShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:18.375Z", + "start": "2022-07-04T15:23:18.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Server__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:21.574Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CaseHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:27.970Z", + "start": "2022-06-28T12:14:57.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__MatchGroupCapacityModel__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T08:17:59.539Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__CapacityModel__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:40.690Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureStepFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:30.105Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CaseStatus" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:39.104Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetDefinitionVersion" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:30.329Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetDefinition" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:19.219Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__AssigneeCredit__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:36.182Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__MatchGroup__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T08:17:51.932Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__AssigneeWorkingHours__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T08:17:48.005Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordAlertShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:37.381Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__MatchRuleField__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:36.174Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureVersionHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:39.548Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetVersionFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:26.460Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OrgMetricScanSummary" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:39.625Z", + "start": "2022-07-26T21:18:01.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__AssigneeCredit__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:43.575Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__AssigneeWorkingHours__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:39.056Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureVariableFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:27.897Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalcProcStepRelationshipHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.917Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetObjectAlias" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:31.941Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AssetRelationship" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:10.009Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementInteractionFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:28.287Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OpportunityStage" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:18.413Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalcProcStepRelationship" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:17.671Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureVariable" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:26.400Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__MatchRuleField__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:52.246Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AssetShare" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:11.599Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureStepHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:10.088Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementAttendee" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.929Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "j1be_slack__Slack_Channel__mdt" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:32.950Z", + "start": "2022-06-25T20:15:39.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Shipment__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:33.337Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSetFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:39.581Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "PermissionSet" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:27.424Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Account" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:11.341Z", + "start": "2022-06-20T23:11:47.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Subscription__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.392Z", + "start": "2022-07-30T13:05:30.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Subscription__History" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:30.590Z", + "start": "2022-08-27T17:46:13.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CaseAsset__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:12.066Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AccountContactRelation" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:10.000Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__Assignee__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:17:08.141Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__MatchLog__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T08:17:57.462Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OpportunityLineItem" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:18.064Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementTopic" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:27.122Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExplainabilityActionDef" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:15.918Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__CapacityModelCriteria__c" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:36.178Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "EngagementInteractionHistory" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:27.858Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "OrgMetricScanResult" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:19.442Z", + "start": "2022-07-26T21:18:01.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AssetRelationshipFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:25.340Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__MatchLog__Share" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:49.098Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "AssetFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:29.487Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordAlert" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:30.144Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "srrlite__SRR_Object__mdt" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-11T09:16:36.173Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordType" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:21.850Z", + "start": "2022-04-18T08:30:44.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "ExpressionSet" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:35.271Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixColumnFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:10.228Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalcProcStepRelationshipFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:35.455Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "RecordAlertFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.925Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationMatrixVersionFeed" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:25.426Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "Asset" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:22.451Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedure" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:19.385Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CalculationProcedureVersion" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:07.922Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CaseContactRole" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:35.351Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_descriptor": { "name": "CaseTeamMember" }, + "stream_state": { + "slices": [ + { + "end": "2024-09-21T15:38:34.957Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } + } +] diff --git a/airbyte-integrations/connectors/source-salesforce/integration_tests/state_migration.py b/airbyte-integrations/connectors/source-salesforce/integration_tests/state_migration.py new file mode 100644 index 0000000000000..d03de9ed39e8f --- /dev/null +++ b/airbyte-integrations/connectors/source-salesforce/integration_tests/state_migration.py @@ -0,0 +1,2625 @@ +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. + +x = """[ + { + "streamDescriptor": { + "name": "dupcheck__dcQueue__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:54.874Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dc3ObjectMeta__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:48.181Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "UserDefinedLabelAssignment" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:45.118Z", + "start": "2022-06-15T14:03:45.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcGroup__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:53.511Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "UserDefinedLabelAssignmentShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:45.159Z", + "start": "2022-06-15T14:03:45.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "UserDefinedLabelShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:45.259Z", + "start": "2022-06-15T14:03:45.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "DecisionTableDatasetLink" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:21.318Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dc3Duplicate__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:46.009Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "UserDefinedLabel" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:44.790Z", + "start": "2022-06-15T14:03:45.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "DecisionMatrixDefinitionVersion" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:24.350Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcIndex__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:53.947Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Invoice__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:10.041Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "MRRLog__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:19.095Z", + "start": "2022-09-09T14:03:32.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ServerOrder__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:10.019Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ContactHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:32.355Z", + "start": "2022-09-12T13:15:57.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcJob__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:54.478Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ContextParamMap" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:34.457Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "TaskStatus" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:20.386Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcTemp__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:57.468Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Profile" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:13.408Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementInterface" + }, + "streamState": { + "__ab_no_cursor_state_message": true + } + }, + { + "streamDescriptor": { + "name": "ContentDocumentLink" + }, + "streamState": { + "__ab_no_cursor_state_message": true + } + }, + { + "streamDescriptor": { + "name": "BusinessProcessTypeDef" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:28.804Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "SatisfactionScore__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:21.143Z", + "start": "2022-04-15T23:26:47.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixRowHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:09.987Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixRowFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:33.354Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ShipmentAsset__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.265Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ContentDocument" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:35.688Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExplainabilityMsgTemplate" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.918Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Slack_Channel__mdt" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:29.949Z", + "start": "2022-06-26T20:19:14.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixVersionHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:33.165Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Document" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:13.433Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixColumn" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:27.330Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "IntegrationProviderDef" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:12.160Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetVersion" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:35.828Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementTopicHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:19.054Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureStep" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:12.073Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OpportunityTeamMember" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:11.382Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AccountTeamMember" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:38.212Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "User" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:34.478Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AccountHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.912Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__MatchGroup__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:55.274Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "DecisionTable" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.654Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ApplicationSubtypeDefinition" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.913Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixVersion" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:23.363Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:35.499Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:14.251Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExplainabilityMsgTemplateLocalization" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:27.978Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:38.408Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordAlertDataSource" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.923Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixColumnHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:17.415Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "IntegrationProviderAttr" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.619Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordAlertHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.919Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Case" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:29.322Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Task" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:19.441Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExplainabilityActionVersion" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:22.247Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:23.229Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:17.077Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "MarketData__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.208Z", + "start": "2022-06-17T12:27:35.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Opportunity" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:12.342Z", + "start": "2022-09-12T08:10:45.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "LeadHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.475Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrix" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.627Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordAlertCategory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.914Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AssetHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:39.972Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "DecisionMatrixDefinition" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.914Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "TimelineObjectDefinitionLocalization" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:21.536Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "DataKitDeploymentLog" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:14.857Z", + "start": "2022-07-04T15:23:18.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureVersionFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:17.896Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OPSMapping__mdt" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.913Z", + "start": "2022-09-06T09:03:27.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetVersionHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:34.169Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Shipment__History" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:23.648Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Shipment__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:33.725Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__CapacityModel__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:56.989Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OpportunityHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:35.746Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__MatchRule__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:38.540Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AssetRelationshipHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:32.047Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordAlertTemplate" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:19.803Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcTelemetry__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:55.005Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "LeadDailyMetric" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:37.317Z", + "start": "2022-05-22T17:25:39.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcFrequent__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:52.522Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcAudit__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:50.577Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcLayout__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:54.698Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcTrigger__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:58.125Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcDiscard__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:52.073Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "j1be_slack__Slack_Bot_Token__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:58.406Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ContactMonthlyMetric" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:34.389Z", + "start": "2022-05-22T17:25:39.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcTelemetry__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:57.390Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcAnalytics__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:49.897Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcAnalytics__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:49.307Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dc3ObjectMeta__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:48.616Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "UserRole" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:45.646Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "MarketData__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:39.083Z", + "start": "2022-06-07T10:37:50.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "FieldJourney__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:36.730Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "FieldJourney__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:36.561Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dc3Log__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:46.439Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AccountContactRole" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:34.369Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "UserLogin" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:45.428Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:38.004Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordAlertCategoryLocalization" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:38.188Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "dupcheck__dcDelta__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-06-18T22:55:51.127Z", + "start": "2022-06-12T12:41:53.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementInteraction" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.585Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "TimelineObjectDefinition" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:20.737Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Lead" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:25.961Z", + "start": "2022-09-12T10:40:04.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Contact" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:32.137Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Event" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:37.086Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementInteractionShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.915Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementAttendeeFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:12.192Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:37.489Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpsSetObjectAliasFieldVw" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:35.412Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementTopicFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:17.404Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OpportunityContactRole" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:31.550Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OrgMetric" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:12.178Z", + "start": "2022-07-26T21:18:01.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureVariableHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:30.094Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "MRRLog__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:09.999Z", + "start": "2022-09-09T14:03:32.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "DecisionTableParameter" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:30.097Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "MRRLog__History" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:31.347Z", + "start": "2022-09-09T14:03:32.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OpportunityFieldHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:37.122Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Shipment__Feed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:39.173Z", + "start": "2022-09-02T09:34:51.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Survey" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:14.955Z", + "start": "2022-04-12T22:24:30.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixRow" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.921Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "DecisionTblDatasetParameter" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:17.068Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementAttendeeHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:24.541Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:32.196Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "DataKitDeploymentLogShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:18.375Z", + "start": "2022-07-04T15:23:18.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Server__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:21.574Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CaseHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:27.970Z", + "start": "2022-06-28T12:14:57.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__MatchGroupCapacityModel__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T08:17:59.539Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__CapacityModel__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:40.690Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureStepFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:30.105Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CaseStatus" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:39.104Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetDefinitionVersion" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:30.329Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetDefinition" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:19.219Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__AssigneeCredit__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:36.182Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__MatchGroup__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T08:17:51.932Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__AssigneeWorkingHours__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T08:17:48.005Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordAlertShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:37.381Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__MatchRuleField__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:36.174Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureVersionHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:39.548Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetVersionFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:26.460Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OrgMetricScanSummary" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:39.625Z", + "start": "2022-07-26T21:18:01.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__AssigneeCredit__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:43.575Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__AssigneeWorkingHours__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:39.056Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureVariableFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:27.897Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalcProcStepRelationshipHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.917Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetObjectAlias" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:31.941Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AssetRelationship" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:10.009Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementInteractionFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:28.287Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OpportunityStage" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:18.413Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalcProcStepRelationship" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:17.671Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureVariable" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:26.400Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__MatchRuleField__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:52.246Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AssetShare" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:11.599Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureStepHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:10.088Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementAttendee" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.929Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "j1be_slack__Slack_Channel__mdt" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:32.950Z", + "start": "2022-06-25T20:15:39.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Shipment__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:33.337Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSetFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:39.581Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "PermissionSet" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:27.424Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Account" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:11.341Z", + "start": "2022-06-20T23:11:47.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Subscription__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.392Z", + "start": "2022-07-30T13:05:30.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Subscription__History" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:30.590Z", + "start": "2022-08-27T17:46:13.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CaseAsset__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:12.066Z", + "start": "2022-05-06T03:52:21.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AccountContactRelation" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:10.000Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__Assignee__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:17:08.141Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__MatchLog__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T08:17:57.462Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OpportunityLineItem" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:18.064Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementTopic" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:27.122Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExplainabilityActionDef" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:15.918Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__CapacityModelCriteria__c" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:36.178Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "EngagementInteractionHistory" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:27.858Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "OrgMetricScanResult" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:19.442Z", + "start": "2022-07-26T21:18:01.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AssetRelationshipFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:25.340Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__MatchLog__Share" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:49.098Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "AssetFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:29.487Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordAlert" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:30.144Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "srrlite__SRR_Object__mdt" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-11T09:16:36.173Z", + "start": "2022-07-09T17:32:31.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordType" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:21.850Z", + "start": "2022-04-18T08:30:44.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "ExpressionSet" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:35.271Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixColumnFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:10.228Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalcProcStepRelationshipFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:35.455Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "RecordAlertFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.925Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationMatrixVersionFeed" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:25.426Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "Asset" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:22.451Z", + "start": "2022-08-26T13:42:59.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedure" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:19.385Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CalculationProcedureVersion" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:07.922Z", + "start": "2022-06-21T18:12:28.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CaseContactRole" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:35.351Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + }, + { + "streamDescriptor": { + "name": "CaseTeamMember" + }, + "streamState": { + "slices": [ + { + "end": "2024-09-21T15:38:34.957Z", + "start": "2022-04-11T13:22:24.000Z" + } + ], + "state_type": "date-range" + } + } +] +""" + +import json + +result = [] +for stream in json.loads(x): + stream["stream_descriptor"] = stream.pop("streamDescriptor") + stream["stream_state"] = stream.pop("streamState") + y = { + "type": "STREAM", + "stream": stream, + } + result.append(y) + +print(json.dumps(result)) diff --git a/airbyte-integrations/connectors/source-salesforce/metadata.yaml b/airbyte-integrations/connectors/source-salesforce/metadata.yaml index df0729778eead..c8b5d0aab2253 100644 --- a/airbyte-integrations/connectors/source-salesforce/metadata.yaml +++ b/airbyte-integrations/connectors/source-salesforce/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: b117307c-14b6-41aa-9422-947e34922962 - dockerImageTag: 2.5.34 + dockerImageTag: 2.6.0 dockerRepository: airbyte/source-salesforce documentationUrl: https://docs.airbyte.com/integrations/sources/salesforce githubIssueLabel: source-salesforce diff --git a/airbyte-integrations/connectors/source-salesforce/poetry.lock b/airbyte-integrations/connectors/source-salesforce/poetry.lock index fb07f041b8add..8dc4a4c74f3df 100644 --- a/airbyte-integrations/connectors/source-salesforce/poetry.lock +++ b/airbyte-integrations/connectors/source-salesforce/poetry.lock @@ -1,18 +1,18 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "2.4.0" +version = "5.10.1" description = "A framework for writing Airbyte Connectors." optional = false -python-versions = "<4.0,>=3.9" +python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-2.4.0-py3-none-any.whl", hash = "sha256:39470b2fe97f28959fcecb839d3080a8aba4a64a29dddf54a39f11f93f9f9ef7"}, - {file = "airbyte_cdk-2.4.0.tar.gz", hash = "sha256:f973d2e17a6dd0416c4395139e2761a10b38aafa61e097eaacffebbe6164ef45"}, + {file = "airbyte_cdk-5.10.1-py3-none-any.whl", hash = "sha256:b965f38b28b303a8c85da29f80d9669c086cf0c502b919793b5cf66300d81997"}, + {file = "airbyte_cdk-5.10.1.tar.gz", hash = "sha256:9f100bf3da49aa087f11c9e42d9cc16801d232823a0c587eaf497e9fc7946c5a"}, ] [package.dependencies] -airbyte-protocol-models-pdv2 = ">=0.12.2,<0.13.0" +airbyte-protocol-models-dataclasses = ">=0.13,<0.14" backoff = "*" cachetools = "*" cryptography = ">=42.0.5,<43.0.0" @@ -24,6 +24,9 @@ Jinja2 = ">=3.1.2,<3.2.0" jsonref = ">=0.2,<0.3" jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" +nltk = "3.8.1" +orjson = ">=3.10.7,<4.0.0" +pandas = "2.2.2" pendulum = "<3.0.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" @@ -33,27 +36,25 @@ pytz = "2024.1" PyYAML = ">=6.0.1,<7.0.0" requests = "*" requests_cache = "*" +serpyco-rs = ">=1.10.2,<2.0.0" wcmatch = "8.4" [package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] [[package]] -name = "airbyte-protocol-models-pdv2" -version = "0.12.2" -description = "Declares the Airbyte Protocol." +name = "airbyte-protocol-models-dataclasses" +version = "0.13.0" +description = "Declares the Airbyte Protocol using Python Dataclasses. Dataclasses in Python have less performance overhead compared to Pydantic models, making them a more efficient choice for scenarios where speed and memory usage are critical" optional = false python-versions = ">=3.8" files = [ - {file = "airbyte_protocol_models_pdv2-0.12.2-py3-none-any.whl", hash = "sha256:8b3f9d0388928547cdf2e9134c0d589e4bcaa6f63bf71a21299f6824bfb7ad0e"}, - {file = "airbyte_protocol_models_pdv2-0.12.2.tar.gz", hash = "sha256:130c9ab289f3f53749ce63ff1abbfb67a44b7e5bd2794865315a2976138b672b"}, + {file = "airbyte_protocol_models_dataclasses-0.13.0-py3-none-any.whl", hash = "sha256:0aedb99ffc4f9aab0ce91bba2c292fa17cd8fd4b42eeba196d6a16c20bbbd7a5"}, + {file = "airbyte_protocol_models_dataclasses-0.13.0.tar.gz", hash = "sha256:72e67850d661e2808406aec5839b3158ebb94d3553b798dbdae1b4a278548d2f"}, ] -[package.dependencies] -pydantic = ">=2.7.2,<3.0.0" - [[package]] name = "annotated-types" version = "0.7.0" @@ -97,6 +98,17 @@ files = [ {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, ] +[[package]] +name = "attributes-doc" +version = "0.4.0" +description = "PEP 224 implementation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "attributes-doc-0.4.0.tar.gz", hash = "sha256:b1576c94a714e9fc2c65c47cf10d0c8e1a5f7c4f5ae7f69006be108d95cbfbfb"}, + {file = "attributes_doc-0.4.0-py2.py3-none-any.whl", hash = "sha256:4c3007d9e58f3a6cb4b9c614c4d4ce2d92161581f28e594ddd8241cc3a113bdd"}, +] + [[package]] name = "attrs" version = "24.2.0" @@ -129,13 +141,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -364,6 +376,20 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -508,13 +534,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -525,7 +551,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -608,6 +634,17 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "joblib" +version = "1.4.2" +description = "Lightweight pipelining with Python functions" +optional = false +python-versions = ">=3.8" +files = [ + {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, + {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, +] + [[package]] name = "jsonpatch" version = "1.33" @@ -773,49 +810,91 @@ files = [ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] +[[package]] +name = "nltk" +version = "3.8.1" +description = "Natural Language Toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"}, + {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"}, +] + +[package.dependencies] +click = "*" +joblib = "*" +regex = ">=2021.8.3" +tqdm = "*" + +[package.extras] +all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] +corenlp = ["requests"] +machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] +plot = ["matplotlib"] +tgrep = ["pyparsing"] +twitter = ["twython"] + [[package]] name = "numpy" -version = "1.26.4" +version = "2.1.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, ] [[package]] @@ -897,46 +976,46 @@ files = [ [[package]] name = "pandas" -version = "2.2.1" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, - {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, - {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, - {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, - {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, - {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, - {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1401,6 +1480,109 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +[[package]] +name = "regex" +version = "2024.9.11" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, +] + [[package]] name = "requests" version = "2.32.3" @@ -1469,6 +1651,60 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "serpyco-rs" +version = "1.11.0" +description = "" +optional = false +python-versions = ">=3.9" +files = [ + {file = "serpyco_rs-1.11.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4b2bd933539bd8c84315e2fb5ae52ef7a58ace5a6dfe3f8b73f74dc71216779e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:627f957889ff73c4d2269fc7b6bba93212381befe03633e7cb5495de66ba9a33"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0933620abc01434023e0e3e22255b7e4ab9b427b5a9a5ee00834656d792377a"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9ce46683d92e34abb20304817fc5ac6cb141a06fc7468dedb1d8865a8a9682f6"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bda437d86e8859bf91c189c1f4650899822f6d6d7b02b48f5729da904eb7bb7d"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a72bfbd282af17ebe76d122639013e802c09902543fdbbd828fb2159ec9755e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d4808df5384e3e8581e31a90ba7a1fa501c0837b1f174284bb8a4555b6864ea"}, + {file = "serpyco_rs-1.11.0-cp310-none-win_amd64.whl", hash = "sha256:c7b60aef4c16d68efb0d6241f05d0a434d873d98449cbb4366b0d385f0a7172b"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d47ee577cf4d69b53917615cb031ad8708eb2f59fe78194b1968c13130fc2f7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6090d9a1487237cdd4e9362a823eede23249602019b917e7bd57846179286e79"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7192eb3df576386fefd595ea31ae25c62522841ffec7e7aeb37a80b55bdc3213"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b52ef8affb7e71b9b98a7d5216d6a7ad03b04e990acb147cd9211c8b931c5487"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3480e09e473560c60e74aaa789e6b4d079637371aae0a98235440111464bbba7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c92e36b0ab6fe866601c2331f7e99c809a126d21963c03d8a5c29331526deed"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84f497361952d4566bc1f77e9e15a84a2614f593cc671fbf0a0fa80046f9c3d7"}, + {file = "serpyco_rs-1.11.0-cp311-none-win_amd64.whl", hash = "sha256:37fc1cf192bef9784fbf1f4e03cec21750b9e704bef55cc0442f71a715eee920"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3ea93d485f03dc8b0cfb0d477f0ad2e86e78f0461b53010656ab5b4db1b41fb0"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7772410d15694b03f9c5500a2c47d62eed76e191bea4087ad042250346b1a38e"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42118463c1679846cffd2f06f47744c9b9eb33c5d0448afd88ea19e1a81a8ddd"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:79481a455b76cc56021dc55bb6d5bdda1b2b32bcb6a1ee711b597140d112e9b1"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8fd79051f9af9591fc03cf7d3033ff180416301f6a4fd3d1e3d92ebd2d68697"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d29c8f9aeed734a3b51f7349d04ec9063516ffa4e10b632d75e9b1309e4930e4"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15609158b0d9591ffa118302cd9d0039970cb3faf91dce32975f7d276e7411d5"}, + {file = "serpyco_rs-1.11.0-cp312-none-win_amd64.whl", hash = "sha256:00081eae77fbf4c5d88371c5586317ab02ccb293a330b460869a283edf2b7b69"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3028893366a1985adcedb13fa8f6f98c087c185efc427f94c2ccdafa40f45832"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c18bf511316f3abf648a68ee62ef88617bec57d3fcde69466b4361102715ae5"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7dde9ef09cdfaf7c62378186b9e29f54ec76114be4c347be6a06dd559c5681e"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:18500ebc5e75285841e35585a238629a990b709e14f68933233640d15ca17d5f"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47c23132d4e03982703a7630aa09877b41e499722142f76b6153f6619b612f3"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5f8e6ba499f6a0825bee0d8f8764569d367af871b563fc6512c171474e8e5383"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15438a076047c34cff6601a977df54948e8d39d1a86f89d05c48bc60f4c12a61"}, + {file = "serpyco_rs-1.11.0-cp313-none-win_amd64.whl", hash = "sha256:84ee2c109415bd81904fc9abb9aec86a5dd13166808c21142cf23ec639f683bd"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5c97c16c865261577fac4effeccc7ef5e0a1e8e35e7a3ee6c90c77c3a4cd7ff9"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47825e70f86fd6ef7c4a835dea3d6e8eef4fee354ed7b39ced99f31aba74a86e"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24d220220365110edba2f778f41ab3cf396883da0f26e1361a3ada9bd0227f73"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3a46f334af5a9d77acc6e1e58f355ae497900a2798929371f0545e274f6e6166"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d72b748acce4b4e3c7c9724e1eb33d033a1c26b08a698b393e0288060e0901"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2b8b6f205e8cc038d4d30dd0e70eece7bbecc816eb2f3787c330dc2218e232d"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038d748bfff31f150f0c3edab2766b8843edb952cb1bd3bf547886beb0912dae"}, + {file = "serpyco_rs-1.11.0-cp39-none-win_amd64.whl", hash = "sha256:0fee1c89ec2cb013dc232e4ebef88e2844357ce8631063b56639dbfb83762f20"}, + {file = "serpyco_rs-1.11.0.tar.gz", hash = "sha256:70a844615ffb229e6e89c204b3ab7404aacaf2838911814c7d847969b8da2e3a"}, +] + +[package.dependencies] +attributes-doc = "*" +typing-extensions = "*" + [[package]] name = "setuptools" version = "75.1.0" @@ -1537,6 +1773,26 @@ files = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] +[[package]] +name = "tqdm" +version = "4.66.5" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + [[package]] name = "typing-extensions" version = "4.12.2" @@ -1685,5 +1941,5 @@ files = [ [metadata] lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "135b4a59cafa081b74d81124f4fca6c9ab8cbff803bec8f07c0236299f5d07d3" +python-versions = "^3.10,<3.12" +content-hash = "9e3e0de6ee9b5fb0fe09bf30af42cf0f7cf58b118afbe7b739d9c1c05ecbb317" diff --git a/airbyte-integrations/connectors/source-salesforce/pyproject.toml b/airbyte-integrations/connectors/source-salesforce/pyproject.toml index c2b505eee970d..36f7eaf4bfaa9 100644 --- a/airbyte-integrations/connectors/source-salesforce/pyproject.toml +++ b/airbyte-integrations/connectors/source-salesforce/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.5.34" +version = "2.6.0" name = "source-salesforce" description = "Source implementation for Salesforce." authors = [ "Airbyte ",] @@ -16,9 +16,8 @@ repository = "https://github.com/airbytehq/airbyte" include = "source_salesforce" [tool.poetry.dependencies] -python = "^3.9,<3.12" -pandas = "2.2.1" -airbyte-cdk = "^2" +python = "^3.10,<3.12" +airbyte-cdk = "^5" [tool.poetry.scripts] source-salesforce = "source_salesforce.run:run" diff --git a/airbyte-integrations/connectors/source-salesforce/source_salesforce/api.py b/airbyte-integrations/connectors/source-salesforce/source_salesforce/api.py index 20e448e62f18c..688962a4f8dd4 100644 --- a/airbyte-integrations/connectors/source-salesforce/source_salesforce/api.py +++ b/airbyte-integrations/connectors/source-salesforce/source_salesforce/api.py @@ -7,10 +7,9 @@ from typing import Any, List, Mapping, Optional, Tuple import requests # type: ignore[import] -from airbyte_cdk.models import ConfiguredAirbyteCatalog +from airbyte_cdk.models import ConfiguredAirbyteCatalog, FailureType, StreamDescriptor from airbyte_cdk.sources.streams.http import HttpClient from airbyte_cdk.utils import AirbyteTracedException -from airbyte_protocol.models import FailureType, StreamDescriptor from requests import adapters as request_adapters from requests.exceptions import RequestException # type: ignore[import] diff --git a/airbyte-integrations/connectors/source-salesforce/source_salesforce/rate_limiting.py b/airbyte-integrations/connectors/source-salesforce/source_salesforce/rate_limiting.py index faab3ca139249..2fa5db0588052 100644 --- a/airbyte-integrations/connectors/source-salesforce/source_salesforce/rate_limiting.py +++ b/airbyte-integrations/connectors/source-salesforce/source_salesforce/rate_limiting.py @@ -9,9 +9,9 @@ import backoff import requests +from airbyte_cdk.models import FailureType from airbyte_cdk.sources.streams.http.error_handlers import ErrorHandler, ErrorResolution, ResponseAction from airbyte_cdk.sources.streams.http.exceptions import DefaultBackoffException -from airbyte_protocol.models import FailureType from requests import codes, exceptions # type: ignore[import] RESPONSE_CONSUMPTION_EXCEPTIONS = ( @@ -78,6 +78,10 @@ def interpret_response(self, response: Optional[Union[requests.Response, Excepti ) elif isinstance(response, requests.Response): if response.ok: + if self._is_bulk_job_status_check(response) and response.json().get("state") == "Failed": + # Important: this means that there are no retry for Salesforce jobs that once they fail. If we want to enable retry, + # we will need to be more granular by reading the `errorMessage` + raise BulkNotSupportedException(f"Query job with id: `{response.json().get('id')}` failed") return ErrorResolution(ResponseAction.IGNORE, None, None) if not (400 <= response.status_code < 500) or response.status_code in _RETRYABLE_400_STATUS_CODES: @@ -126,10 +130,16 @@ def interpret_response(self, response: Optional[Union[requests.Response, Excepti f"An error occurred: {response.content.decode()}", ) + @staticmethod + def _is_bulk_job_status_check(response: requests.Response) -> bool: + """Regular string ensures format used only for job status: /services/data/vXX.X/jobs/query/, + see https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/query_get_one_job.htm""" + return response.request.method == "GET" and bool(re.compile(r"/services/data/v\d{2}\.\d/jobs/query/[^/]+$").search(response.url)) + @staticmethod def _is_bulk_job_creation(response: requests.Response) -> bool: # TODO comment on PR: I don't like that because it duplicates the format of the URL but with a test at least we should be fine to valide once it changes - return bool(re.compile(r"services/data/[A-Za-z0-9.]+/jobs/query/?$").search(response.url)) + return response.request.method == "POST" and bool(re.compile(r"services/data/v\d{2}\.\d/jobs/query/?$").search(response.url)) def _handle_bulk_job_creation_endpoint_specific_errors( self, response: requests.Response, error_code: Optional[str], error_message: str diff --git a/airbyte-integrations/connectors/source-salesforce/source_salesforce/run.py b/airbyte-integrations/connectors/source-salesforce/source_salesforce/run.py index 07c8c7ce83ab5..cf6a38bebf05a 100644 --- a/airbyte-integrations/connectors/source-salesforce/source_salesforce/run.py +++ b/airbyte-integrations/connectors/source-salesforce/source_salesforce/run.py @@ -8,7 +8,8 @@ from datetime import datetime from typing import List -from airbyte_cdk.entrypoint import AirbyteEntrypoint, launch +from airbyte_cdk.entrypoint import AirbyteEntrypoint, launch, logger +from airbyte_cdk.exception_handler import init_uncaught_exception_handler from airbyte_cdk.models import AirbyteErrorTraceMessage, AirbyteMessage, AirbyteTraceMessage, TraceType, Type from source_salesforce import SourceSalesforce @@ -41,6 +42,7 @@ def _get_source(args: List[str]): def run(): + init_uncaught_exception_handler(logger) _args = sys.argv[1:] source = _get_source(_args) if source: diff --git a/airbyte-integrations/connectors/source-salesforce/source_salesforce/source.py b/airbyte-integrations/connectors/source-salesforce/source_salesforce/source.py index e44adb3401b62..a4236f1ff7284 100644 --- a/airbyte-integrations/connectors/source-salesforce/source_salesforce/source.py +++ b/airbyte-integrations/connectors/source-salesforce/source_salesforce/source.py @@ -9,10 +9,19 @@ import isodate import pendulum from airbyte_cdk.logger import AirbyteLogFormatter -from airbyte_cdk.models import AirbyteMessage, AirbyteStateMessage, ConfiguredAirbyteCatalog, ConfiguredAirbyteStream, Level, SyncMode +from airbyte_cdk.models import ( + AirbyteMessage, + AirbyteStateMessage, + ConfiguredAirbyteCatalog, + ConfiguredAirbyteStream, + FailureType, + Level, + SyncMode, +) from airbyte_cdk.sources.concurrent_source.concurrent_source import ConcurrentSource from airbyte_cdk.sources.concurrent_source.concurrent_source_adapter import ConcurrentSourceAdapter from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager +from airbyte_cdk.sources.declarative.async_job.job_tracker import JobTracker from airbyte_cdk.sources.message import InMemoryMessageRepository from airbyte_cdk.sources.source import TState from airbyte_cdk.sources.streams import Stream @@ -21,7 +30,6 @@ from airbyte_cdk.sources.streams.http.requests_native_auth import TokenAuthenticator from airbyte_cdk.sources.utils.schema_helpers import InternalConfig from airbyte_cdk.utils.traced_exception import AirbyteTracedException -from airbyte_protocol.models import FailureType from dateutil.relativedelta import relativedelta from pendulum.parsing.exceptions import ParserError from requests import codes, exceptions # type: ignore[import] @@ -66,6 +74,7 @@ def __init__(self, catalog: Optional[ConfiguredAirbyteCatalog], config: Optional super().__init__(concurrent_source) self.catalog = catalog self.state = state + self._job_tracker = JobTracker(limit=5) @staticmethod def _get_sf_object(config: Mapping[str, Any]) -> Salesforce: @@ -134,8 +143,7 @@ def _get_stream_type(cls, stream_name: str, api_type: str): raise Exception(f"Stream {stream_name} cannot be processed by REST or BULK API.") return full_refresh, incremental - @classmethod - def prepare_stream(cls, stream_name: str, json_schema, sobject_options, sf_object, authenticator, config): + def prepare_stream(self, stream_name: str, json_schema, sobject_options, sf_object, authenticator, config): """Choose proper stream class: syncMode(full_refresh/incremental), API type(Rest/Bulk), SubStream""" pk, replication_key = sf_object.get_pk_and_replication_key(json_schema) stream_kwargs = { @@ -146,10 +154,12 @@ def prepare_stream(cls, stream_name: str, json_schema, sobject_options, sf_objec "sf_api": sf_object, "authenticator": authenticator, "start_date": config.get("start_date"), + "job_tracker": self._job_tracker, + "message_repository": self.message_repository, } - api_type = cls._get_api_type(stream_name, json_schema, config.get("force_use_bulk_api", False)) - full_refresh, incremental = cls._get_stream_type(stream_name, api_type) + api_type = self._get_api_type(stream_name, json_schema, config.get("force_use_bulk_api", False)) + full_refresh, incremental = self._get_stream_type(stream_name, api_type) if replication_key and stream_name not in UNSUPPORTED_FILTERING_STREAMS: stream_class = incremental stream_kwargs["replication_key"] = replication_key @@ -170,7 +180,7 @@ def generate_streams( schemas = sf_object.generate_schemas(stream_objects) default_args = [sf_object, authenticator, config] streams = [] - state_manager = ConnectorStateManager(stream_instance_map={s.name: s for s in streams}, state=self.state) + state_manager = ConnectorStateManager(state=self.state) for stream_name, sobject_options in stream_objects.items(): json_schema = schemas.get(stream_name, {}) diff --git a/airbyte-integrations/connectors/source-salesforce/source_salesforce/streams.py b/airbyte-integrations/connectors/source-salesforce/source_salesforce/streams.py index cbef66d528262..6f0ca9a0f60e8 100644 --- a/airbyte-integrations/connectors/source-salesforce/source_salesforce/streams.py +++ b/airbyte-integrations/connectors/source-salesforce/source_salesforce/streams.py @@ -4,41 +4,54 @@ import csv import ctypes -import math -import os -import time import urllib.parse -import uuid from abc import ABC -from contextlib import closing +from datetime import timedelta from typing import Any, Callable, Iterable, List, Mapping, MutableMapping, Optional, Tuple, Type, Union -import pandas as pd import pendulum import requests # type: ignore[import] -from airbyte_cdk.models import ConfiguredAirbyteCatalog, FailureType, SyncMode +from airbyte_cdk import ( + BearerAuthenticator, + CursorPaginationStrategy, + DeclarativeStream, + DefaultPaginator, + DpathExtractor, + HttpMethod, + HttpRequester, + JsonDecoder, + MessageRepository, + RecordSelector, + RequestOption, + RequestOptionType, + SimpleRetriever, + StreamSlice, +) +from airbyte_cdk.models import ConfiguredAirbyteCatalog, SyncMode +from airbyte_cdk.sources.declarative.async_job.job_orchestrator import AsyncJobOrchestrator +from airbyte_cdk.sources.declarative.async_job.job_tracker import JobTracker +from airbyte_cdk.sources.declarative.async_job.status import AsyncJobStatus +from airbyte_cdk.sources.declarative.auth.token_provider import InterpolatedStringTokenProvider +from airbyte_cdk.sources.declarative.decoders import NoopDecoder +from airbyte_cdk.sources.declarative.extractors import ResponseToFileExtractor +from airbyte_cdk.sources.declarative.requesters.http_job_repository import AsyncHttpJobRepository +from airbyte_cdk.sources.declarative.requesters.request_options import InterpolatedRequestOptionsProvider +from airbyte_cdk.sources.declarative.retrievers import AsyncRetriever +from airbyte_cdk.sources.declarative.schema import InlineSchemaLoader +from airbyte_cdk.sources.declarative.stream_slicers import StreamSlicer from airbyte_cdk.sources.streams.availability_strategy import AvailabilityStrategy -from airbyte_cdk.sources.streams.concurrent.cursor import Cursor +from airbyte_cdk.sources.streams.concurrent.cursor import ConcurrentCursor from airbyte_cdk.sources.streams.concurrent.state_converters.datetime_stream_state_converter import IsoMillisConcurrentStreamStateConverter from airbyte_cdk.sources.streams.core import CheckpointMixin, Stream, StreamData from airbyte_cdk.sources.streams.http import HttpClient, HttpStream, HttpSubStream +from airbyte_cdk.sources.types import StreamState from airbyte_cdk.sources.utils.transform import TransformConfig, TypeTransformer -from airbyte_cdk.utils import AirbyteTracedException -from numpy import nan from pendulum import DateTime # type: ignore[attr-defined] from requests import exceptions -from requests.models import PreparedRequest from .api import PARENT_SALESFORCE_OBJECTS, UNSUPPORTED_FILTERING_STREAMS, Salesforce from .availability_strategy import SalesforceAvailabilityStrategy -from .exceptions import SalesforceException, TmpFileIOError -from .rate_limiting import ( - RESPONSE_CONSUMPTION_EXCEPTIONS, - TRANSIENT_EXCEPTIONS, - BulkNotSupportedException, - SalesforceErrorHandler, - default_backoff_handler, -) +from .rate_limiting import BulkNotSupportedException, SalesforceErrorHandler, default_backoff_handler # https://stackoverflow.com/a/54517228 CSV_FIELD_SIZE_LIMIT = int(ctypes.c_ulong(-1).value // 2) @@ -60,25 +73,41 @@ def __init__( sf_api: Salesforce, pk: str, stream_name: str, + job_tracker: JobTracker, + message_repository: MessageRepository, sobject_options: Mapping[str, Any] = None, schema: dict = None, start_date=None, **kwargs, ): - super().__init__(**kwargs) - self.sf_api = sf_api - self.pk = pk self.stream_name = stream_name + self.pk = pk + self.sf_api = sf_api + super().__init__(**kwargs) self.schema: Mapping[str, Any] = schema # type: ignore[assignment] self.sobject_options = sobject_options self.start_date = self.format_start_date(start_date) + self._job_tracker = job_tracker + self._message_repository = message_repository self._http_client = HttpClient( self.stream_name, self.logger, - session=self._session, # no need to specific api_budget and authenticator as HttpStream sets them in self._session + session=self._http_client._session, # no need to specific api_budget and authenticator as HttpStream sets them in self._session error_handler=SalesforceErrorHandler(stream_name=self.stream_name, sobject_options=self.sobject_options), ) + def read_records( + self, + sync_mode: SyncMode, + cursor_field: Optional[List[str]] = None, + stream_slice: Optional[Mapping[str, Any]] = None, + stream_state: Optional[Mapping[str, Any]] = None, + ) -> Iterable[StreamData]: + """ + In order to avoid RFR which does uses `_read_single_page` instead of `_read_pages` + """ + yield from super().read_records(sync_mode, cursor_field, stream_slice, stream_state) + @staticmethod def format_start_date(start_date: Optional[str]) -> Optional[str]: """Transform the format `2021-07-25` into the format `2021-07-25T00:00:00Z`""" @@ -102,10 +131,6 @@ def primary_key(self) -> Optional[Union[str, List[str], List[List[str]]]]: def url_base(self) -> str: return self.sf_api.instance_url - @property - def availability_strategy(self) -> Optional["AvailabilityStrategy"]: - return SalesforceAvailabilityStrategy() - @property def too_many_properties(self): selected_properties = self.get_json_schema().get("properties", {}) @@ -317,18 +342,20 @@ def _fetch_next_page_for_chunk( property_chunk: Mapping[str, Any] = None, ) -> Tuple[requests.PreparedRequest, requests.Response]: request_headers = self.request_headers(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token) - request = self._create_prepared_request( - path=self.path(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token), + return self._http_client.send_request( + http_method=self.http_method, + url=self._join_url( + self.url_base, + self.path(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token), + ), headers=dict(request_headers), params=self.request_params( stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token, property_chunk=property_chunk ), json=self.request_body_json(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token), data=self.request_body_data(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token), + request_kwargs={}, ) - request_kwargs = self.request_kwargs(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token) - response = self._send_request(request, request_kwargs) - return request, response class BatchedSubStream(HttpSubStream): @@ -356,218 +383,380 @@ class RestSalesforceSubStream(BatchedSubStream, RestSalesforceStream): pass -class BulkSalesforceStream(SalesforceStream): - DEFAULT_WAIT_TIMEOUT_SECONDS = 86400 # 24-hour bulk job running time - MAX_CHECK_INTERVAL_SECONDS = 2.0 - MAX_RETRY_NUMBER = 3 - - def path(self, next_page_token: Mapping[str, Any] = None, **kwargs: Any) -> str: - return f"/services/data/{self.sf_api.version}/jobs/query" - - transformer = TypeTransformer(TransformConfig.CustomSchemaNormalization | TransformConfig.DefaultSchemaNormalization) +class BulkDatetimeStreamSlicer(StreamSlicer): + def __init__(self, cursor: Optional[ConcurrentCursor]) -> None: + self._cursor = cursor - def _send_http_request(self, method: str, url: str, json: dict = None, headers: dict = None, stream: bool = False): - """ - This method should be used when you don't have to read data from the HTTP body. Else, you will have to retry when you actually read - the response buffer (which is either by calling `json` or `iter_content`) - """ - headers = headers if headers else self._http_client._session.auth.get_auth_header() - return self._http_client.send_request(method, url, headers=headers, json=json, request_kwargs={})[1] - - @default_backoff_handler(max_tries=5, retry_on=RESPONSE_CONSUMPTION_EXCEPTIONS) - def _create_stream_job(self, query: str, url: str) -> Optional[str]: - json = {"operation": "queryAll", "query": query, "contentType": "CSV", "columnDelimiter": "COMMA", "lineEnding": "LF"} - try: - response = self._send_http_request("POST", url, json=json) - return response.json().get("id") # type: ignore # based on the API, `id` will be a string - except BulkNotSupportedException: - return None - - def create_stream_job(self, query: str, url: str) -> Optional[str]: - """ - docs: https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/create_job.html - - Note that we want to retry during connection issues as well. Those can occur when calling `.json()`. Even in the case of a - connection error during a HTTPError, we will retry as else, we won't be able to take the right action. - """ - return self._create_stream_job(query, url) - - def wait_for_job(self, url: str) -> str: - expiration_time: DateTime = pendulum.now().add(seconds=self.DEFAULT_WAIT_TIMEOUT_SECONDS) - job_status = "InProgress" - delay_timeout = 0.0 - delay_cnt = 0 - job_info = None - # minimal starting delay is 0.5 seconds. - # this value was received empirically - time.sleep(0.5) - while pendulum.now() < expiration_time: - try: - job_info = self._send_http_request("GET", url=url).json() - except exceptions.HTTPError as error: - error_code, error_message = self._extract_error_code_and_message(error.response) - if ( - "We can't complete the action because enabled transaction security policies took too long to complete." in error_message - and error_code == "TXN_SECURITY_METERING_ERROR" - ): - message = 'A transient authentication error occurred. To prevent future syncs from failing, assign the "Exempt from Transaction Security" user permission to the authenticated user.' - raise AirbyteTracedException(message=message, failure_type=FailureType.config_error, exception=error) - else: - raise error - job_id = job_info["id"] - if job_status != job_info["state"]: - self.logger.info(f"Job {self.name}/{job_id} status changed from {job_status} to {job_info['state']}") - job_status = job_info["state"] - if job_status in ["JobComplete", "Aborted", "Failed"]: - if job_status != "JobComplete": - # this is only job metadata without payload - error_message = job_info.get("errorMessage") - if not error_message: - # not all failed response can have "errorMessage" and we need to show full response body - error_message = job_info - self.logger.error( - f"Job: {self.name}/{job_id}, JobStatus: {job_status}, sobject options: {self.sobject_options}, error message: '{error_message}'" - ) - else: - self.logger.info(f"Job: {self.name}/{job_id}, JobStatus: {job_status}") - return job_status - - if delay_timeout < self.MAX_CHECK_INTERVAL_SECONDS: - delay_timeout = 0.5 + math.exp(delay_cnt) / 1000.0 - delay_cnt += 1 - - time.sleep(delay_timeout) - self.logger.debug( - f"Sleeping {delay_timeout} seconds while waiting for Job: {self.name}/{job_id} to complete. Current state: {job_status}" + def get_request_params( + self, + *, + stream_state: Optional[StreamState] = None, + stream_slice: Optional[StreamSlice] = None, + next_page_token: Optional[Mapping[str, Any]] = None, + ) -> Mapping[str, Any]: + return {} + + def get_request_headers( + self, + *, + stream_state: Optional[StreamState] = None, + stream_slice: Optional[StreamSlice] = None, + next_page_token: Optional[Mapping[str, Any]] = None, + ) -> Mapping[str, Any]: + return {} + + def get_request_body_data( + self, + *, + stream_state: Optional[StreamState] = None, + stream_slice: Optional[StreamSlice] = None, + next_page_token: Optional[Mapping[str, Any]] = None, + ) -> Union[Mapping[str, Any], str]: + return {} + + def get_request_body_json( + self, + *, + stream_state: Optional[StreamState] = None, + stream_slice: Optional[StreamSlice] = None, + next_page_token: Optional[Mapping[str, Any]] = None, + ) -> Mapping[str, Any]: + return {} + + def stream_slices(self) -> Iterable[StreamSlice]: + if not self._cursor: + yield from [StreamSlice(partition={}, cursor_slice={})] + return + + for slice_start, slice_end in self._cursor.generate_slices(): + yield StreamSlice( + partition={}, + cursor_slice={ + "start_date": slice_start.isoformat(timespec="milliseconds"), + "end_date": slice_end.isoformat(timespec="milliseconds"), + }, ) - self.logger.warning(f"Not wait the {self.name} data for {self.DEFAULT_WAIT_TIMEOUT_SECONDS} seconds, data: {job_info}!!") - return job_status - def _extract_error_code_and_message(self, response: requests.Response) -> tuple[Optional[str], str]: - try: - error_data = response.json()[0] - return error_data.get("errorCode"), error_data.get("message", "") - except exceptions.JSONDecodeError: - self.logger.warning(f"The response for `{response.request.url}` is not a JSON but was `{response.content}`") - except IndexError: - self.logger.warning( - f"The response for `{response.request.url}` was expected to be a list with at least one element but was `{response.content}`" +class BulkParentStreamStreamSlicer(StreamSlicer): + def __init__( + self, + batched_substream: BatchedSubStream, + sync_mode: SyncMode, + cursor_field: Optional[List[str]], + stream_state: Optional[Mapping[str, Any]], + parend_id_field: str, + ) -> None: + self._batched_substream = batched_substream + self._sync_mode = sync_mode + self._cursor_field = cursor_field + self._stream_state = stream_state + self._parend_id_field = parend_id_field + + def get_request_params( + self, + *, + stream_state: Optional[StreamState] = None, + stream_slice: Optional[StreamSlice] = None, + next_page_token: Optional[Mapping[str, Any]] = None, + ) -> Mapping[str, Any]: + return {} + + def get_request_headers( + self, + *, + stream_state: Optional[StreamState] = None, + stream_slice: Optional[StreamSlice] = None, + next_page_token: Optional[Mapping[str, Any]] = None, + ) -> Mapping[str, Any]: + return {} + + def get_request_body_data( + self, + *, + stream_state: Optional[StreamState] = None, + stream_slice: Optional[StreamSlice] = None, + next_page_token: Optional[Mapping[str, Any]] = None, + ) -> Union[Mapping[str, Any], str]: + return {} + + def get_request_body_json( + self, + *, + stream_state: Optional[StreamState] = None, + stream_slice: Optional[StreamSlice] = None, + next_page_token: Optional[Mapping[str, Any]] = None, + ) -> Mapping[str, Any]: + return {} + + def stream_slices(self) -> Iterable[StreamSlice]: + for batched_parents in self._batched_substream.stream_slices( + sync_mode=self._sync_mode, cursor_field=self._cursor_field, stream_state=self._stream_state + ): + yield StreamSlice( + partition={"parents": [parent[self._parend_id_field] for parent in batched_parents["parents"]]}, cursor_slice={} ) - return None, "" - - def execute_job(self, query: str, url: str) -> Tuple[Optional[str], Optional[str]]: - job_status = "Failed" - for i in range(0, self.MAX_RETRY_NUMBER): - job_id = self.create_stream_job(query=query, url=url) - if not job_id: - return None, job_status - job_full_url = f"{url}/{job_id}" - self.logger.info(f"Job: {self.name}/{job_id} created, Job Full Url: {job_full_url}") - job_status = self.wait_for_job(url=job_full_url) - if job_status not in ["UploadComplete", "InProgress"]: - break - self.logger.error(f"Waiting error. Try to run this job again {i + 1}/{self.MAX_RETRY_NUMBER}...") - self.abort_job(url=job_full_url) - job_status = "Aborted" - if job_status in ["Aborted", "Failed"]: - self.delete_job(url=job_full_url) - return None, job_status - return job_full_url, job_status +class BulkSalesforceStream(SalesforceStream): + def __init__(self, **kwargs) -> None: + self._stream_slicer_cursor = None + self._switch_from_bulk_to_rest = False + self._rest_stream = None + super().__init__(**kwargs) - def filter_null_bytes(self, b: bytes): + def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]: """ - https://github.com/airbytehq/airbyte/issues/8300 + This method needs to be there as `HttpStream.next_page_token` is abstract but it will never get called """ - res = b.replace(b"\x00", b"") - if len(res) < len(b): - self.logger.warning("Filter 'null' bytes from string, size reduced %d -> %d chars", len(b), len(res)) - return res + pass - def get_response_encoding(self, headers) -> str: - """Returns encodings from given HTTP Header Dict. - - :param headers: dictionary to extract encoding from. - :rtype: str + def path(self, next_page_token: Mapping[str, Any] = None, **kwargs: Any) -> str: """ + This method needs to be there as `HttpStream.path` is abstract but it will never get called + """ + pass - content_type = headers.get("content-type") - - if not content_type: - return self.encoding - - content_type, params = requests.utils._parse_content_type_header(content_type) - - if "charset" in params: - return params["charset"].strip("'\"") - - return self.encoding - - @default_backoff_handler( - max_tries=5, retry_on=RESPONSE_CONSUMPTION_EXCEPTIONS - ) # We need the default_backoff_handler here because the HttpClient does not handle errors during the streaming of the response - def download_data(self, url: str, chunk_size: int = 1024) -> tuple[str, str, dict]: + def _instantiate_declarative_stream(self, stream_slicer: StreamSlicer, has_bulk_parent: bool) -> None: """ - Retrieves binary data result from successfully `executed_job`, using chunks, to avoid local memory limitations. - @ url: string - the url of the `executed_job` - @ chunk_size: int - the buffer size for each chunk to fetch from stream, in bytes, default: 1024 bytes - Return the tuple containing string with file path of downloaded binary data (Saved temporarily) and file encoding. + For streams with a replication key and where filtering is supported, we need to have the cursor in order to instantiate the + DeclarativeStream hence why this isn't called in the __init__ """ - # set filepath for binary data from response - tmp_file = str(uuid.uuid4()) - _, streamed_response = self._http_client.send_request( - "GET", url, headers={"Accept-Encoding": "gzip"}, request_kwargs={"stream": True} + config = {} + parameters = {} + url_base = self.sf_api.instance_url + job_query_path = f"/services/data/{self.sf_api.version}/jobs/query" + decoder = JsonDecoder(parameters=parameters) + authenticator = BearerAuthenticator( + token_provider=InterpolatedStringTokenProvider(api_token=self.sf_api.access_token, config=config, parameters=parameters), + config=config, + parameters=parameters, + ) + error_handler = SalesforceErrorHandler() + select_fields = self.get_query_select_fields() + query = f"SELECT {select_fields} FROM {self.name}" # FIXME "def request_params" is also handling `next_token` (I don't know why, I think it's always None) and parent streams + if self.cursor_field: + where_in_query = '{{ " WHERE " if stream_slice["start_date"] or stream_slice["end_date"] else "" }}' + lower_boundary_interpolation = ( + '{{ "' f"{self.cursor_field}" ' >= " + stream_slice["start_date"] if stream_slice["start_date"] else "" }}' + ) + and_keyword_interpolation = '{{" AND " if stream_slice["start_date"] and stream_slice["end_date"] else "" }}' + upper_boundary_interpolation = ( + '{{ "' f"{self.cursor_field}" ' < " + stream_slice["end_date"] if stream_slice["end_date"] else "" }}' + ) + query = query + where_in_query + lower_boundary_interpolation + and_keyword_interpolation + upper_boundary_interpolation + elif isinstance(stream_slicer, BulkParentStreamStreamSlicer): + where_in_query = " WHERE ContentDocumentId IN ('" + parents_interpolation = '{{ "\', \'".join(stream_slice["parents"]) }}' + closing_parenthesis = "')" + query = query + where_in_query + parents_interpolation + closing_parenthesis + creation_requester = HttpRequester( + name=f"{self.name} - creation requester", + url_base=url_base, + path=job_query_path, + authenticator=authenticator, + error_handler=error_handler, + http_method=HttpMethod.POST, + request_options_provider=InterpolatedRequestOptionsProvider( + request_body_data=None, + request_body_json={ + "operation": "queryAll", + "query": query, + "contentType": "CSV", + "columnDelimiter": "COMMA", + "lineEnding": "LF", + }, + request_headers=None, + request_parameters=None, + config=config, + parameters=parameters, + ), + config=config, + parameters=parameters, + disable_retries=False, + message_repository=self._message_repository, + use_cache=False, + decoder=decoder, + stream_response=False, + ) + polling_id_interpolation = "{{stream_slice['create_job_response'].json()['id'] }}" + polling_requester = HttpRequester( + name=f"{self.name} - polling requester", + url_base=url_base, + path=f"{job_query_path}/{polling_id_interpolation}", + authenticator=authenticator, + error_handler=error_handler, + http_method=HttpMethod.GET, + request_options_provider=InterpolatedRequestOptionsProvider( + request_body_data=None, + request_body_json=None, + request_headers=None, + request_parameters=None, + config=config, + parameters=parameters, + ), + config=config, + parameters=parameters, + disable_retries=False, + message_repository=self._message_repository, + use_cache=False, + decoder=decoder, + stream_response=False, + ) + # "GET", url, headers = {"Accept-Encoding": "gzip"}, request_kwargs = {"stream": True} + download_id_interpolation = "{{stream_slice['url']}}" + job_download_components_name = f"{self.name} - download requester" + download_requester = HttpRequester( + name=job_download_components_name, + url_base=url_base, + path=f"{job_query_path}/{download_id_interpolation}/results", + authenticator=authenticator, + error_handler=error_handler, + http_method=HttpMethod.GET, + request_options_provider=InterpolatedRequestOptionsProvider( + request_body_data=None, + request_body_json=None, + request_headers={"Accept-Encoding": "gzip"}, + request_parameters=None, + config=config, + parameters=parameters, + ), + config=config, + parameters=parameters, + disable_retries=False, + message_repository=self._message_repository, + use_cache=False, + stream_response=True, + ) + download_retriever = SimpleRetriever( + requester=download_requester, + record_selector=RecordSelector( + extractor=ResponseToFileExtractor(), + record_filter=None, + transformations=[], + schema_normalization=TypeTransformer(TransformConfig.NoTransform), + config=config, + parameters={}, + ), + primary_key=None, + name=job_download_components_name, + paginator=DefaultPaginator( + decoder=NoopDecoder(), + page_size_option=None, + page_token_option=RequestOption( + field_name="locator", + inject_into=RequestOptionType.request_parameter, + parameters={}, + ), + pagination_strategy=CursorPaginationStrategy( + cursor_value="{{ headers['Sforce-Locator'] }}", + stop_condition="{{ headers.get('Sforce-Locator', None) == 'null' or not headers.get('Sforce-Locator', None) }}", + decoder=NoopDecoder(), + config=config, + parameters={}, + ), + url_base=url_base, + config=config, + parameters={}, + ), + config=config, + parameters={}, ) - with closing(streamed_response) as response, open(tmp_file, "wb") as data_file: - response_headers = response.headers - response_encoding = self.get_response_encoding(response_headers) - for chunk in response.iter_content(chunk_size=chunk_size): - data_file.write(self.filter_null_bytes(chunk)) - # check the file exists - if os.path.isfile(tmp_file): - return tmp_file, response_encoding, response_headers - else: - raise TmpFileIOError(f"The IO/Error occured while verifying binary data. Stream: {self.name}, file {tmp_file} doesn't exist.") - def read_with_chunks(self, path: str, file_encoding: str, chunk_size: int = 100) -> Iterable[Tuple[int, Mapping[str, Any]]]: - """ - Reads the downloaded binary data, using lines chunks, set by `chunk_size`. - @ path: string - the path to the downloaded temporarily binary data. - @ file_encoding: string - encoding for binary data file according to Standard Encodings from codecs module - @ chunk_size: int - the number of lines to read at a time, default: 100 lines / time. - """ - try: - with open(path, "r", encoding=file_encoding) as data: - chunks = pd.read_csv(data, chunksize=chunk_size, iterator=True, dialect="unix", dtype=object) - for chunk in chunks: - chunk = chunk.replace({nan: None}).to_dict(orient="records") - for row in chunk: - yield row - except pd.errors.EmptyDataError as e: - self.logger.info(f"Empty data received. {e}") - yield from [] - except IOError as ioe: - raise TmpFileIOError(f"The IO/Error occured while reading tmp data. Called: {path}. Stream: {self.name}", ioe) - finally: - # remove binary tmp file, after data is read - os.remove(path) - - def abort_job(self, url: str): - data = {"state": "Aborted"} - self._send_http_request("PATCH", url=url, json=data) - self.logger.warning("Broken job was aborted") - - def delete_job(self, url: str): - self._send_http_request("DELETE", url=url) + abort_requester = HttpRequester( + name=f"{self.name} - abort requester", + url_base=url_base, + path=f"{job_query_path}/{polling_id_interpolation}", + authenticator=authenticator, + error_handler=error_handler, + http_method=HttpMethod.PATCH, + request_options_provider=InterpolatedRequestOptionsProvider( + request_body_data=None, + request_body_json={"state": "Aborted"}, + request_headers=None, + request_parameters=None, + config=config, + parameters=parameters, + ), + config=config, + parameters=parameters, + disable_retries=False, + message_repository=self._message_repository, + use_cache=False, + stream_response=False, + ) + delete_requester = HttpRequester( + name=f"{self.name} - delete requester", + url_base=url_base, + path=f"{job_query_path}/{polling_id_interpolation}", + authenticator=authenticator, + error_handler=error_handler, + http_method=HttpMethod.DELETE, + request_options_provider=None, + config=config, + parameters=parameters, + disable_retries=False, + message_repository=self._message_repository, + use_cache=False, + stream_response=False, + ) + status_extractor = DpathExtractor(decoder=JsonDecoder(parameters={}), field_path=["state"], config={}, parameters={}) + urls_extractor = DpathExtractor(decoder=JsonDecoder(parameters={}), field_path=["id"], config={}, parameters={}) + job_repository = AsyncHttpJobRepository( + creation_requester=creation_requester, + polling_requester=polling_requester, + download_retriever=download_retriever, + abort_requester=abort_requester, + delete_requester=delete_requester, + status_extractor=status_extractor, + status_mapping={ + "InProgress": AsyncJobStatus.RUNNING, + "UploadComplete": AsyncJobStatus.RUNNING, + "JobComplete": AsyncJobStatus.COMPLETED, + "Aborted": AsyncJobStatus.FAILED, + "Failed": AsyncJobStatus.FAILED, + }, + urls_extractor=urls_extractor, + job_timeout=self.DEFAULT_WAIT_TIMEOUT, + ) + record_selector = RecordSelector( + extractor=None, # FIXME typing won't like that but it is not used + record_filter=None, + transformations=[], + schema_normalization=self.transformer, + config=config, + parameters=parameters, + ) + self._bulk_job_stream = DeclarativeStream( + retriever=AsyncRetriever( + config={}, + parameters={}, + record_selector=record_selector, + stream_slicer=stream_slicer, + job_orchestrator_factory=lambda stream_slices: AsyncJobOrchestrator( + job_repository, + stream_slices, + self._job_tracker, + self._message_repository, + exceptions_to_break_on=[BulkNotSupportedException], + has_bulk_parent=has_bulk_parent, + ), + ), + config={}, + parameters={}, + name=self.name, + primary_key=self.pk, + schema_loader=InlineSchemaLoader({}, {}), # FIXME call get_json_schema? + # the interface mentions that this is Optional, + # but I get `'NoneType' object has no attribute 'eval'` by passing None + stream_cursor_field="", + ) - @property - def availability_strategy(self) -> Optional["AvailabilityStrategy"]: - return None + DEFAULT_WAIT_TIMEOUT = timedelta(hours=24) + MAX_CHECK_INTERVAL_SECONDS = 2.0 + MAX_RETRY_NUMBER = 3 - def next_page_token(self, last_record: Mapping[str, Any]) -> Optional[Mapping[str, Any]]: - return None + transformer = TypeTransformer(TransformConfig.CustomSchemaNormalization | TransformConfig.DefaultSchemaNormalization) def get_query_select_fields(self) -> str: return ", ".join( @@ -606,54 +795,36 @@ def read_records( stream_state: Mapping[str, Any] = None, call_count: int = 0, ) -> Iterable[Mapping[str, Any]]: - stream_state = stream_state or {} - next_page_token = None - - params = self.request_params(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token) - path = self.path(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token) - job_full_url, job_status = self.execute_job(query=params["q"], url=f"{self.url_base}{path}") - if not job_full_url: - if job_status == "Failed": - # As rule as BULK logic returns unhandled error. For instance: - # error message: 'Unexpected exception encountered in query processing. - # Please contact support with the following id: 326566388-63578 (-436445966)'" - # Thus we can try to switch to GET sync request because its response returns obvious error message - standard_instance = self.get_standard_instance() - self.logger.warning("switch to STANDARD(non-BULK) sync. Because the SalesForce BULK job has returned a failed status") - stream_is_available, error = standard_instance.check_availability(self.logger, None) - if not stream_is_available: - self.logger.warning(f"Skipped syncing stream '{standard_instance.name}' because it was unavailable. Error: {error}") - return - yield from standard_instance.read_records( - sync_mode=sync_mode, cursor_field=cursor_field, stream_slice=stream_slice, stream_state=stream_state - ) - return - raise SalesforceException(f"Job for {self.name} stream using BULK API was failed.") - salesforce_bulk_api_locator = None - while True: - req = PreparedRequest() - req.prepare_url(f"{job_full_url}/results", {"locator": salesforce_bulk_api_locator}) - try: - tmp_file, response_encoding, response_headers = self.download_data(url=req.url) - except TRANSIENT_EXCEPTIONS as exception: - # We have seen some cases where pulling the job result's data would simply not work even with the retry on `download_data`. - # Those cases have unfortunately not been documented and we are unsure of the efficacy of retrying the whole job as we have - # done multiple reliability change without tracking the efficacy of each. - if call_count >= _JOB_TRANSIENT_ERRORS_MAX_RETRY: - self.logger.error(f"Downloading data failed even after {call_count} retries. Stopping retry and raising exception") - raise exception - self.logger.warning(f"Downloading data failed after {call_count} retries. Retrying the whole job...") - call_count += 1 - yield from self.read_records(sync_mode, cursor_field, stream_slice, stream_state, call_count=call_count) - return - - for record in self.read_with_chunks(tmp_file, response_encoding): - yield record - - if response_headers.get("Sforce-Locator", "null") == "null": - break - salesforce_bulk_api_locator = response_headers.get("Sforce-Locator") - self.delete_job(url=job_full_url) + if self._is_async_job_slice(stream_slice): + if self._switch_from_bulk_to_rest: + # ignore as we have switched to rest + pass + else: + yield from self._bulk_job_stream.read_records(sync_mode, cursor_field, stream_slice, stream_state) + else: + yield from self._rest_stream.read_records(sync_mode, cursor_field, stream_slice, stream_state) + + def _is_async_job_slice(self, stream_slice): + return isinstance(stream_slice, StreamSlice) and "partition" in stream_slice.partition + + def stream_slices( + self, *, sync_mode: SyncMode, cursor_field: Optional[List[str]] = None, stream_state: Optional[Mapping[str, Any]] = None + ) -> Iterable[Optional[Mapping[str, Any]]]: + self._instantiate_declarative_stream(BulkDatetimeStreamSlicer(self._stream_slicer_cursor), has_bulk_parent=False) + try: + yield from self._bulk_job_stream.stream_slices(sync_mode=sync_mode, cursor_field=cursor_field, stream_state=stream_state) + except BulkNotSupportedException: + self.logger.warning( + "attempt to switch to STANDARD(non-BULK) sync. Because the SalesForce BULK job has returned a failed status" + ) + self._switch_from_bulk_to_rest = True + self._rest_stream = self.get_standard_instance() + stream_is_available, error = SalesforceAvailabilityStrategy().check_availability(self._rest_stream, self.logger, None) + if not stream_is_available: + self.logger.warning(f"Skipped syncing stream '{self._rest_stream.name}' because it was unavailable. Error: {error}") + yield from [] + else: + yield from self._rest_stream.stream_slices(sync_mode=sync_mode, cursor_field=cursor_field, stream_state=stream_state) def get_standard_instance(self) -> SalesforceStream: """Returns a instance of standard logic(non-BULK) with same settings""" @@ -663,7 +834,9 @@ def get_standard_instance(self) -> SalesforceStream: stream_name=self.stream_name, schema=self.schema, sobject_options=self.sobject_options, - authenticator=self._session.auth, + authenticator=self._http_client._session.auth, + job_tracker=self._job_tracker, + message_repository=self._message_repository, ) new_cls: Type[SalesforceStream] = RestSalesforceStream if isinstance(self, BulkIncrementalSalesforceStream): @@ -677,7 +850,16 @@ def get_standard_instance(self) -> SalesforceStream: class BulkSalesforceSubStream(BatchedSubStream, BulkSalesforceStream): - pass + def stream_slices( + self, sync_mode: SyncMode, cursor_field: Optional[List[str]] = None, stream_state: Optional[Mapping[str, Any]] = None + ) -> Iterable[Optional[Mapping[str, Any]]]: + self._instantiate_declarative_stream( + BulkParentStreamStreamSlicer( + super(BulkSalesforceSubStream, self), sync_mode, cursor_field, stream_state, PARENT_SALESFORCE_OBJECTS[self.name]["field"] + ), + has_bulk_parent=True, + ) + yield from self._bulk_job_stream.stream_slices(sync_mode=sync_mode, cursor_field=cursor_field, stream_state=stream_state) @BulkSalesforceStream.transformer.registerCustomTransform @@ -697,13 +879,13 @@ class IncrementalRestSalesforceStream(RestSalesforceStream, CheckpointMixin, ABC _slice = None def __init__(self, replication_key: str, stream_slice_step: str = "P30D", **kwargs): - super().__init__(**kwargs) self.replication_key = replication_key + super().__init__(**kwargs) self._stream_slice_step = stream_slice_step self._stream_slicer_cursor = None self._state = {} - def set_cursor(self, cursor: Cursor) -> None: + def set_cursor(self, cursor: ConcurrentCursor) -> None: self._stream_slicer_cursor = cursor def stream_slices( diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/api_test.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/api_test.py index 65efdd9b16af1..1a59386a1b952 100644 --- a/airbyte-integrations/connectors/source-salesforce/unit_tests/api_test.py +++ b/airbyte-integrations/connectors/source-salesforce/unit_tests/api_test.py @@ -8,19 +8,18 @@ import re from datetime import datetime, timedelta from typing import List -from unittest.mock import Mock, patch +from unittest.mock import Mock import freezegun -import pendulum import pytest import requests_mock from airbyte_cdk.models import ( AirbyteStateBlob, AirbyteStream, ConfiguredAirbyteCatalog, + ConfiguredAirbyteCatalogSerializer, ConfiguredAirbyteStream, DestinationSyncMode, - StreamDescriptor, SyncMode, Type, ) @@ -29,8 +28,8 @@ from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.state_builder import StateBuilder from airbyte_cdk.utils import AirbyteTracedException -from conftest import encoding_symbols_parameters, generate_stream -from requests.exceptions import ChunkedEncodingError +from config_builder import ConfigBuilder +from conftest import generate_stream from salesforce_job_response_builder import JobInfoResponseBuilder from source_salesforce.api import Salesforce from source_salesforce.source import SourceSalesforce @@ -52,7 +51,7 @@ _NUMBER_OF_DOWNLOAD_TRIES = 5 _FIRST_CALL_FROM_JOB_CREATION = 1 -_ANY_CATALOG = ConfiguredAirbyteCatalog.parse_obj({"streams": []}) +_ANY_CATALOG = ConfiguredAirbyteCatalogSerializer.load({"streams": []}) _ANY_CONFIG = {} _ANY_STATE = None @@ -115,41 +114,6 @@ def test_login_authentication_error_handler( assert err.value.message == expected_error_msg -def test_bulk_sync_creation_failed(stream_config, stream_api): - stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - with requests_mock.Mocker() as m: - m.register_uri("POST", stream.path(), status_code=400, json=[{"message": "test_error"}]) - with pytest.raises(AirbyteTracedException) as err: - stream_slices = next(iter(stream.stream_slices(sync_mode=SyncMode.incremental))) - next(stream.read_records(sync_mode=SyncMode.full_refresh, stream_slice=stream_slices)) - assert "test_error" in str(err.value.message) - - -def test_bulk_stream_fallback_to_rest(mocker, requests_mock, stream_config, stream_api): - """ - Here we mock BULK API with response returning error, saying BULK is not supported for this kind of entity. - On the other hand, we mock REST API for this same entity with a successful response. - After having instantiated a BulkStream, sync should succeed in case it falls back to REST API. Otherwise it would throw an error. - """ - stream = generate_stream("CustomEntity", stream_config, stream_api) - # mock a BULK API - requests_mock.register_uri( - "POST", - "https://fase-account.salesforce.com/services/data/v57.0/jobs/query", - status_code=400, - json=[{"errorCode": "INVALIDENTITY", "message": "CustomEntity is not supported by the Bulk API"}], - ) - rest_stream_records = [ - {"id": 1, "name": "custom entity", "created": "2010-11-11"}, - {"id": 11, "name": "custom entity", "created": "2020-01-02"}, - ] - # mock REST API - mocker.patch("source_salesforce.source.RestSalesforceStream.read_records", lambda *args, **kwargs: iter(rest_stream_records)) - assert type(stream) is BulkIncrementalSalesforceStream - stream_slices = next(iter(stream.stream_slices(sync_mode=SyncMode.incremental))) - assert list(stream.read_records(sync_mode=SyncMode.full_refresh, stream_slice=stream_slices)) == rest_stream_records - - def test_stream_unsupported_by_bulk(stream_config, stream_api): """ Stream `AcceptedEventRelation` is not supported by BULK API, so that REST API stream will be used for it. @@ -171,40 +135,31 @@ def test_stream_contains_unsupported_properties_by_bulk(stream_config, stream_ap def _prepare_mock(m, stream): job_id = "fake_job_1" - m.register_uri("POST", stream.path(), json={"id": job_id}) - m.register_uri("DELETE", stream.path() + f"/{job_id}") - m.register_uri("GET", stream.path() + f"/{job_id}/results", text="Field1,LastModifiedDate,ID\ntest,2021-11-16,1") - m.register_uri("PATCH", stream.path() + f"/{job_id}", text="") + m.register_uri("POST", _bulk_stream_path(), json={"id": job_id}) + m.register_uri("DELETE", _bulk_stream_path() + f"/{job_id}") + m.register_uri("GET", _bulk_stream_path() + f"/{job_id}/results", text="Field1,LastModifiedDate,ID\ntest,2021-11-16,1") + m.register_uri("PATCH", _bulk_stream_path() + f"/{job_id}", text="") return job_id +def _bulk_stream_path() -> str: + return f"/services/data/v57.0/jobs/query" + + def _get_result_id(stream): stream_slices = next(iter(stream.stream_slices(sync_mode=SyncMode.incremental))) return int(list(stream.read_records(sync_mode=SyncMode.full_refresh, stream_slice=stream_slices))[0]["ID"]) -def test_bulk_sync_successful_long_response(stream_config, stream_api): - stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - with requests_mock.Mocker() as m: - job_id = _prepare_mock(m, stream) - m.register_uri( - "GET", - stream.path() + f"/{job_id}", - [ - {"json": {"state": "UploadComplete", "id": job_id}}, - {"json": {"state": "InProgress", "id": job_id}}, - {"json": {"state": "JobComplete", "id": job_id}}, - ], - ) - assert _get_result_id(stream) == 1 - - # maximum timeout is wait_timeout * max_retry_attempt # this test tries to check a job state 17 times with +-1second for very one @pytest.mark.timeout(17) +@freezegun.freeze_time("2023-01-07") def test_bulk_sync_successful_retry(stream_config, stream_api): + # setting the test to only have one slice + stream_config = ConfigBuilder().start_date(datetime.fromisoformat("2023-01-01T00:00:00+00:00")).stream_slice_step("P100D").build() stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - stream.DEFAULT_WAIT_TIMEOUT_SECONDS = 6 # maximum wait timeout will be 6 seconds + stream.DEFAULT_WAIT_TIMEOUT = timedelta(seconds=6) with requests_mock.Mocker() as m: job_id = _prepare_mock(m, stream) @@ -212,21 +167,22 @@ def test_bulk_sync_successful_retry(stream_config, stream_api): states = [{"json": {"state": "InProgress", "id": job_id}}] * 17 states.append({"json": {"state": "JobComplete", "id": job_id}}) # raise Exception(states) - m.register_uri("GET", stream.path() + f"/{job_id}", states) + m.register_uri("GET", _bulk_stream_path() + f"/{job_id}", states) assert _get_result_id(stream) == 1 @pytest.mark.timeout(30) def test_bulk_sync_failed_retry(stream_config, stream_api): + stream_config = ConfigBuilder().start_date(datetime.now() - timedelta(days=5)).stream_slice_step("P100D").build() stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - stream.DEFAULT_WAIT_TIMEOUT_SECONDS = 6 # maximum wait timeout will be 6 seconds + stream.DEFAULT_WAIT_TIMEOUT = timedelta(seconds=1) with requests_mock.Mocker() as m: job_id = _prepare_mock(m, stream) - m.register_uri("GET", stream.path() + f"/{job_id}", json={"state": "InProgress", "id": job_id}) + m.register_uri("GET", _bulk_stream_path() + f"/{job_id}", json={"state": "InProgress", "id": job_id}) with pytest.raises(Exception) as err: stream_slices = next(iter(stream.stream_slices(sync_mode=SyncMode.incremental))) next(stream.read_records(sync_mode=SyncMode.full_refresh, stream_slice=stream_slices)) - assert "stream using BULK API was failed" in str(err.value) + assert "At least one job could not be completed" in str(err.value.internal_message) @pytest.mark.parametrize( @@ -262,71 +218,6 @@ def test_stream_start_datetime_format_should_not_changed(stream_config, stream_a assert stream.start_date == "2010-01-18T21:18:20Z" -def test_download_data_filter_null_bytes(stream_config, stream_api): - job_full_url_results: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA/results" - stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - - with requests_mock.Mocker() as m: - m.register_uri("GET", job_full_url_results, content=b"\x00") - tmp_file, response_encoding, _ = stream.download_data(url=job_full_url_results) - res = list(stream.read_with_chunks(tmp_file, response_encoding)) - assert res == [] - - m.register_uri("GET", job_full_url_results, content=b'"Id","IsDeleted"\n\x00"0014W000027f6UwQAI","false"\n\x00\x00') - tmp_file, response_encoding, _ = stream.download_data(url=job_full_url_results) - res = list(stream.read_with_chunks(tmp_file, response_encoding)) - assert res == [{"Id": "0014W000027f6UwQAI", "IsDeleted": "false"}] - - -def test_read_with_chunks_should_return_only_object_data_type(stream_config, stream_api): - job_full_url_results: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA/results" - stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - - with requests_mock.Mocker() as m: - m.register_uri("GET", job_full_url_results, content=b'"IsDeleted","Age"\n"false",24\n') - tmp_file, response_encoding, _ = stream.download_data(url=job_full_url_results) - res = list(stream.read_with_chunks(tmp_file, response_encoding)) - assert res == [{"IsDeleted": "false", "Age": "24"}] - - -def test_read_with_chunks_should_return_a_string_when_a_string_with_only_digits_is_provided(stream_config, stream_api): - job_full_url_results: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA/results" - stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - - with requests_mock.Mocker() as m: - m.register_uri("GET", job_full_url_results, content=b'"ZipCode"\n"01234"\n') - tmp_file, response_encoding, _ = stream.download_data(url=job_full_url_results) - res = list(stream.read_with_chunks(tmp_file, response_encoding)) - assert res == [{"ZipCode": "01234"}] - - -def test_read_with_chunks_should_return_null_value_when_no_data_is_provided(stream_config, stream_api): - job_full_url_results: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA/results" - stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - - with requests_mock.Mocker() as m: - m.register_uri("GET", job_full_url_results, content=b'"IsDeleted","Age","Name"\n"false",,"Airbyte"\n') - tmp_file, response_encoding, _ = stream.download_data(url=job_full_url_results) - res = list(stream.read_with_chunks(tmp_file, response_encoding)) - assert res == [{"IsDeleted": "false", "Age": None, "Name": "Airbyte"}] - - -@pytest.mark.parametrize( - "chunk_size, content_type_header, content, expected_result", - encoding_symbols_parameters(), - ids=[f"charset: {x[1]}, chunk_size: {x[0]}" for x in encoding_symbols_parameters()], -) -def test_encoding_symbols(stream_config, stream_api, chunk_size, content_type_header, content, expected_result): - job_full_url_results: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA/results" - stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - - with requests_mock.Mocker() as m: - m.register_uri("GET", job_full_url_results, headers=content_type_header, content=content) - tmp_file, response_encoding, _ = stream.download_data(url=job_full_url_results) - res = list(stream.read_with_chunks(tmp_file, response_encoding)) - assert res == expected_result - - @pytest.mark.parametrize( "login_status_code, login_json_resp, discovery_status_code, discovery_resp_json, expected_error_msg", ( @@ -366,7 +257,7 @@ def configure_request_params_mock(stream_1, stream_2): def test_pagination_rest(stream_config, stream_api): stream_name = "AcceptedEventRelation" stream: RestSalesforceStream = generate_stream(stream_name, stream_config, stream_api) - stream.DEFAULT_WAIT_TIMEOUT_SECONDS = 6 # maximum wait timeout will be 6 seconds + stream.DEFAULT_WAIT_TIMEOUT = timedelta(seconds=6) next_page_url = "/services/data/v57.0/query/012345" with requests_mock.Mocker() as m: resp_1 = { @@ -406,30 +297,6 @@ def test_pagination_rest(stream_config, stream_api): assert len(records) == 4 -def test_csv_reader_dialect_unix(): - stream: BulkSalesforceStream = BulkSalesforceStream(stream_name=None, sf_api=None, pk=None) - url_results = "https://fake-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA/results" - - data = [ - {"Id": "1", "Name": '"first_name" "last_name"'}, - {"Id": "2", "Name": "'" + 'first_name"\n' + "'" + 'last_name\n"'}, - {"Id": "3", "Name": "first_name last_name"}, - ] - - with io.StringIO("", newline="") as csvfile: - writer = csv.DictWriter(csvfile, fieldnames=["Id", "Name"], dialect="unix") - writer.writeheader() - for line in data: - writer.writerow(line) - text = csvfile.getvalue() - - with requests_mock.Mocker() as m: - m.register_uri("GET", url_results, text=text) - tmp_file, response_encoding, _ = stream.download_data(url=url_results) - result = [i for i in stream.read_with_chunks(tmp_file, response_encoding)] - assert result == data - - @pytest.fixture(name="mocked_response") def _create_mocked_response(): http_response = Mock() @@ -437,42 +304,6 @@ def _create_mocked_response(): return http_response -@patch("source_salesforce.streams.HttpClient") -def test_given_retryable_error_when_download_data_then_retry(mocked_http_client, mocked_response): - mocked_http_client.return_value.send_request.return_value = (Mock(), mocked_response) - mocked_response.iter_content.side_effect = [ChunkedEncodingError(), _A_CHUNKED_RESPONSE] - - BulkSalesforceStream(stream_name=_A_STREAM_NAME, sf_api=Mock(), pk=_A_PK).download_data(url="any url") - - assert mocked_response.iter_content.call_count == 2 - - -@patch("source_salesforce.streams.HttpClient") -def test_given_first_download_fail_when_download_data_then_retry_job_only_once(mocked_http_client, mocked_response): - sf_api = Mock() - sf_api.generate_schema.return_value = JobInfoResponseBuilder().with_state("JobComplete").get_response() - sf_api.instance_url = "http://test_given_first_download_fail_when_download_data_then_retry_job.com" - job_creation_return_values = [_A_JSON_RESPONSE, _A_SUCCESSFUL_JOB_CREATION_RESPONSE] - - mocked_http_client.return_value.send_request.return_value = (Mock(), mocked_response) - mocked_response.json.side_effect = job_creation_return_values * 2 - mocked_response.iter_content.side_effect = ChunkedEncodingError() - - with pytest.raises(Exception): - list(BulkSalesforceStream(stream_name=_A_STREAM_NAME, sf_api=sf_api, pk=_A_PK).read_records(SyncMode.full_refresh)) - - assert mocked_response.json.call_count == len(job_creation_return_values) * 2 - assert mocked_response.iter_content.call_count == _NUMBER_OF_DOWNLOAD_TRIES * 2 - - -@patch("source_salesforce.streams.HttpClient") -def test_given_retryable_error_that_are_not_http_errors_when_create_stream_job_then_retry(mocked_http_client, mocked_response): - mocked_http_client.return_value.send_request.return_value = (Mock(), mocked_response) - mocked_response.json.side_effect = [ChunkedEncodingError(), _A_JSON_RESPONSE] - BulkSalesforceStream(stream_name=_A_STREAM_NAME, sf_api=Mock(), pk=_A_PK).create_stream_job(query="any query", url="any url") - assert mocked_http_client.return_value.send_request.call_count == 2 - - @pytest.mark.parametrize( "stream_names,catalog_stream_names,", ( @@ -712,105 +543,6 @@ def test_stream_with_no_records_in_response(stream_config, stream_api_v2_pk_too_ assert records == [] -@pytest.mark.parametrize( - "status_code,response_json,log_message", - [ - ( - 400, - [{"errorCode": "INVALIDENTITY", "message": "Account is not supported by the Bulk API"}], - "Account is not supported by the Bulk API", - ), - (403, [{"errorCode": "REQUEST_LIMIT_EXCEEDED", "message": "API limit reached"}], "API limit reached"), - (400, [{"errorCode": "API_ERROR", "message": "API does not support query"}], "The stream 'Account' is not queryable,"), - ( - 400, - [{"errorCode": "LIMIT_EXCEEDED", "message": "Max bulk v2 query jobs (10000) per 24 hrs has been reached (10021)"}], - "Your API key for Salesforce has reached its limit for the 24-hour period. We will resume replication once the limit has elapsed.", - ), - ], -) -def test_bulk_stream_error_in_logs_on_create_job(requests_mock, stream_config, stream_api, status_code, response_json, log_message, caplog): - """ """ - stream = generate_stream("Account", stream_config, stream_api) - url = f"{stream.sf_api.instance_url}/services/data/{stream.sf_api.version}/jobs/query" - requests_mock.register_uri( - "POST", - url, - status_code=status_code, - json=response_json, - ) - query = "Select Id, Subject from Account" - with caplog.at_level(logging.ERROR): - assert stream.create_stream_job(query, url) is None, "this stream should be skipped" - - # check logs - assert log_message in caplog.records[-1].message - - -@pytest.mark.parametrize( - "status_code,response_json,error_message", - [ - ( - 400, - [ - { - "errorCode": "TXN_SECURITY_METERING_ERROR", - "message": "We can't complete the action because enabled transaction security policies took too long to complete.", - } - ], - 'A transient authentication error occurred. To prevent future syncs from failing, assign the "Exempt from Transaction Security" user permission to the authenticated user.', - ), - ], -) -def test_bulk_stream_error_on_wait_for_job(requests_mock, stream_config, stream_api, status_code, response_json, error_message): - - stream = generate_stream("Account", stream_config, stream_api) - url = f"{stream.sf_api.instance_url}/services/data/{stream.sf_api.version}/jobs/query/queryJobId" - requests_mock.register_uri( - "GET", - url, - status_code=status_code, - json=response_json, - ) - with pytest.raises(AirbyteTracedException) as e: - stream.wait_for_job(url=url) - assert e.value.message == error_message - - -@freezegun.freeze_time("2023-01-01") -@pytest.mark.parametrize( - "lookback, stream_slice_step, expected_len_stream_slices, expect_error", - [(0, "P30D", 158, False)], - ids=["lookback-is-0-step-30D"], -) -def test_bulk_stream_slices( - stream_config_date_format, stream_api, lookback, expect_error, stream_slice_step: str, expected_len_stream_slices: int -): - stream_config_date_format["stream_slice_step"] = stream_slice_step - with patch("source_salesforce.source.LOOKBACK_SECONDS", lookback): - stream: BulkIncrementalSalesforceStream = generate_stream("FakeBulkStream", stream_config_date_format, stream_api) - if expect_error: - with pytest.raises(AssertionError): - list(stream.stream_slices(sync_mode=SyncMode.full_refresh)) - else: - stream_slices = list(stream.stream_slices(sync_mode=SyncMode.full_refresh)) - - expected_slices = [] - today = pendulum.today(tz="UTC") - start_date = pendulum.parse(stream.start_date, tz="UTC") - timedelta(seconds=lookback) - while start_date < today: - end_date = start_date + stream.stream_slice_step - expected_slices.append( - { - "start_date": start_date.isoformat(timespec="milliseconds"), - "end_date": min(today, end_date).isoformat(timespec="milliseconds"), - } - ) - start_date += stream.stream_slice_step - assert expected_slices == stream_slices - assert len(stream_slices) == expected_len_stream_slices - - @freezegun.freeze_time("2023-04-01") def test_bulk_stream_request_params_states(stream_config_date_format, stream_api, bulk_catalog, requests_mock): """Check that request params ignore records cursor and use start date from slice ONLY""" @@ -825,27 +557,27 @@ def test_bulk_stream_request_params_states(stream_config_date_format, stream_api stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config_date_format, stream_api, state=state, legacy=True) job_id_1 = "fake_job_1" - requests_mock.register_uri("GET", stream.path() + f"/{job_id_1}", [{"json": JobInfoResponseBuilder().with_id(job_id_1).with_state("JobComplete").get_response()}]) - requests_mock.register_uri("DELETE", stream.path() + f"/{job_id_1}") - requests_mock.register_uri("GET", stream.path() + f"/{job_id_1}/results", text="Field1,LastModifiedDate,ID\ntest,2023-01-15,1") - requests_mock.register_uri("PATCH", stream.path() + f"/{job_id_1}") + requests_mock.register_uri("GET", _bulk_stream_path() + f"/{job_id_1}", [{"json": JobInfoResponseBuilder().with_id(job_id_1).with_state("JobComplete").get_response()}]) + requests_mock.register_uri("DELETE", _bulk_stream_path() + f"/{job_id_1}") + requests_mock.register_uri("GET", _bulk_stream_path() + f"/{job_id_1}/results", text="Field1,LastModifiedDate,ID\ntest,2023-01-15,1") + requests_mock.register_uri("PATCH", _bulk_stream_path() + f"/{job_id_1}") job_id_2 = "fake_job_2" - requests_mock.register_uri("GET", stream.path() + f"/{job_id_2}", [{"json": JobInfoResponseBuilder().with_id(job_id_2).with_state("JobComplete").get_response()}]) - requests_mock.register_uri("DELETE", stream.path() + f"/{job_id_2}") + requests_mock.register_uri("GET", _bulk_stream_path() + f"/{job_id_2}", [{"json": JobInfoResponseBuilder().with_id(job_id_2).with_state("JobComplete").get_response()}]) + requests_mock.register_uri("DELETE", _bulk_stream_path() + f"/{job_id_2}") requests_mock.register_uri( - "GET", stream.path() + f"/{job_id_2}/results", text="Field1,LastModifiedDate,ID\ntest,2023-04-01,2\ntest,2023-02-20,22" + "GET", _bulk_stream_path() + f"/{job_id_2}/results", text="Field1,LastModifiedDate,ID\ntest,2023-04-01,2\ntest,2023-02-20,22" ) - requests_mock.register_uri("PATCH", stream.path() + f"/{job_id_2}") + requests_mock.register_uri("PATCH", _bulk_stream_path() + f"/{job_id_2}") job_id_3 = "fake_job_3" queries_history = requests_mock.register_uri( - "POST", stream.path(), [{"json": {"id": job_id_1}}, {"json": {"id": job_id_2}}, {"json": {"id": job_id_3}}] + "POST", _bulk_stream_path(), [{"json": {"id": job_id_1}}, {"json": {"id": job_id_2}}, {"json": {"id": job_id_3}}] ) - requests_mock.register_uri("GET", stream.path() + f"/{job_id_3}", [{"json": JobInfoResponseBuilder().with_id(job_id_3).with_state("JobComplete").get_response()}]) - requests_mock.register_uri("DELETE", stream.path() + f"/{job_id_3}") - requests_mock.register_uri("GET", stream.path() + f"/{job_id_3}/results", text="Field1,LastModifiedDate,ID\ntest,2023-04-01,3") - requests_mock.register_uri("PATCH", stream.path() + f"/{job_id_3}") + requests_mock.register_uri("GET", _bulk_stream_path() + f"/{job_id_3}", [{"json": JobInfoResponseBuilder().with_id(job_id_3).with_state("JobComplete").get_response()}]) + requests_mock.register_uri("DELETE", _bulk_stream_path() + f"/{job_id_3}") + requests_mock.register_uri("GET", _bulk_stream_path() + f"/{job_id_3}/results", text="Field1,LastModifiedDate,ID\ntest,2023-04-01,3") + requests_mock.register_uri("PATCH", _bulk_stream_path() + f"/{job_id_3}") logger = logging.getLogger("airbyte") bulk_catalog.streams.pop(1) @@ -868,9 +600,9 @@ def test_bulk_stream_request_params_states(stream_config_date_format, stream_api ]) # as the execution is concurrent, we can only assert the last state message here - last_actual_state = [item.state.stream.stream_state.dict() for item in result if item.type == Type.STATE][-1] + last_actual_state = [item.state.stream.stream_state for item in result if item.type == Type.STATE][-1] last_expected_state = {"slices": [{"start": "2023-01-01T00:00:00.000Z", "end": "2023-04-01T00:00:00.000Z"}], "state_type": "date-range"} - assert last_actual_state == last_expected_state + assert last_actual_state == AirbyteStateBlob(last_expected_state) def test_request_params_incremental(stream_config_date_format, stream_api): @@ -885,37 +617,3 @@ def test_request_params_substream(stream_config_date_format, stream_api): params = stream.request_params(stream_state={}, stream_slice={"parents": [{"Id": 1}, {"Id": 2}]}) assert params == {"q": "SELECT LastModifiedDate, Id FROM ContentDocumentLink WHERE ContentDocumentId IN ('1','2')"} - - -@freezegun.freeze_time("2023-03-20") -def test_stream_slices_for_substream(stream_config, stream_api, requests_mock): - """Test BulkSalesforceSubStream for ContentDocumentLink (+ parent ContentDocument) - ContentDocument return 1 record for each slice request. - Given start/end date leads to 3 date slice for ContentDocument, thus 3 total records - ContentDocumentLink - It means that ContentDocumentLink should have 2 slices, with 2 and 1 records in each - """ - stream_config["start_date"] = "2023-01-01" - stream: BulkSalesforceSubStream = generate_stream("ContentDocumentLink", stream_config, stream_api) - stream.SLICE_BATCH_SIZE = 2 # each ContentDocumentLink should contain 2 records from parent ContentDocument stream - - job_id = "fake_job" - requests_mock.register_uri("POST", stream.path(), json={"id": job_id}) - requests_mock.register_uri("GET", stream.path() + f"/{job_id}", json=JobInfoResponseBuilder().with_id(job_id).with_state("JobComplete").get_response()) - requests_mock.register_uri( - "GET", - stream.path() + f"/{job_id}/results", - [{"text": "Field1,LastModifiedDate,ID\ntest,2021-11-16,123", "headers": {"Sforce-Locator": "null"}}], - ) - requests_mock.register_uri("DELETE", stream.path() + f"/{job_id}") - - stream_slices = list(stream.stream_slices(sync_mode=SyncMode.full_refresh)) - assert stream_slices == [ - { - "parents": [ - {"Field1": "test", "ID": "123", "LastModifiedDate": "2021-11-16"}, - {"Field1": "test", "ID": "123", "LastModifiedDate": "2021-11-16"}, - ] - }, - {"parents": [{"Field1": "test", "ID": "123", "LastModifiedDate": "2021-11-16"}]}, - ] diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/conftest.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/conftest.py index f2e40adc81a8b..92df1b20876e9 100644 --- a/airbyte-integrations/connectors/source-salesforce/unit_tests/conftest.py +++ b/airbyte-integrations/connectors/source-salesforce/unit_tests/conftest.py @@ -7,14 +7,14 @@ from unittest.mock import Mock import pytest -from airbyte_cdk.models import ConfiguredAirbyteCatalog +from airbyte_cdk.models import AirbyteStateMessage, ConfiguredAirbyteCatalogSerializer +from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import AirbyteStateMessage from config_builder import ConfigBuilder from source_salesforce.api import Salesforce from source_salesforce.source import SourceSalesforce -_ANY_CATALOG = ConfiguredAirbyteCatalog.parse_obj({"streams": []}) +_ANY_CATALOG = CatalogBuilder().build() _ANY_CONFIG = ConfigBuilder().build() _ANY_STATE = StateBuilder().build() @@ -29,14 +29,14 @@ def time_sleep_mock(mocker): def bulk_catalog(): with (pathlib.Path(__file__).parent / "bulk_catalog.json").open() as f: data = json.loads(f.read()) - return ConfiguredAirbyteCatalog.parse_obj(data) + return ConfiguredAirbyteCatalogSerializer.load(data) @pytest.fixture(scope="module") def rest_catalog(): with (pathlib.Path(__file__).parent / "rest_catalog.json").open() as f: data = json.loads(f.read()) - return ConfiguredAirbyteCatalog.parse_obj(data) + return ConfiguredAirbyteCatalogSerializer.load(data) @pytest.fixture(scope="module") @@ -131,39 +131,3 @@ def generate_stream(stream_name, stream_config, stream_api, state=None, legacy=T # we will access the legacy stream through the StreamFacade private field return stream._legacy_stream return stream - - -def encoding_symbols_parameters(): - return ( - [ - (x, {"Content-Type": "text/csv; charset=ISO-8859-1"}, b'"\xc4"\n,"4"\n\x00,"\xca \xfc"', [{"Ä": "4"}, {"Ä": "Ê ü"}]) - for x in range(1, 11) - ] - + [ - ( - x, - {"Content-Type": "text/csv; charset=utf-8"}, - b'"\xd5\x80"\n "\xd5\xaf","\xd5\xaf"\n\x00,"\xe3\x82\x82 \xe3\x83\xa4 \xe3\x83\xa4 \xf0\x9d\x9c\xb5"', - [{"Հ": "կ"}, {"Հ": "も ヤ ヤ 𝜵"}], - ) - for x in range(1, 11) - ] - + [ - ( - x, - {"Content-Type": "text/csv"}, - b'"\xd5\x80"\n "\xd5\xaf","\xd5\xaf"\n\x00,"\xe3\x82\x82 \xe3\x83\xa4 \xe3\x83\xa4 \xf0\x9d\x9c\xb5"', - [{"Հ": "կ"}, {"Հ": "も ヤ ヤ 𝜵"}], - ) - for x in range(1, 11) - ] - + [ - ( - x, - {}, - b'"\xd5\x80"\n "\xd5\xaf","\xd5\xaf"\n\x00,"\xe3\x82\x82 \xe3\x83\xa4 \xe3\x83\xa4 \xf0\x9d\x9c\xb5"', - [{"Հ": "կ"}, {"Հ": "も ヤ ヤ 𝜵"}], - ) - for x in range(1, 11) - ] - ) diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_bulk_stream.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_bulk_stream.py index d1e31e9484839..f4fe9d857a717 100644 --- a/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_bulk_stream.py +++ b/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_bulk_stream.py @@ -1,5 +1,6 @@ # Copyright (c) 2024 Airbyte, Inc., all rights reserved. - +import csv +import io import json import urllib.parse from datetime import datetime, timedelta, timezone @@ -7,17 +8,18 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStreamStatus, SyncMode from airbyte_cdk.test.mock_http import HttpMocker, HttpRequest, HttpResponse -from airbyte_protocol.models import AirbyteStreamStatus, SyncMode from config_builder import ConfigBuilder from integration.test_rest_stream import create_http_request as create_standard_http_request from integration.test_rest_stream import create_http_response as create_standard_http_response from integration.utils import create_base_url, given_authentication, given_stream, read from salesforce_describe_response_builder import SalesforceDescribeResponseBuilder from salesforce_job_response_builder import JobCreateResponseBuilder, JobInfoResponseBuilder -from source_salesforce.streams import LOOKBACK_SECONDS +from source_salesforce.streams import BulkSalesforceStream _A_FIELD_NAME = "a_field" +_ANOTHER_FIELD_NAME = "another_field" _ACCESS_TOKEN = "an_access_token" _CLIENT_ID = "a_client_id" _CLIENT_SECRET = "a_client_secret" @@ -26,13 +28,15 @@ _INCREMENTAL_SCHEMA_BUILDER = SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME).field(_CURSOR_FIELD, "datetime") # re-using same fields as _INCREMENTAL_FIELDS _INSTANCE_URL = "https://instance.salesforce.com" _JOB_ID = "a-job-id" -_LOOKBACK_WINDOW = timedelta(seconds=LOOKBACK_SECONDS) +_ANOTHER_JOB_ID = "another-job-id" _NOW = datetime.now(timezone.utc) _REFRESH_TOKEN = "a_refresh_token" _METHOD_FAILURE_HTTP_STATUS = 420 _RETRYABLE_RESPONSE = HttpResponse("{}", _METHOD_FAILURE_HTTP_STATUS) # TODO: document what the body actually is on 420 errors _SECOND_PAGE_LOCATOR = "second-page-locator" _STREAM_NAME = "a_stream_name" +_STREAM_WITH_PARENT_NAME = "ContentDocumentLink" +_PARENT_STREAM_NAME = "ContentDocument" _BASE_URL = create_base_url(_INSTANCE_URL) @@ -55,7 +59,24 @@ def _calculate_start_time(start_time: datetime) -> datetime: return start_time.replace(microsecond=0) -@freezegun.freeze_time(_NOW.isoformat()) +def _build_job_creation_request(query: str) -> HttpRequest: + return HttpRequest(f"{_BASE_URL}/jobs/query", body=json.dumps({ + "operation": "queryAll", + "query": query, + "contentType": "CSV", + "columnDelimiter": "COMMA", + "lineEnding": "LF" + })) + + +def _make_sliced_job_request(lower_boundary: datetime, upper_boundary: datetime, fields: List[str]) -> HttpRequest: + return _build_job_creation_request(f"SELECT {', '.join(fields)} FROM a_stream_name WHERE SystemModstamp >= {lower_boundary.isoformat(timespec='milliseconds')} AND SystemModstamp < {upper_boundary.isoformat(timespec='milliseconds')}") + + +def _make_full_job_request(fields: List[str]) -> HttpRequest: + return _build_job_creation_request(f"SELECT {', '.join(fields)} FROM a_stream_name") + + class BulkStreamTest(TestCase): def setUp(self) -> None: @@ -65,14 +86,17 @@ def setUp(self) -> None: self._http_mocker.__enter__() given_authentication(self._http_mocker, _CLIENT_ID, _CLIENT_SECRET, _REFRESH_TOKEN, _INSTANCE_URL, _ACCESS_TOKEN) + self._timeout = BulkSalesforceStream.DEFAULT_WAIT_TIMEOUT def tearDown(self) -> None: self._http_mocker.__exit__(None, None, None) + BulkSalesforceStream.DEFAULT_WAIT_TIMEOUT = self._timeout + @freezegun.freeze_time(_NOW.isoformat()) def test_when_read_then_create_job_and_extract_records_from_result(self) -> None: given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), JobCreateResponseBuilder().with_id(_JOB_ID).build(), ) self._http_mocker.get( @@ -87,16 +111,142 @@ def test_when_read_then_create_job_and_extract_records_from_result(self) -> None HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}/results"), HttpResponse(f"{_A_FIELD_NAME}\nfield_value"), ) + delete_request = self._mock_delete_job(_JOB_ID) + + output = read(_STREAM_NAME, SyncMode.full_refresh, self._config) + + assert len(output.records) == 1 + self._http_mocker.assert_number_of_calls(delete_request, 1) + + @freezegun.freeze_time(_NOW.isoformat()) + def test_given_null_bytes_when_read_then_remove_null_bytes(self) -> None: + given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) + self._http_mocker.post( + _make_full_job_request([_A_FIELD_NAME]), + JobCreateResponseBuilder().with_id(_JOB_ID).build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}"), + [ + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("JobComplete").build(), + ], + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}/results"), + HttpResponse(b'"a_field"\n\x00"001\x004W000027f6UwQAI"\n\x00\x00'.decode()), + ) self._mock_delete_job(_JOB_ID) output = read(_STREAM_NAME, SyncMode.full_refresh, self._config) assert len(output.records) == 1 + assert output.records[0].record.data[_A_FIELD_NAME] == "0014W000027f6UwQAI" + + @freezegun.freeze_time(_NOW.isoformat()) + def test_given_type_when_read_then_field_is_casted_with_right_type(self) -> None: + given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME, "boolean")) + self._http_mocker.post( + _make_full_job_request([_A_FIELD_NAME]), + JobCreateResponseBuilder().with_id(_JOB_ID).build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}"), + [ + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("JobComplete").build(), + ], + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}/results"), + HttpResponse('"a_field"\ntrue'), + ) + self._mock_delete_job(_JOB_ID) + + output = read(_STREAM_NAME, SyncMode.full_refresh, self._config) + + assert len(output.records) == 1 + assert type(output.records[0].record.data[_A_FIELD_NAME]) == bool + + @freezegun.freeze_time(_NOW.isoformat()) + def test_given_no_data_provided_when_read_then_field_is_none(self) -> None: + given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME).field(_ANOTHER_FIELD_NAME)) + self._http_mocker.post( + _make_full_job_request([_A_FIELD_NAME, _ANOTHER_FIELD_NAME]), + JobCreateResponseBuilder().with_id(_JOB_ID).build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}"), + [ + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("JobComplete").build(), + ], + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}/results"), + HttpResponse(f'"{_A_FIELD_NAME}","{_ANOTHER_FIELD_NAME}"\n,"another field value"'), + ) + self._mock_delete_job(_JOB_ID) + + output = read(_STREAM_NAME, SyncMode.full_refresh, self._config) + + assert len(output.records) == 1 + assert _A_FIELD_NAME not in output.records[0].record.data or output.records[0].record.data[_A_FIELD_NAME] is None + + @freezegun.freeze_time(_NOW.isoformat()) + def test_given_csv_unix_dialect_provided_when_read_then_parse_csv_properly(self) -> None: + given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME).field(_ANOTHER_FIELD_NAME)) + self._http_mocker.post( + _make_full_job_request([_A_FIELD_NAME, _ANOTHER_FIELD_NAME]), + JobCreateResponseBuilder().with_id(_JOB_ID).build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}"), + [ + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("JobComplete").build(), + ], + ) + data = [ + {_A_FIELD_NAME: "1", _ANOTHER_FIELD_NAME: '"first_name" "last_name"'}, + {_A_FIELD_NAME: "2", _ANOTHER_FIELD_NAME: "'" + 'first_name"\n' + "'" + 'last_name\n"'}, + {_A_FIELD_NAME: "3", _ANOTHER_FIELD_NAME: "first_name last_name"}, + ] + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}/results"), + HttpResponse(self._create_csv([_A_FIELD_NAME, _ANOTHER_FIELD_NAME], data, "unix")), + ) + self._mock_delete_job(_JOB_ID) + + output = read(_STREAM_NAME, SyncMode.full_refresh, self._config) + + assert len(output.records) == 3 + @freezegun.freeze_time(_NOW.isoformat()) + def test_given_specific_encoding_when_read_then_parse_csv_properly(self) -> None: + given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME).field(_ANOTHER_FIELD_NAME)) + self._http_mocker.post( + _make_full_job_request([_A_FIELD_NAME, _ANOTHER_FIELD_NAME]), + JobCreateResponseBuilder().with_id(_JOB_ID).build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}"), + [ + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("JobComplete").build(), + ], + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}/results"), + HttpResponse(b'"\xc4"\n,"4"\n\x00,"\xca \xfc"'.decode("ISO-8859-1"), headers={"Content-Type": "text/csv; charset=ISO-8859-1"}), + ) + self._mock_delete_job(_JOB_ID) + + output = read(_STREAM_NAME, SyncMode.full_refresh, self._config) + + assert output.records[0].record.data == {"Ä": "4"} + assert output.records[1].record.data == {"Ä": "Ê ü"} + + @freezegun.freeze_time(_NOW.isoformat()) def test_given_locator_when_read_then_extract_records_from_both_pages(self): given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), JobCreateResponseBuilder().with_id(_JOB_ID).build(), ) self._http_mocker.get( @@ -117,10 +267,11 @@ def test_given_locator_when_read_then_extract_records_from_both_pages(self): assert len(output.records) == 2 + @freezegun.freeze_time(_NOW.isoformat()) def test_given_job_creation_have_transient_error_when_read_then_sync_properly(self): given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), [ _RETRYABLE_RESPONSE, JobCreateResponseBuilder().with_id(_JOB_ID).build(), @@ -141,15 +292,38 @@ def test_given_job_creation_have_transient_error_when_read_then_sync_properly(se assert len(output.errors) == 0 assert len(output.records) == 1 - def test_given_bulk_restrictions_when_read_then_switch_to_standard(self): + @freezegun.freeze_time(_NOW.isoformat()) + def test_given_job_polling_have_transient_error_when_read_then_sync_properly(self): given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), + JobCreateResponseBuilder().with_id(_JOB_ID).build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}"), [ - HttpResponse("[{}]", 403), - JobCreateResponseBuilder().with_id(_JOB_ID).build(), + _RETRYABLE_RESPONSE, + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("JobComplete").build(), ], ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}/results"), + HttpResponse(f"{_A_FIELD_NAME}\nfield_value"), + ) + self._mock_delete_job(_JOB_ID) + + output = read(_STREAM_NAME, SyncMode.full_refresh, self._config) + + assert len(output.errors) == 0 + assert len(output.records) == 1 + + @freezegun.freeze_time(_NOW.isoformat()) + def test_given_bulk_restrictions_when_read_then_switch_to_standard(self): + given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) + self._http_mocker.post( + _make_full_job_request([_A_FIELD_NAME]), + HttpResponse("[{}]", 403), + ) self._http_mocker.get( create_standard_http_request(_STREAM_NAME, [_A_FIELD_NAME]), create_standard_http_response([_A_FIELD_NAME]), @@ -159,10 +333,11 @@ def test_given_bulk_restrictions_when_read_then_switch_to_standard(self): assert len(output.records) == 1 + @freezegun.freeze_time(_NOW.isoformat()) def test_given_non_transient_error_on_job_creation_when_read_then_fail_sync(self): given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), HttpResponse(json.dumps([{"errorCode": "API_ERROR", "message": "Implementation restriction... "}]), 400), ) @@ -170,10 +345,32 @@ def test_given_non_transient_error_on_job_creation_when_read_then_fail_sync(self assert output.get_stream_statuses(_STREAM_NAME)[-1] == AirbyteStreamStatus.INCOMPLETE + def test_given_job_times_out_when_read_then_abort_job(self): + BulkSalesforceStream.DEFAULT_WAIT_TIMEOUT = timedelta(microseconds=1) + given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) + self._http_mocker.post( + _make_full_job_request([_A_FIELD_NAME]), + JobCreateResponseBuilder().with_id(_JOB_ID).build(), + ) + abort_request = HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}", body=json.dumps({"state": "Aborted"})) + self._http_mocker.patch( + abort_request, + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("Aborted").build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}"), + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("InProgress").build(), + ) + + read(_STREAM_NAME, SyncMode.full_refresh, self._config) + + self._http_mocker.assert_number_of_calls(abort_request, 3) + + @freezegun.freeze_time(_NOW.isoformat()) def test_given_job_is_aborted_when_read_then_fail_sync(self): given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), JobCreateResponseBuilder().with_id(_JOB_ID).build(), ) self._http_mocker.get( @@ -186,10 +383,11 @@ def test_given_job_is_aborted_when_read_then_fail_sync(self): assert output.get_stream_statuses(_STREAM_NAME)[-1] == AirbyteStreamStatus.INCOMPLETE + @freezegun.freeze_time(_NOW.isoformat()) def test_given_job_is_failed_when_read_then_switch_to_standard(self): given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), JobCreateResponseBuilder().with_id(_JOB_ID).build(), ) self._http_mocker.get( @@ -206,10 +404,11 @@ def test_given_job_is_failed_when_read_then_switch_to_standard(self): assert len(output.records) == 1 + @freezegun.freeze_time(_NOW.isoformat()) def test_given_retryable_error_on_download_job_result_when_read_then_extract_records(self): given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), JobCreateResponseBuilder().with_id(_JOB_ID).build(), ) self._http_mocker.get( @@ -229,10 +428,11 @@ def test_given_retryable_error_on_download_job_result_when_read_then_extract_rec assert len(output.records) == 1 + @freezegun.freeze_time(_NOW.isoformat()) def test_given_retryable_error_on_delete_job_result_when_read_then_do_not_break(self): given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), JobCreateResponseBuilder().with_id(_JOB_ID).build(), ) self._http_mocker.get( @@ -255,6 +455,7 @@ def test_given_retryable_error_on_delete_job_result_when_read_then_do_not_break( assert output.get_stream_statuses(_STREAM_NAME)[-1] == AirbyteStreamStatus.COMPLETE + @freezegun.freeze_time(_NOW.isoformat()) def test_given_non_retryable_error_on_delete_job_result_when_read_then_fail_to_sync(self): """ This is interesting: right now, we retry with the same policies has the other requests but it seems fair to just be a best effort, @@ -262,7 +463,7 @@ def test_given_non_retryable_error_on_delete_job_result_when_read_then_fail_to_s """ given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) self._http_mocker.post( - self._make_full_job_request([_A_FIELD_NAME]), + _make_full_job_request([_A_FIELD_NAME]), JobCreateResponseBuilder().with_id(_JOB_ID).build(), ) self._http_mocker.get( @@ -282,72 +483,126 @@ def test_given_non_retryable_error_on_delete_job_result_when_read_then_fail_to_s assert output.get_stream_statuses(_STREAM_NAME)[-1] == AirbyteStreamStatus.INCOMPLETE + @freezegun.freeze_time(_NOW.isoformat()) def test_given_incremental_when_read_then_create_job_and_extract_records_from_result(self) -> None: start_date = (_NOW - timedelta(days=10)).replace(microsecond=0) first_upper_boundary = start_date + timedelta(days=7) self._config.start_date(start_date).stream_slice_step("P7D") given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, _INCREMENTAL_SCHEMA_BUILDER) - self._create_sliced_job(start_date, first_upper_boundary, _INCREMENTAL_FIELDS, "first_slice_job_id", record_count=2) - self._create_sliced_job(first_upper_boundary, _NOW, _INCREMENTAL_FIELDS, "second_slice_job_id", record_count=1) + self._create_sliced_job(start_date, first_upper_boundary, _STREAM_NAME, _INCREMENTAL_FIELDS, "first_slice_job_id", record_count=2) + self._create_sliced_job(first_upper_boundary, _NOW, _STREAM_NAME, _INCREMENTAL_FIELDS, "second_slice_job_id", record_count=1) output = read(_STREAM_NAME, SyncMode.incremental, self._config) assert len(output.records) == 3 + @freezegun.freeze_time(_NOW.isoformat()) def test_given_slice_fails_when_read_then_state_is_partitioned(self) -> None: + # FIXME this test fails because the error happens in the thread that generates the slices as oppose to the thread the read the + # partition. In order to fix that, we probably need a flag to allow for the job orchestrator to continue creating the jobs even if + # there is an error start_date = (_NOW - timedelta(days=20)).replace(microsecond=0) slice_range = timedelta(days=7) first_upper_boundary = start_date + slice_range second_upper_boundary = first_upper_boundary + slice_range self._config.start_date(start_date).stream_slice_step("P7D") given_stream(self._http_mocker, _BASE_URL, _STREAM_NAME, _INCREMENTAL_SCHEMA_BUILDER) - self._create_sliced_job(start_date, first_upper_boundary, _INCREMENTAL_FIELDS, "first_slice_job_id", record_count=2) + self._create_sliced_job(start_date, first_upper_boundary, _STREAM_NAME, _INCREMENTAL_FIELDS, "first_slice_job_id", record_count=2) self._http_mocker.post( - self._make_sliced_job_request(first_upper_boundary, second_upper_boundary, _INCREMENTAL_FIELDS), + _make_sliced_job_request(first_upper_boundary, second_upper_boundary, _INCREMENTAL_FIELDS), HttpResponse("", status_code=400), ) - self._create_sliced_job(second_upper_boundary, _NOW, _INCREMENTAL_FIELDS, "third_slice_job_id", record_count=1) + self._create_sliced_job(second_upper_boundary, _NOW, _STREAM_NAME, _INCREMENTAL_FIELDS, "third_slice_job_id", record_count=1) output = read(_STREAM_NAME, SyncMode.incremental, self._config) assert len(output.records) == 3 - assert len(output.most_recent_state.stream_state.dict()["slices"]) == 2 + assert len(output.most_recent_state.stream_state.slices) == 2 + + @freezegun.freeze_time(_NOW.isoformat()) + def test_given_parent_stream_when_read_then_return_record_for_all_children(self) -> None: + start_date = (_NOW - timedelta(days=10)).replace(microsecond=0) + first_upper_boundary = start_date + timedelta(days=7) + self._config.start_date(start_date).stream_slice_step("P7D") + + given_stream(self._http_mocker, _BASE_URL, _STREAM_WITH_PARENT_NAME, SalesforceDescribeResponseBuilder().field(_A_FIELD_NAME)) + self._create_sliced_job_with_records(start_date, first_upper_boundary, _PARENT_STREAM_NAME, "first_parent_slice_job_id", [{"Id": "parent1", "SystemModstamp": "any"}, {"Id": "parent2", "SystemModstamp": "any"}]) + self._create_sliced_job_with_records(first_upper_boundary, _NOW, _PARENT_STREAM_NAME, "second_parent_slice_job_id", [{"Id": "parent3", "SystemModstamp": "any"}]) - def _create_sliced_job(self, lower_boundary: datetime, upper_boundary: datetime, fields: List[str], job_id: str, record_count: int) -> None: self._http_mocker.post( - self._make_sliced_job_request(lower_boundary, upper_boundary, fields), + self._build_job_creation_request(f"SELECT {', '.join([_A_FIELD_NAME])} FROM {_STREAM_WITH_PARENT_NAME} WHERE ContentDocumentId IN ('parent1', 'parent2', 'parent3')"), + JobCreateResponseBuilder().with_id(_JOB_ID).build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}"), + JobInfoResponseBuilder().with_id(_JOB_ID).with_state("JobComplete").build(), + ) + self._http_mocker.get( + HttpRequest(f"{_BASE_URL}/jobs/query/{_JOB_ID}/results"), + HttpResponse(f"{_A_FIELD_NAME}\nfield_value"), + ) + self._mock_delete_job(_JOB_ID) + + output = read(_STREAM_WITH_PARENT_NAME, SyncMode.full_refresh, self._config) + + assert len(output.records) == 1 + + def _create_sliced_job(self, lower_boundary: datetime, upper_boundary: datetime, stream_name: str, fields: List[str], job_id: str, record_count: int) -> None: + self._create_sliced_job_with_records(lower_boundary, upper_boundary, stream_name, job_id, self._generate_random_records(fields, record_count)) + + def _create_sliced_job_with_records(self, lower_boundary: datetime, upper_boundary: datetime, stream_name: str, job_id: str, records: List[Dict[str, str]]) -> None: + self._http_mocker.post( + self._make_sliced_job_request(lower_boundary, upper_boundary, stream_name, list(records[0].keys())), JobCreateResponseBuilder().with_id(job_id).build(), ) self._http_mocker.get( HttpRequest(f"{_BASE_URL}/jobs/query/{job_id}"), - JobInfoResponseBuilder().with_id(_JOB_ID).with_state("JobComplete").build(), + JobInfoResponseBuilder().with_id(job_id).with_state("JobComplete").build(), ) self._http_mocker.get( HttpRequest(f"{_BASE_URL}/jobs/query/{job_id}/results"), - HttpResponse(self._generate_csv(fields, count=record_count)), + HttpResponse(self._generate_csv(records)), ) self._mock_delete_job(job_id) - def _mock_delete_job(self, job_id: str) -> None: + def _mock_delete_job(self, job_id: str) -> HttpRequest: + request = HttpRequest(f"{_BASE_URL}/jobs/query/{job_id}") self._http_mocker.delete( - HttpRequest(f"{_BASE_URL}/jobs/query/{job_id}"), + request, HttpResponse(""), ) + return request + + def _create_csv(self, headers: List[str], data: List[Dict[str, str]], dialect: str) -> str: + with io.StringIO("", newline="") as csvfile: + writer = csv.DictWriter(csvfile, fieldnames=headers, dialect=dialect) + writer.writeheader() + for line in data: + writer.writerow(line) + return csvfile.getvalue() - def _make_sliced_job_request(self, lower_boundary: datetime, upper_boundary: datetime, fields: List[str]) -> HttpRequest: - return self._build_job_creation_request(f"SELECT {', '.join(fields)} FROM a_stream_name WHERE SystemModstamp >= {lower_boundary.isoformat(timespec='milliseconds')} AND SystemModstamp < {upper_boundary.isoformat(timespec='milliseconds')}") + def _make_sliced_job_request(self, lower_boundary: datetime, upper_boundary: datetime, stream_name: str, fields: List[str]) -> HttpRequest: + return self._build_job_creation_request(f"SELECT {', '.join(fields)} FROM {stream_name} WHERE SystemModstamp >= {lower_boundary.isoformat(timespec='milliseconds')} AND SystemModstamp < {upper_boundary.isoformat(timespec='milliseconds')}") - def _make_full_job_request(self, fields: List[str]) -> HttpRequest: - return self._build_job_creation_request(f"SELECT {', '.join(fields)} FROM a_stream_name") + def _make_full_job_request(self, fields: List[str], stream_name: str = _STREAM_NAME) -> HttpRequest: + return self._build_job_creation_request(f"SELECT {', '.join(fields)} FROM {stream_name}") - def _generate_csv(self, fields: List[str], count: int = 1) -> str: + def _generate_random_records(self, fields: List[str], record_count: int) -> List[Dict[str, str]]: + record = {field: f"{field}_value" for field in fields} + return [record for _ in range(record_count)] + + def _generate_csv(self, records: List[Dict[str, str]]) -> str: """ This method does not handle field types for now which may cause some test failures on change if we start considering using some fields for calculation. One example of that would be cursor field parsing to datetime. """ - record = ','.join([f"{field}_value" for field in fields]) - records = '\n'.join([record for _ in range(count)]) - return f"{','.join(fields)}\n{records}" + keys = list(records[0].keys()) # assuming all the records have the same keys + csv_entry = [] + for record in records: + csv_entry.append(",".join([record[key] for key in keys])) + + entries = '\n'.join(csv_entry) + return f"{','.join(keys)}\n{entries}" def _build_job_creation_request(self, query: str) -> HttpRequest: return HttpRequest(f"{_BASE_URL}/jobs/query", body=json.dumps({ diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_rest_stream.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_rest_stream.py index ed7282ebca73d..d223a2c8474b4 100644 --- a/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_rest_stream.py +++ b/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_rest_stream.py @@ -7,9 +7,9 @@ from unittest import TestCase import freezegun +from airbyte_cdk.models import AirbyteStateBlob, SyncMode from airbyte_cdk.test.mock_http import HttpMocker, HttpRequest, HttpResponse from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import SyncMode from config_builder import ConfigBuilder from integration.utils import create_base_url, given_authentication, given_stream, read from salesforce_describe_response_builder import SalesforceDescribeResponseBuilder @@ -125,7 +125,7 @@ def test_given_sequential_state_when_read_then_migrate_to_partitioned_state(self output = read(_STREAM_NAME, SyncMode.incremental, self._config, StateBuilder().with_stream_state(_STREAM_NAME, {_CURSOR_FIELD: cursor_value.isoformat(timespec="milliseconds")})) - assert output.most_recent_state.stream_state.dict() == {"state_type": "date-range", "slices": [{"start": _to_partitioned_datetime(start), "end": _to_partitioned_datetime(_NOW)}]} + assert output.most_recent_state.stream_state == AirbyteStateBlob({"state_type": "date-range", "slices": [{"start": _to_partitioned_datetime(start), "end": _to_partitioned_datetime(_NOW)}]}) def test_given_partitioned_state_when_read_then_sync_missing_partitions_and_update_state(self) -> None: missing_chunk = (_NOW - timedelta(days=5), _NOW - timedelta(days=3)) @@ -155,4 +155,4 @@ def test_given_partitioned_state_when_read_then_sync_missing_partitions_and_upda output = read(_STREAM_NAME, SyncMode.incremental, self._config, state) # the start is granular to the second hence why we have `000` in terms of milliseconds - assert output.most_recent_state.stream_state.dict() == {"state_type": "date-range", "slices": [{"start": _to_partitioned_datetime(start), "end": _to_partitioned_datetime(_NOW)}]} + assert output.most_recent_state.stream_state == AirbyteStateBlob({"state_type": "date-range", "slices": [{"start": _to_partitioned_datetime(start), "end": _to_partitioned_datetime(_NOW)}]}) diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_source.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_source.py index 31a6442fabc15..3fa57dfbd0a1d 100644 --- a/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_source.py +++ b/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/test_source.py @@ -4,11 +4,11 @@ from unittest import TestCase import pytest +from airbyte_cdk.models import FailureType, SyncMode from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.mock_http import HttpMocker, HttpRequest, HttpResponse from airbyte_cdk.test.state_builder import StateBuilder from airbyte_cdk.utils.traced_exception import AirbyteTracedException -from airbyte_protocol.models import FailureType, SyncMode from config_builder import ConfigBuilder from integration.utils import create_base_url, given_authentication, given_stream from salesforce_describe_response_builder import SalesforceDescribeResponseBuilder diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/utils.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/utils.py index 6b7484818d49f..b547a297c439e 100644 --- a/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/utils.py +++ b/airbyte-integrations/connectors/source-salesforce/unit_tests/integration/utils.py @@ -3,6 +3,7 @@ import json from typing import Any, Dict, Optional +from airbyte_cdk.models import ConfiguredAirbyteCatalog, SyncMode from airbyte_cdk.sources.source import TState from airbyte_cdk.test.catalog_builder import CatalogBuilder from airbyte_cdk.test.entrypoint_wrapper import EntrypointOutput @@ -10,7 +11,6 @@ from airbyte_cdk.test.mock_http import HttpMocker, HttpRequest, HttpResponse from airbyte_cdk.test.mock_http.request import ANY_QUERY_PARAMS from airbyte_cdk.test.state_builder import StateBuilder -from airbyte_protocol.models import ConfiguredAirbyteCatalog, SyncMode from config_builder import ConfigBuilder from salesforce_describe_response_builder import SalesforceDescribeResponseBuilder from source_salesforce import SourceSalesforce diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/test_memory.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/test_memory.py deleted file mode 100644 index 75780d6938220..0000000000000 --- a/airbyte-integrations/connectors/source-salesforce/unit_tests/test_memory.py +++ /dev/null @@ -1,46 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import tracemalloc - -import pytest -import requests_mock -from conftest import generate_stream -from source_salesforce.streams import BulkIncrementalSalesforceStream - - -@pytest.mark.parametrize( - "n_records, first_size, first_peak", - ( - (1000, 0.4, 1), - (10000, 1, 2), - (100000, 4, 9), - (200000, 7, 19), - ), - ids=[ - "1k recods", - "10k records", - "100k records", - "200k records", - ], -) -def test_memory_download_data(stream_config, stream_api, n_records, first_size, first_peak): - job_full_url_results: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA/results" - stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api) - content = b'"Id","IsDeleted"' - for _ in range(n_records): - content += b'"0014W000027f6UwQAI","false"\n' - - with requests_mock.Mocker() as m: - m.register_uri("GET", job_full_url_results, content=content) - tracemalloc.start() - tmp_file, response_encoding, _ = stream.download_data(url=job_full_url_results) - for x in stream.read_with_chunks(tmp_file, response_encoding): - pass - fs, fp = tracemalloc.get_traced_memory() - first_size_in_mb, first_peak_in_mb = fs / 1024**2, fp / 1024**2 - - assert first_size_in_mb < first_size - assert first_peak_in_mb < first_peak diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/test_rate_limiting.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/test_rate_limiting.py new file mode 100644 index 0000000000000..c6b9d1ea17317 --- /dev/null +++ b/airbyte-integrations/connectors/source-salesforce/unit_tests/test_rate_limiting.py @@ -0,0 +1,71 @@ +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. + +from typing import Any +from unittest import TestCase + +import pytest +import requests +import requests_mock +from airbyte_cdk.models import FailureType +from airbyte_cdk.sources.streams.http.error_handlers import ResponseAction +from requests.exceptions import ChunkedEncodingError +from source_salesforce.rate_limiting import BulkNotSupportedException, SalesforceErrorHandler + +_ANY = "any" +_ANY_BASE_URL = "https://any-base-url.com" +_SF_API_VERSION = "v57.0" + + +class SalesforceErrorHandlerTest(TestCase): + def setUp(self) -> None: + self._error_handler = SalesforceErrorHandler() + + def test_given_invalid_entity_with_bulk_not_supported_message_on_job_creation_when_interpret_response_then_raise_bulk_not_supported(self) -> None: + response = self._create_response("POST", self._url_for_job_creation(), 400, [{"errorCode": "INVALIDENTITY", "message": "X is not supported by the Bulk API"}]) + with pytest.raises(BulkNotSupportedException): + self._error_handler.interpret_response(response) + + def test_given_compound_data_error_on_job_creation_when_interpret_response_then_raise_bulk_not_supported(self) -> None: + response = self._create_response("POST", self._url_for_job_creation(), 400, [{"errorCode": _ANY, "message": "Selecting compound data not supported in Bulk Query"}]) + with pytest.raises(BulkNotSupportedException): + self._error_handler.interpret_response(response) + + def test_given_request_limit_exceeded_on_job_creation_when_interpret_response_then_raise_bulk_not_supported(self) -> None: + response = self._create_response("POST", self._url_for_job_creation(), 400, [{"errorCode": "REQUEST_LIMIT_EXCEEDED", "message": "Selecting compound data not supported in Bulk Query"}]) + with pytest.raises(BulkNotSupportedException): + self._error_handler.interpret_response(response) + + def test_given_limit_exceeded_on_job_creation_when_interpret_response_then_raise_bulk_not_supported(self) -> None: + response = self._create_response("POST", self._url_for_job_creation(), 400, [{"errorCode": "LIMIT_EXCEEDED", "message": _ANY}]) + with pytest.raises(BulkNotSupportedException): + self._error_handler.interpret_response(response) + + def test_given_query_not_supported_on_job_creation_when_interpret_response_then_raise_bulk_not_supported(self) -> None: + response = self._create_response("POST", self._url_for_job_creation(), 400, [{"errorCode": "API_ERROR", "message": "API does not support query"}]) + with pytest.raises(BulkNotSupportedException): + self._error_handler.interpret_response(response) + + def test_given_txn_security_metering_error_when_interpret_response_then_raise_config_error(self) -> None: + response = self._create_response("GET", self._url_for_job_creation() + "/job_id", 400, [{"errorCode": "TXN_SECURITY_METERING_ERROR", "message": "We can't complete the action because enabled transaction security policies took too long to complete."}]) + + error_resolution = self._error_handler.interpret_response(response) + + assert error_resolution.response_action == ResponseAction.FAIL + assert error_resolution.failure_type == FailureType.config_error + + def test_given_chunked_encoding_error_when_interpret_response_then_retry(self) -> None: + error_resolution = self._error_handler.interpret_response(ChunkedEncodingError()) + assert error_resolution.response_action == ResponseAction.RETRY + + def _create_response(self, http_method: str, url: str, status_code: int, json: Any) -> requests.Response: + with requests_mock.Mocker() as mocker: + mocker.register_uri( + http_method, + url, + status_code=status_code, + json=json, + ) + return requests.request(http_method, url) + + def _url_for_job_creation(self) -> str: + return f"{_ANY_BASE_URL}/services/data/{_SF_API_VERSION}/jobs/query" diff --git a/airbyte-integrations/connectors/source-salesforce/unit_tests/test_slice_generation.py b/airbyte-integrations/connectors/source-salesforce/unit_tests/test_slice_generation.py index 3522ff0cd744c..25ea70f6362cf 100644 --- a/airbyte-integrations/connectors/source-salesforce/unit_tests/test_slice_generation.py +++ b/airbyte-integrations/connectors/source-salesforce/unit_tests/test_slice_generation.py @@ -4,18 +4,23 @@ from unittest import TestCase import freezegun -from airbyte_protocol.models import SyncMode +from airbyte_cdk.models import SyncMode from config_builder import ConfigBuilder from conftest import generate_stream, mock_stream_api +from source_salesforce.api import UNSUPPORTED_BULK_API_SALESFORCE_OBJECTS _NOW = datetime.fromisoformat("2020-01-01T00:00:00+00:00") - +_STREAM_NAME = UNSUPPORTED_BULK_API_SALESFORCE_OBJECTS[0] @freezegun.freeze_time(time_to_freeze=_NOW) class IncrementalSliceGenerationTest(TestCase): + """ + For this, we will be testing with UNSUPPORTED_BULK_API_SALESFORCE_OBJECTS[0] as bulk stream slicing actually creates jobs. We will + assume the bulk one usese the same logic. + """ def test_given_start_within_slice_range_when_stream_slices_then_return_one_slice_considering_10_minutes_lookback(self) -> None: config = ConfigBuilder().start_date(_NOW - timedelta(days=15)).stream_slice_step("P30D").build() - stream = generate_stream("Account", config, mock_stream_api(config)) + stream = generate_stream(_STREAM_NAME, config, mock_stream_api(config)) slices = list(stream.stream_slices(sync_mode=SyncMode.full_refresh)) @@ -23,7 +28,7 @@ def test_given_start_within_slice_range_when_stream_slices_then_return_one_slice def test_given_slice_range_smaller_than_now_minus_start_date_when_stream_slices_then_return_many_slices(self) -> None: config = ConfigBuilder().start_date(_NOW - timedelta(days=40)).stream_slice_step("P30D").build() - stream = generate_stream("Account", config, mock_stream_api(config)) + stream = generate_stream(_STREAM_NAME, config, mock_stream_api(config)) slices = list(stream.stream_slices(sync_mode=SyncMode.full_refresh)) diff --git a/docs/integrations/sources/salesforce.md b/docs/integrations/sources/salesforce.md index b25cc5ee839a5..9f71498ab8e78 100644 --- a/docs/integrations/sources/salesforce.md +++ b/docs/integrations/sources/salesforce.md @@ -217,132 +217,133 @@ Now that you have set up the Salesforce source connector, check out the followin
Expand to review -| Version | Date | Pull Request | Subject | -|:--------|:-----------|:---------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------| -| 2.5.34 | 2024-09-28 | [46187](https://github.com/airbytehq/airbyte/pull/46187) | Update dependencies | -| 2.5.33 | 2024-09-21 | [45779](https://github.com/airbytehq/airbyte/pull/45779) | Update dependencies | -| 2.5.32 | 2024-09-14 | [45579](https://github.com/airbytehq/airbyte/pull/45579) | Update dependencies | -| 2.5.31 | 2024-09-07 | [45329](https://github.com/airbytehq/airbyte/pull/45329) | Update dependencies | -| 2.5.30 | 2024-08-31 | [44959](https://github.com/airbytehq/airbyte/pull/44959) | Update dependencies | -| 2.5.29 | 2024-08-24 | [44747](https://github.com/airbytehq/airbyte/pull/44747) | Update dependencies | -| 2.5.28 | 2024-08-17 | [44327](https://github.com/airbytehq/airbyte/pull/44327) | Update dependencies | -| 2.5.27 | 2024-08-12 | [43732](https://github.com/airbytehq/airbyte/pull/43732) | Update dependencies | -| 2.5.26 | 2024-08-10 | [43673](https://github.com/airbytehq/airbyte/pull/43673) | Update dependencies | -| 2.5.25 | 2024-08-03 | [43211](https://github.com/airbytehq/airbyte/pull/43211) | Update dependencies | -| 2.5.24 | 2024-07-27 | [42685](https://github.com/airbytehq/airbyte/pull/42685) | Update dependencies | -| 2.5.23 | 2024-07-20 | [42166](https://github.com/airbytehq/airbyte/pull/42166) | Update dependencies | -| 2.5.22 | 2024-07-13 | [41752](https://github.com/airbytehq/airbyte/pull/41752) | Update dependencies | -| 2.5.21 | 2024-07-10 | [41529](https://github.com/airbytehq/airbyte/pull/41529) | Update dependencies | -| 2.5.20 | 2024-07-09 | [41255](https://github.com/airbytehq/airbyte/pull/41255) | Update dependencies | -| 2.5.19 | 2024-07-08 | [41043](https://github.com/airbytehq/airbyte/pull/41043) | Use the latest `CDK` version possible | -| 2.5.18 | 2024-07-06 | [40835](https://github.com/airbytehq/airbyte/pull/40835) | Update dependencies | -| 2.5.17 | 2024-06-25 | [40329](https://github.com/airbytehq/airbyte/pull/40329) | Update dependencies | -| 2.5.16 | 2024-06-21 | [39927](https://github.com/airbytehq/airbyte/pull/39927) | Update dependencies | -| 2.5.15 | 2024-06-16 | [39517](https://github.com/airbytehq/airbyte/pull/39517) | Salesforce refactor: add CheckpointMixin for state management | -| 2.5.14 | 2024-06-06 | [39269](https://github.com/airbytehq/airbyte/pull/39269) | [autopull] Upgrade base image to v1.2.2 | -| 2.5.13 | 2024-05-23 | [38563](https://github.com/airbytehq/airbyte/pull/38563) | Use HttpClient to perform HTTP requests for bulk, authentication and schema discovery | -| 2.5.12 | 2024-05-16 | [38255](https://github.com/airbytehq/airbyte/pull/38255) | Replace AirbyteLogger with logging.Logger | -| 2.5.11 | 2024-05-09 | [38205](https://github.com/airbytehq/airbyte/pull/38205) | Use new delete method of HttpMocker for test_bulk_stream | -| 2.5.10 | 2024-05-09 | [38065](https://github.com/airbytehq/airbyte/pull/38065) | Replace deprecated authentication mechanism to up-to-date one | -| 2.5.9 | 2024-05-02 | [37749](https://github.com/airbytehq/airbyte/pull/37749) | Adding mock server tests for bulk streams | -| 2.5.8 | 2024-04-30 | [37340](https://github.com/airbytehq/airbyte/pull/37340) | Source Salesforce: reduce info logs | -| 2.5.7 | 2024-04-24 | [36657](https://github.com/airbytehq/airbyte/pull/36657) | Schema descriptions | -| 2.5.6 | 2024-04-19 | [37448](https://github.com/airbytehq/airbyte/pull/37448) | Ensure AirbyteTracedException in concurrent CDK are emitted with the right type | -| 2.5.5 | 2024-04-18 | [37392](https://github.com/airbytehq/airbyte/pull/37419) | Ensure python return code != 0 in case of error | -| 2.5.4 | 2024-04-18 | [37392](https://github.com/airbytehq/airbyte/pull/37392) | Update CDK version to have partitioned state fix | -| 2.5.3 | 2024-04-17 | [37376](https://github.com/airbytehq/airbyte/pull/37376) | Improve rate limit error message during check command | -| 2.5.2 | 2024-04-15 | [37105](https://github.com/airbytehq/airbyte/pull/37105) | Raise error when schema generation fails | -| 2.5.1 | 2024-04-11 | [37001](https://github.com/airbytehq/airbyte/pull/37001) | Update airbyte-cdk to flush print buffer for every message | -| 2.5.0 | 2024-04-11 | [36942](https://github.com/airbytehq/airbyte/pull/36942) | Move Salesforce to partitioned state in order to avoid stuck syncs | -| 2.4.4 | 2024-04-08 | [36901](https://github.com/airbytehq/airbyte/pull/36901) | Upgrade CDK for empty internal_message empty when ExceptionWithDisplayMessage raised | -| 2.4.3 | 2024-04-08 | [36885](https://github.com/airbytehq/airbyte/pull/36885) | Add missing retry on REST API | -| 2.4.2 | 2024-04-05 | [36862](https://github.com/airbytehq/airbyte/pull/36862) | Upgrade CDK for updated error messaging regarding missing streams | -| 2.4.1 | 2024-04-03 | [36385](https://github.com/airbytehq/airbyte/pull/36385) | Retry HTTP requests and jobs on various cases | -| 2.4.0 | 2024-03-12 | [35978](https://github.com/airbytehq/airbyte/pull/35978) | Upgrade CDK to start emitting record counts with state and full refresh state | -| 2.3.3 | 2024-03-04 | [35791](https://github.com/airbytehq/airbyte/pull/35791) | Fix memory leak (OOM) | -| 2.3.2 | 2024-02-19 | [35421](https://github.com/airbytehq/airbyte/pull/35421) | Add Stream Slice Step option to specification | -| 2.3.1 | 2024-02-12 | [35147](https://github.com/airbytehq/airbyte/pull/35147) | Manage dependencies with Poetry. | -| 2.3.0 | 2023-12-15 | [33522](https://github.com/airbytehq/airbyte/pull/33522) | Sync streams concurrently in all sync modes | -| 2.2.2 | 2024-01-04 | [33936](https://github.com/airbytehq/airbyte/pull/33936) | Prepare for airbyte-lib | -| 2.2.1 | 2023-12-12 | [33342](https://github.com/airbytehq/airbyte/pull/33342) | Added new ContentDocumentLink stream | -| 2.2.0 | 2023-12-12 | [33350](https://github.com/airbytehq/airbyte/pull/33350) | Sync streams concurrently on full refresh | -| 2.1.6 | 2023-11-28 | [32535](https://github.com/airbytehq/airbyte/pull/32535) | Run full refresh syncs concurrently | -| 2.1.5 | 2023-10-18 | [31543](https://github.com/airbytehq/airbyte/pull/31543) | Base image migration: remove Dockerfile and use the python-connector-base image | -| 2.1.4 | 2023-08-17 | [29538](https://github.com/airbytehq/airbyte/pull/29538) | Fix encoding guess | -| 2.1.3 | 2023-08-17 | [29500](https://github.com/airbytehq/airbyte/pull/29500) | handle expired refresh token error | -| 2.1.2 | 2023-08-10 | [28781](https://github.com/airbytehq/airbyte/pull/28781) | Fix pagination for BULK API jobs; Add option to force use BULK API | +| Version | Date | Pull Request | Subject | +|:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------| +| 2.6.0 | 2024-10-02 | [45678](https://github.com/airbytehq/airbyte/pull/45678) | Have bulk streams use CDK components | +| 2.5.34 | 2024-09-28 | [46187](https://github.com/airbytehq/airbyte/pull/46187) | Update dependencies | +| 2.5.33 | 2024-09-21 | [45779](https://github.com/airbytehq/airbyte/pull/45779) | Update dependencies | +| 2.5.32 | 2024-09-14 | [45579](https://github.com/airbytehq/airbyte/pull/45579) | Update dependencies | +| 2.5.31 | 2024-09-07 | [45329](https://github.com/airbytehq/airbyte/pull/45329) | Update dependencies | +| 2.5.30 | 2024-08-31 | [44959](https://github.com/airbytehq/airbyte/pull/44959) | Update dependencies | +| 2.5.29 | 2024-08-24 | [44747](https://github.com/airbytehq/airbyte/pull/44747) | Update dependencies | +| 2.5.28 | 2024-08-17 | [44327](https://github.com/airbytehq/airbyte/pull/44327) | Update dependencies | +| 2.5.27 | 2024-08-12 | [43732](https://github.com/airbytehq/airbyte/pull/43732) | Update dependencies | +| 2.5.26 | 2024-08-10 | [43673](https://github.com/airbytehq/airbyte/pull/43673) | Update dependencies | +| 2.5.25 | 2024-08-03 | [43211](https://github.com/airbytehq/airbyte/pull/43211) | Update dependencies | +| 2.5.24 | 2024-07-27 | [42685](https://github.com/airbytehq/airbyte/pull/42685) | Update dependencies | +| 2.5.23 | 2024-07-20 | [42166](https://github.com/airbytehq/airbyte/pull/42166) | Update dependencies | +| 2.5.22 | 2024-07-13 | [41752](https://github.com/airbytehq/airbyte/pull/41752) | Update dependencies | +| 2.5.21 | 2024-07-10 | [41529](https://github.com/airbytehq/airbyte/pull/41529) | Update dependencies | +| 2.5.20 | 2024-07-09 | [41255](https://github.com/airbytehq/airbyte/pull/41255) | Update dependencies | +| 2.5.19 | 2024-07-08 | [41043](https://github.com/airbytehq/airbyte/pull/41043) | Use the latest `CDK` version possible | +| 2.5.18 | 2024-07-06 | [40835](https://github.com/airbytehq/airbyte/pull/40835) | Update dependencies | +| 2.5.17 | 2024-06-25 | [40329](https://github.com/airbytehq/airbyte/pull/40329) | Update dependencies | +| 2.5.16 | 2024-06-21 | [39927](https://github.com/airbytehq/airbyte/pull/39927) | Update dependencies | +| 2.5.15 | 2024-06-16 | [39517](https://github.com/airbytehq/airbyte/pull/39517) | Salesforce refactor: add CheckpointMixin for state management | +| 2.5.14 | 2024-06-06 | [39269](https://github.com/airbytehq/airbyte/pull/39269) | [autopull] Upgrade base image to v1.2.2 | +| 2.5.13 | 2024-05-23 | [38563](https://github.com/airbytehq/airbyte/pull/38563) | Use HttpClient to perform HTTP requests for bulk, authentication and schema discovery | +| 2.5.12 | 2024-05-16 | [38255](https://github.com/airbytehq/airbyte/pull/38255) | Replace AirbyteLogger with logging.Logger | +| 2.5.11 | 2024-05-09 | [38205](https://github.com/airbytehq/airbyte/pull/38205) | Use new delete method of HttpMocker for test_bulk_stream | +| 2.5.10 | 2024-05-09 | [38065](https://github.com/airbytehq/airbyte/pull/38065) | Replace deprecated authentication mechanism to up-to-date one | +| 2.5.9 | 2024-05-02 | [37749](https://github.com/airbytehq/airbyte/pull/37749) | Adding mock server tests for bulk streams | +| 2.5.8 | 2024-04-30 | [37340](https://github.com/airbytehq/airbyte/pull/37340) | Source Salesforce: reduce info logs | +| 2.5.7 | 2024-04-24 | [36657](https://github.com/airbytehq/airbyte/pull/36657) | Schema descriptions | +| 2.5.6 | 2024-04-19 | [37448](https://github.com/airbytehq/airbyte/pull/37448) | Ensure AirbyteTracedException in concurrent CDK are emitted with the right type | +| 2.5.5 | 2024-04-18 | [37392](https://github.com/airbytehq/airbyte/pull/37419) | Ensure python return code != 0 in case of error | +| 2.5.4 | 2024-04-18 | [37392](https://github.com/airbytehq/airbyte/pull/37392) | Update CDK version to have partitioned state fix | +| 2.5.3 | 2024-04-17 | [37376](https://github.com/airbytehq/airbyte/pull/37376) | Improve rate limit error message during check command | +| 2.5.2 | 2024-04-15 | [37105](https://github.com/airbytehq/airbyte/pull/37105) | Raise error when schema generation fails | +| 2.5.1 | 2024-04-11 | [37001](https://github.com/airbytehq/airbyte/pull/37001) | Update airbyte-cdk to flush print buffer for every message | +| 2.5.0 | 2024-04-11 | [36942](https://github.com/airbytehq/airbyte/pull/36942) | Move Salesforce to partitioned state in order to avoid stuck syncs | +| 2.4.4 | 2024-04-08 | [36901](https://github.com/airbytehq/airbyte/pull/36901) | Upgrade CDK for empty internal_message empty when ExceptionWithDisplayMessage raised | +| 2.4.3 | 2024-04-08 | [36885](https://github.com/airbytehq/airbyte/pull/36885) | Add missing retry on REST API | +| 2.4.2 | 2024-04-05 | [36862](https://github.com/airbytehq/airbyte/pull/36862) | Upgrade CDK for updated error messaging regarding missing streams | +| 2.4.1 | 2024-04-03 | [36385](https://github.com/airbytehq/airbyte/pull/36385) | Retry HTTP requests and jobs on various cases | +| 2.4.0 | 2024-03-12 | [35978](https://github.com/airbytehq/airbyte/pull/35978) | Upgrade CDK to start emitting record counts with state and full refresh state | +| 2.3.3 | 2024-03-04 | [35791](https://github.com/airbytehq/airbyte/pull/35791) | Fix memory leak (OOM) | +| 2.3.2 | 2024-02-19 | [35421](https://github.com/airbytehq/airbyte/pull/35421) | Add Stream Slice Step option to specification | +| 2.3.1 | 2024-02-12 | [35147](https://github.com/airbytehq/airbyte/pull/35147) | Manage dependencies with Poetry. | +| 2.3.0 | 2023-12-15 | [33522](https://github.com/airbytehq/airbyte/pull/33522) | Sync streams concurrently in all sync modes | +| 2.2.2 | 2024-01-04 | [33936](https://github.com/airbytehq/airbyte/pull/33936) | Prepare for airbyte-lib | +| 2.2.1 | 2023-12-12 | [33342](https://github.com/airbytehq/airbyte/pull/33342) | Added new ContentDocumentLink stream | +| 2.2.0 | 2023-12-12 | [33350](https://github.com/airbytehq/airbyte/pull/33350) | Sync streams concurrently on full refresh | +| 2.1.6 | 2023-11-28 | [32535](https://github.com/airbytehq/airbyte/pull/32535) | Run full refresh syncs concurrently | +| 2.1.5 | 2023-10-18 | [31543](https://github.com/airbytehq/airbyte/pull/31543) | Base image migration: remove Dockerfile and use the python-connector-base image | +| 2.1.4 | 2023-08-17 | [29538](https://github.com/airbytehq/airbyte/pull/29538) | Fix encoding guess | +| 2.1.3 | 2023-08-17 | [29500](https://github.com/airbytehq/airbyte/pull/29500) | handle expired refresh token error | +| 2.1.2 | 2023-08-10 | [28781](https://github.com/airbytehq/airbyte/pull/28781) | Fix pagination for BULK API jobs; Add option to force use BULK API | | 2.1.1 | 2023-07-06 | [28021](https://github.com/airbytehq/airbyte/pull/28021) | Several Vulnerabilities Fixes; switched to use alpine instead of slim, CVE-2022-40897, CVE-2023-29383, CVE-2023-31484, CVE-2016-2781 | -| 2.1.0 | 2023-06-26 | [27726](https://github.com/airbytehq/airbyte/pull/27726) | License Update: Elv2 | -| 2.0.14 | 2023-05-04 | [25794](https://github.com/airbytehq/airbyte/pull/25794) | Avoid pandas inferring wrong data types by forcing all data type as object | -| 2.0.13 | 2023-04-30 | [25700](https://github.com/airbytehq/airbyte/pull/25700) | Remove pagination and query limits | -| 2.0.12 | 2023-04-25 | [25507](https://github.com/airbytehq/airbyte/pull/25507) | Update API version to 57 | -| 2.0.11 | 2023-04-20 | [25352](https://github.com/airbytehq/airbyte/pull/25352) | Update API version to 53 | -| 2.0.10 | 2023-04-05 | [24888](https://github.com/airbytehq/airbyte/pull/24888) | Add more frequent checkpointing | -| 2.0.9 | 2023-03-29 | [24660](https://github.com/airbytehq/airbyte/pull/24660) | Set default start_date. Sync for last two years if start date is not present in config | -| 2.0.8 | 2023-03-30 | [24690](https://github.com/airbytehq/airbyte/pull/24690) | Handle rate limit for bulk operations | -| 2.0.7 | 2023-03-14 | [24071](https://github.com/airbytehq/airbyte/pull/24071) | Remove regex pattern for start_date, use format validation instead | -| 2.0.6 | 2023-03-03 | [22891](https://github.com/airbytehq/airbyte/pull/22891) | Specified date formatting in specification | -| 2.0.5 | 2023-03-01 | [23610](https://github.com/airbytehq/airbyte/pull/23610) | Handle different Salesforce page size for different queries | -| 2.0.4 | 2023-02-24 | [22636](https://github.com/airbytehq/airbyte/pull/22636) | Turn on default HttpAvailabilityStrategy for all streams that are not of class BulkSalesforceStream | -| 2.0.3 | 2023-02-17 | [23190](https://github.com/airbytehq/airbyte/pull/23190) | In case properties are chunked, fetch primary key in every chunk | -| 2.0.2 | 2023-02-13 | [22896](https://github.com/airbytehq/airbyte/pull/22896) | Count the URL length based on encoded params | -| 2.0.1 | 2023-02-08 | [22597](https://github.com/airbytehq/airbyte/pull/22597) | Make multiple requests if a REST stream has too many properties | -| 2.0.0 | 2023-02-02 | [22322](https://github.com/airbytehq/airbyte/pull/22322) | Remove `ActivityMetricRollup` stream | -| 1.0.30 | 2023-01-27 | [22016](https://github.com/airbytehq/airbyte/pull/22016) | Set `AvailabilityStrategy` for streams explicitly to `None` | -| 1.0.29 | 2023-01-05 | [20886](https://github.com/airbytehq/airbyte/pull/20886) | Remove `ActivityMetric` stream | -| 1.0.28 | 2022-12-29 | [20927](https://github.com/airbytehq/airbyte/pull/20927) | Fix tests; add expected records | -| 1.0.27 | 2022-11-29 | [19869](https://github.com/airbytehq/airbyte/pull/19869) | Remove `AccountHistory` from unsupported BULK streams | -| 1.0.26 | 2022-11-15 | [19286](https://github.com/airbytehq/airbyte/pull/19286) | Bugfix: fallback to REST API if entity is not supported by BULK API | -| 1.0.25 | 2022-11-13 | [19294](https://github.com/airbytehq/airbyte/pull/19294) | Use the correct encoding for non UTF-8 objects and data | -| 1.0.24 | 2022-11-01 | [18799](https://github.com/airbytehq/airbyte/pull/18799) | Update list of unsupported Bulk API objects | -| 1.0.23 | 2022-11-01 | [18753](https://github.com/airbytehq/airbyte/pull/18753) | Add error_display_message for ConnectionError | -| 1.0.22 | 2022-10-12 | [17615](https://github.com/airbytehq/airbyte/pull/17615) | Make paging work, if `cursor_field` is not changed inside one page | -| 1.0.21 | 2022-10-10 | [17778](https://github.com/airbytehq/airbyte/pull/17778) | Add `EventWhoRelation` to the list of unsupported Bulk API objects. | -| 1.0.20 | 2022-09-30 | [17453](https://github.com/airbytehq/airbyte/pull/17453) | Check objects that are not supported by the Bulk API (v52.0) | -| 1.0.19 | 2022-09-29 | [17314](https://github.com/airbytehq/airbyte/pull/17314) | Fixed bug with decoding response | -| 1.0.18 | 2022-09-28 | [17304](https://github.com/airbytehq/airbyte/pull/17304) | Migrate to per-stream states. | -| 1.0.17 | 2022-09-23 | [17094](https://github.com/airbytehq/airbyte/pull/17094) | Tune connection check: fetch a list of available streams | -| 1.0.16 | 2022-09-21 | [17001](https://github.com/airbytehq/airbyte/pull/17001) | Improve writing file of decode | -| 1.0.15 | 2022-08-30 | [16086](https://github.com/airbytehq/airbyte/pull/16086) | Improve API type detection | -| 1.0.14 | 2022-08-29 | [16119](https://github.com/airbytehq/airbyte/pull/16119) | Exclude `KnowledgeArticleVersion` from using bulk API | -| 1.0.13 | 2022-08-23 | [15901](https://github.com/airbytehq/airbyte/pull/15901) | Exclude `KnowledgeArticle` from using bulk API | -| 1.0.12 | 2022-08-09 | [15444](https://github.com/airbytehq/airbyte/pull/15444) | Fixed bug when `Bulk Job` was timeout by the connector, but remained running on the server | -| 1.0.11 | 2022-07-07 | [13729](https://github.com/airbytehq/airbyte/pull/13729) | Improve configuration field descriptions | -| 1.0.10 | 2022-06-09 | [13658](https://github.com/airbytehq/airbyte/pull/13658) | Correct logic to sync stream larger than page size | -| 1.0.9 | 2022-05-06 | [12685](https://github.com/airbytehq/airbyte/pull/12685) | Update CDK to v0.1.56 to emit an `AirbyeTraceMessage` on uncaught exceptions | -| 1.0.8 | 2022-05-04 | [12576](https://github.com/airbytehq/airbyte/pull/12576) | Decode responses as utf-8 and fallback to ISO-8859-1 if needed | -| 1.0.7 | 2022-05-03 | [12552](https://github.com/airbytehq/airbyte/pull/12552) | Decode responses as ISO-8859-1 instead of utf-8 | -| 1.0.6 | 2022-04-27 | [12335](https://github.com/airbytehq/airbyte/pull/12335) | Adding fixtures to mock time.sleep for connectors that explicitly sleep | -| 1.0.5 | 2022-04-25 | [12304](https://github.com/airbytehq/airbyte/pull/12304) | Add `Describe` stream | -| 1.0.4 | 2022-04-20 | [12230](https://github.com/airbytehq/airbyte/pull/12230) | Update connector to use a `spec.yaml` | -| 1.0.3 | 2022-04-04 | [11692](https://github.com/airbytehq/airbyte/pull/11692) | Optimised memory usage for `BULK` API calls | -| 1.0.2 | 2022-03-01 | [10751](https://github.com/airbytehq/airbyte/pull/10751) | Fix broken link anchor in connector configuration | -| 1.0.1 | 2022-02-27 | [10679](https://github.com/airbytehq/airbyte/pull/10679) | Reorganize input parameter order on the UI | -| 1.0.0 | 2022-02-27 | [10516](https://github.com/airbytehq/airbyte/pull/10516) | Speed up schema discovery by using parallelism | -| 0.1.23 | 2022-02-10 | [10141](https://github.com/airbytehq/airbyte/pull/10141) | Processing of failed jobs | -| 0.1.22 | 2022-02-02 | [10012](https://github.com/airbytehq/airbyte/pull/10012) | Increase CSV field_size_limit | -| 0.1.21 | 2022-01-28 | [9499](https://github.com/airbytehq/airbyte/pull/9499) | If a sync reaches daily rate limit it ends the sync early with success status. Read more in `Performance considerations` section | -| 0.1.20 | 2022-01-26 | [9757](https://github.com/airbytehq/airbyte/pull/9757) | Parse CSV with "unix" dialect | -| 0.1.19 | 2022-01-25 | [8617](https://github.com/airbytehq/airbyte/pull/8617) | Update connector fields title/description | -| 0.1.18 | 2022-01-20 | [9478](https://github.com/airbytehq/airbyte/pull/9478) | Add available stream filtering by `queryable` flag | -| 0.1.17 | 2022-01-19 | [9302](https://github.com/airbytehq/airbyte/pull/9302) | Deprecate API Type parameter | -| 0.1.16 | 2022-01-18 | [9151](https://github.com/airbytehq/airbyte/pull/9151) | Fix pagination in REST API streams | -| 0.1.15 | 2022-01-11 | [9409](https://github.com/airbytehq/airbyte/pull/9409) | Correcting the presence of an extra `else` handler in the error handling | -| 0.1.14 | 2022-01-11 | [9386](https://github.com/airbytehq/airbyte/pull/9386) | Handling 400 error, while `sobject` doesn't support `query` or `queryAll` requests | -| 0.1.13 | 2022-01-11 | [8797](https://github.com/airbytehq/airbyte/pull/8797) | Switched from authSpecification to advanced_auth in specefication | -| 0.1.12 | 2021-12-23 | [8871](https://github.com/airbytehq/airbyte/pull/8871) | Fix `examples` for new field in specification | -| 0.1.11 | 2021-12-23 | [8871](https://github.com/airbytehq/airbyte/pull/8871) | Add the ability to filter streams by user | -| 0.1.10 | 2021-12-23 | [9005](https://github.com/airbytehq/airbyte/pull/9005) | Handling 400 error when a stream is not queryable | -| 0.1.9 | 2021-12-07 | [8405](https://github.com/airbytehq/airbyte/pull/8405) | Filter 'null' byte(s) in HTTP responses | -| 0.1.8 | 2021-11-30 | [8191](https://github.com/airbytehq/airbyte/pull/8191) | Make `start_date` optional and change its format to `YYYY-MM-DD` | -| 0.1.7 | 2021-11-24 | [8206](https://github.com/airbytehq/airbyte/pull/8206) | Handling 400 error when trying to create a job for sync using Bulk API. | -| 0.1.6 | 2021-11-16 | [8009](https://github.com/airbytehq/airbyte/pull/8009) | Fix retring of BULK jobs | -| 0.1.5 | 2021-11-15 | [7885](https://github.com/airbytehq/airbyte/pull/7885) | Add `Transform` for output records | -| 0.1.4 | 2021-11-09 | [7778](https://github.com/airbytehq/airbyte/pull/7778) | Fix types for `anyType` fields | -| 0.1.3 | 2021-11-06 | [7592](https://github.com/airbytehq/airbyte/pull/7592) | Fix getting `anyType` fields using BULK API | -| 0.1.2 | 2021-09-30 | [6438](https://github.com/airbytehq/airbyte/pull/6438) | Annotate Oauth2 flow initialization parameters in connector specification | -| 0.1.1 | 2021-09-21 | [6209](https://github.com/airbytehq/airbyte/pull/6209) | Fix bug with pagination for BULK API | -| 0.1.0 | 2021-09-08 | [5619](https://github.com/airbytehq/airbyte/pull/5619) | Salesforce Aitbyte-Native Connector | +| 2.1.0 | 2023-06-26 | [27726](https://github.com/airbytehq/airbyte/pull/27726) | License Update: Elv2 | +| 2.0.14 | 2023-05-04 | [25794](https://github.com/airbytehq/airbyte/pull/25794) | Avoid pandas inferring wrong data types by forcing all data type as object | +| 2.0.13 | 2023-04-30 | [25700](https://github.com/airbytehq/airbyte/pull/25700) | Remove pagination and query limits | +| 2.0.12 | 2023-04-25 | [25507](https://github.com/airbytehq/airbyte/pull/25507) | Update API version to 57 | +| 2.0.11 | 2023-04-20 | [25352](https://github.com/airbytehq/airbyte/pull/25352) | Update API version to 53 | +| 2.0.10 | 2023-04-05 | [24888](https://github.com/airbytehq/airbyte/pull/24888) | Add more frequent checkpointing | +| 2.0.9 | 2023-03-29 | [24660](https://github.com/airbytehq/airbyte/pull/24660) | Set default start_date. Sync for last two years if start date is not present in config | +| 2.0.8 | 2023-03-30 | [24690](https://github.com/airbytehq/airbyte/pull/24690) | Handle rate limit for bulk operations | +| 2.0.7 | 2023-03-14 | [24071](https://github.com/airbytehq/airbyte/pull/24071) | Remove regex pattern for start_date, use format validation instead | +| 2.0.6 | 2023-03-03 | [22891](https://github.com/airbytehq/airbyte/pull/22891) | Specified date formatting in specification | +| 2.0.5 | 2023-03-01 | [23610](https://github.com/airbytehq/airbyte/pull/23610) | Handle different Salesforce page size for different queries | +| 2.0.4 | 2023-02-24 | [22636](https://github.com/airbytehq/airbyte/pull/22636) | Turn on default HttpAvailabilityStrategy for all streams that are not of class BulkSalesforceStream | +| 2.0.3 | 2023-02-17 | [23190](https://github.com/airbytehq/airbyte/pull/23190) | In case properties are chunked, fetch primary key in every chunk | +| 2.0.2 | 2023-02-13 | [22896](https://github.com/airbytehq/airbyte/pull/22896) | Count the URL length based on encoded params | +| 2.0.1 | 2023-02-08 | [22597](https://github.com/airbytehq/airbyte/pull/22597) | Make multiple requests if a REST stream has too many properties | +| 2.0.0 | 2023-02-02 | [22322](https://github.com/airbytehq/airbyte/pull/22322) | Remove `ActivityMetricRollup` stream | +| 1.0.30 | 2023-01-27 | [22016](https://github.com/airbytehq/airbyte/pull/22016) | Set `AvailabilityStrategy` for streams explicitly to `None` | +| 1.0.29 | 2023-01-05 | [20886](https://github.com/airbytehq/airbyte/pull/20886) | Remove `ActivityMetric` stream | +| 1.0.28 | 2022-12-29 | [20927](https://github.com/airbytehq/airbyte/pull/20927) | Fix tests; add expected records | +| 1.0.27 | 2022-11-29 | [19869](https://github.com/airbytehq/airbyte/pull/19869) | Remove `AccountHistory` from unsupported BULK streams | +| 1.0.26 | 2022-11-15 | [19286](https://github.com/airbytehq/airbyte/pull/19286) | Bugfix: fallback to REST API if entity is not supported by BULK API | +| 1.0.25 | 2022-11-13 | [19294](https://github.com/airbytehq/airbyte/pull/19294) | Use the correct encoding for non UTF-8 objects and data | +| 1.0.24 | 2022-11-01 | [18799](https://github.com/airbytehq/airbyte/pull/18799) | Update list of unsupported Bulk API objects | +| 1.0.23 | 2022-11-01 | [18753](https://github.com/airbytehq/airbyte/pull/18753) | Add error_display_message for ConnectionError | +| 1.0.22 | 2022-10-12 | [17615](https://github.com/airbytehq/airbyte/pull/17615) | Make paging work, if `cursor_field` is not changed inside one page | +| 1.0.21 | 2022-10-10 | [17778](https://github.com/airbytehq/airbyte/pull/17778) | Add `EventWhoRelation` to the list of unsupported Bulk API objects. | +| 1.0.20 | 2022-09-30 | [17453](https://github.com/airbytehq/airbyte/pull/17453) | Check objects that are not supported by the Bulk API (v52.0) | +| 1.0.19 | 2022-09-29 | [17314](https://github.com/airbytehq/airbyte/pull/17314) | Fixed bug with decoding response | +| 1.0.18 | 2022-09-28 | [17304](https://github.com/airbytehq/airbyte/pull/17304) | Migrate to per-stream states. | +| 1.0.17 | 2022-09-23 | [17094](https://github.com/airbytehq/airbyte/pull/17094) | Tune connection check: fetch a list of available streams | +| 1.0.16 | 2022-09-21 | [17001](https://github.com/airbytehq/airbyte/pull/17001) | Improve writing file of decode | +| 1.0.15 | 2022-08-30 | [16086](https://github.com/airbytehq/airbyte/pull/16086) | Improve API type detection | +| 1.0.14 | 2022-08-29 | [16119](https://github.com/airbytehq/airbyte/pull/16119) | Exclude `KnowledgeArticleVersion` from using bulk API | +| 1.0.13 | 2022-08-23 | [15901](https://github.com/airbytehq/airbyte/pull/15901) | Exclude `KnowledgeArticle` from using bulk API | +| 1.0.12 | 2022-08-09 | [15444](https://github.com/airbytehq/airbyte/pull/15444) | Fixed bug when `Bulk Job` was timeout by the connector, but remained running on the server | +| 1.0.11 | 2022-07-07 | [13729](https://github.com/airbytehq/airbyte/pull/13729) | Improve configuration field descriptions | +| 1.0.10 | 2022-06-09 | [13658](https://github.com/airbytehq/airbyte/pull/13658) | Correct logic to sync stream larger than page size | +| 1.0.9 | 2022-05-06 | [12685](https://github.com/airbytehq/airbyte/pull/12685) | Update CDK to v0.1.56 to emit an `AirbyeTraceMessage` on uncaught exceptions | +| 1.0.8 | 2022-05-04 | [12576](https://github.com/airbytehq/airbyte/pull/12576) | Decode responses as utf-8 and fallback to ISO-8859-1 if needed | +| 1.0.7 | 2022-05-03 | [12552](https://github.com/airbytehq/airbyte/pull/12552) | Decode responses as ISO-8859-1 instead of utf-8 | +| 1.0.6 | 2022-04-27 | [12335](https://github.com/airbytehq/airbyte/pull/12335) | Adding fixtures to mock time.sleep for connectors that explicitly sleep | +| 1.0.5 | 2022-04-25 | [12304](https://github.com/airbytehq/airbyte/pull/12304) | Add `Describe` stream | +| 1.0.4 | 2022-04-20 | [12230](https://github.com/airbytehq/airbyte/pull/12230) | Update connector to use a `spec.yaml` | +| 1.0.3 | 2022-04-04 | [11692](https://github.com/airbytehq/airbyte/pull/11692) | Optimised memory usage for `BULK` API calls | +| 1.0.2 | 2022-03-01 | [10751](https://github.com/airbytehq/airbyte/pull/10751) | Fix broken link anchor in connector configuration | +| 1.0.1 | 2022-02-27 | [10679](https://github.com/airbytehq/airbyte/pull/10679) | Reorganize input parameter order on the UI | +| 1.0.0 | 2022-02-27 | [10516](https://github.com/airbytehq/airbyte/pull/10516) | Speed up schema discovery by using parallelism | +| 0.1.23 | 2022-02-10 | [10141](https://github.com/airbytehq/airbyte/pull/10141) | Processing of failed jobs | +| 0.1.22 | 2022-02-02 | [10012](https://github.com/airbytehq/airbyte/pull/10012) | Increase CSV field_size_limit | +| 0.1.21 | 2022-01-28 | [9499](https://github.com/airbytehq/airbyte/pull/9499) | If a sync reaches daily rate limit it ends the sync early with success status. Read more in `Performance considerations` section | +| 0.1.20 | 2022-01-26 | [9757](https://github.com/airbytehq/airbyte/pull/9757) | Parse CSV with "unix" dialect | +| 0.1.19 | 2022-01-25 | [8617](https://github.com/airbytehq/airbyte/pull/8617) | Update connector fields title/description | +| 0.1.18 | 2022-01-20 | [9478](https://github.com/airbytehq/airbyte/pull/9478) | Add available stream filtering by `queryable` flag | +| 0.1.17 | 2022-01-19 | [9302](https://github.com/airbytehq/airbyte/pull/9302) | Deprecate API Type parameter | +| 0.1.16 | 2022-01-18 | [9151](https://github.com/airbytehq/airbyte/pull/9151) | Fix pagination in REST API streams | +| 0.1.15 | 2022-01-11 | [9409](https://github.com/airbytehq/airbyte/pull/9409) | Correcting the presence of an extra `else` handler in the error handling | +| 0.1.14 | 2022-01-11 | [9386](https://github.com/airbytehq/airbyte/pull/9386) | Handling 400 error, while `sobject` doesn't support `query` or `queryAll` requests | +| 0.1.13 | 2022-01-11 | [8797](https://github.com/airbytehq/airbyte/pull/8797) | Switched from authSpecification to advanced_auth in specefication | +| 0.1.12 | 2021-12-23 | [8871](https://github.com/airbytehq/airbyte/pull/8871) | Fix `examples` for new field in specification | +| 0.1.11 | 2021-12-23 | [8871](https://github.com/airbytehq/airbyte/pull/8871) | Add the ability to filter streams by user | +| 0.1.10 | 2021-12-23 | [9005](https://github.com/airbytehq/airbyte/pull/9005) | Handling 400 error when a stream is not queryable | +| 0.1.9 | 2021-12-07 | [8405](https://github.com/airbytehq/airbyte/pull/8405) | Filter 'null' byte(s) in HTTP responses | +| 0.1.8 | 2021-11-30 | [8191](https://github.com/airbytehq/airbyte/pull/8191) | Make `start_date` optional and change its format to `YYYY-MM-DD` | +| 0.1.7 | 2021-11-24 | [8206](https://github.com/airbytehq/airbyte/pull/8206) | Handling 400 error when trying to create a job for sync using Bulk API. | +| 0.1.6 | 2021-11-16 | [8009](https://github.com/airbytehq/airbyte/pull/8009) | Fix retring of BULK jobs | +| 0.1.5 | 2021-11-15 | [7885](https://github.com/airbytehq/airbyte/pull/7885) | Add `Transform` for output records | +| 0.1.4 | 2021-11-09 | [7778](https://github.com/airbytehq/airbyte/pull/7778) | Fix types for `anyType` fields | +| 0.1.3 | 2021-11-06 | [7592](https://github.com/airbytehq/airbyte/pull/7592) | Fix getting `anyType` fields using BULK API | +| 0.1.2 | 2021-09-30 | [6438](https://github.com/airbytehq/airbyte/pull/6438) | Annotate Oauth2 flow initialization parameters in connector specification | +| 0.1.1 | 2021-09-21 | [6209](https://github.com/airbytehq/airbyte/pull/6209) | Fix bug with pagination for BULK API | +| 0.1.0 | 2021-09-08 | [5619](https://github.com/airbytehq/airbyte/pull/5619) | Salesforce Aitbyte-Native Connector |
From 3866702778731e636ae64775b60d11bb3c974993 Mon Sep 17 00:00:00 2001 From: Aldo Gonzalez <168454423+aldogonzalez8@users.noreply.github.com> Date: Thu, 3 Oct 2024 07:55:51 -0600 Subject: [PATCH 010/379] =?UTF-8?q?=E2=9C=A8=20feat(Source=20sftp-bulk):?= =?UTF-8?q?=20upgrade=20to=20CDK=205=20(#46323)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../integration_tests/integration_test.py | 15 +- .../connectors/source-sftp-bulk/metadata.yaml | 2 +- .../connectors/source-sftp-bulk/poetry.lock | 1181 +++++++++++------ .../source-sftp-bulk/pyproject.toml | 4 +- docs/integrations/sources/sftp-bulk.md | 1 + 5 files changed, 757 insertions(+), 446 deletions(-) diff --git a/airbyte-integrations/connectors/source-sftp-bulk/integration_tests/integration_test.py b/airbyte-integrations/connectors/source-sftp-bulk/integration_tests/integration_test.py index 344ec00b46857..457c91552c757 100644 --- a/airbyte-integrations/connectors/source-sftp-bulk/integration_tests/integration_test.py +++ b/airbyte-integrations/connectors/source-sftp-bulk/integration_tests/integration_test.py @@ -7,7 +7,9 @@ from copy import deepcopy from typing import Any, Mapping -from airbyte_cdk import ConfiguredAirbyteCatalog, Status +import pytest +from airbyte_cdk import AirbyteTracedException, ConfiguredAirbyteCatalog, Status +from airbyte_cdk.sources.declarative.models import FailureType from airbyte_cdk.test.entrypoint_wrapper import read from source_sftp_bulk import SourceSFTPBulk @@ -21,14 +23,17 @@ def test_check_invalid_private_key_config(configured_catalog: ConfiguredAirbyteC "private_key": "-----BEGIN OPENSSH PRIVATE KEY-----\nbaddata\n-----END OPENSSH PRIVATE KEY-----", } } - outcome = SourceSFTPBulk(catalog=configured_catalog, config=invalid_config, state=None).check(logger, invalid_config) - assert outcome.status == Status.FAILED + with pytest.raises(AirbyteTracedException) as exc_info: + SourceSFTPBulk(catalog=configured_catalog, config=invalid_config, state=None).check(logger, invalid_config) + + assert exc_info.value.failure_type.value == FailureType.config_error.value def test_check_invalid_config(configured_catalog: ConfiguredAirbyteCatalog, config: Mapping[str, Any]): invalid_config = config | {"credentials": {"auth_type": "password", "password": "wrongpass"}} - outcome = SourceSFTPBulk(catalog=configured_catalog, config=invalid_config, state=None).check(logger, invalid_config) - assert outcome.status == Status.FAILED + with pytest.raises(AirbyteTracedException) as exc_info: + SourceSFTPBulk(catalog=configured_catalog, config=invalid_config, state=None).check(logger, invalid_config) + assert exc_info.value.failure_type.value == FailureType.config_error.value def test_check_valid_config_private_key(configured_catalog: ConfiguredAirbyteCatalog, config_private_key: Mapping[str, Any]): diff --git a/airbyte-integrations/connectors/source-sftp-bulk/metadata.yaml b/airbyte-integrations/connectors/source-sftp-bulk/metadata.yaml index aa5ffdf1a9e72..0ad31fa8aed19 100644 --- a/airbyte-integrations/connectors/source-sftp-bulk/metadata.yaml +++ b/airbyte-integrations/connectors/source-sftp-bulk/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: file connectorType: source definitionId: 31e3242f-dee7-4cdc-a4b8-8e06c5458517 - dockerImageTag: 1.1.0 + dockerImageTag: 1.2.0 dockerRepository: airbyte/source-sftp-bulk documentationUrl: https://docs.airbyte.com/integrations/sources/sftp-bulk githubIssueLabel: source-sftp-bulk diff --git a/airbyte-integrations/connectors/source-sftp-bulk/poetry.lock b/airbyte-integrations/connectors/source-sftp-bulk/poetry.lock index 9cdb8f23acb16..590621de99851 100644 --- a/airbyte-integrations/connectors/source-sftp-bulk/poetry.lock +++ b/airbyte-integrations/connectors/source-sftp-bulk/poetry.lock @@ -1,18 +1,18 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "4.4.0" +version = "5.10.1" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-4.4.0-py3-none-any.whl", hash = "sha256:8d0c5949761421acb826b0b06aa2145535549fa82d5d4cf9be795a8756e26085"}, - {file = "airbyte_cdk-4.4.0.tar.gz", hash = "sha256:cf23d41099158df967e4077ccc7b3e2baef2e74f805f4480e7277cc0a851efd5"}, + {file = "airbyte_cdk-5.10.1-py3-none-any.whl", hash = "sha256:b965f38b28b303a8c85da29f80d9669c086cf0c502b919793b5cf66300d81997"}, + {file = "airbyte_cdk-5.10.1.tar.gz", hash = "sha256:9f100bf3da49aa087f11c9e42d9cc16801d232823a0c587eaf497e9fc7946c5a"}, ] [package.dependencies] -airbyte-protocol-models-pdv2 = ">=0.12.2,<0.13.0" +airbyte-protocol-models-dataclasses = ">=0.13,<0.14" avro = {version = ">=1.11.2,<1.12.0", optional = true, markers = "extra == \"file-based\""} backoff = "*" cachetools = "*" @@ -28,7 +28,8 @@ jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" markdown = {version = "*", optional = true, markers = "extra == \"file-based\""} nltk = "3.8.1" -pandas = {version = "2.2.0", optional = true, markers = "extra == \"file-based\""} +orjson = ">=3.10.7,<4.0.0" +pandas = "2.2.2" pdf2image = {version = "1.16.3", optional = true, markers = "extra == \"file-based\""} "pdfminer.six" = {version = "20221105", optional = true, markers = "extra == \"file-based\""} pendulum = "<3.0.0" @@ -39,33 +40,32 @@ pyrate-limiter = ">=3.1.0,<3.2.0" pytesseract = {version = "0.3.10", optional = true, markers = "extra == \"file-based\""} python-calamine = {version = "0.2.3", optional = true, markers = "extra == \"file-based\""} python-dateutil = "*" +python-snappy = {version = "0.7.3", optional = true, markers = "extra == \"file-based\""} pytz = "2024.1" PyYAML = ">=6.0.1,<7.0.0" requests = "*" requests_cache = "*" +serpyco-rs = ">=1.10.2,<2.0.0" unstructured = {version = "0.10.27", extras = ["docx", "pptx"], optional = true, markers = "extra == \"file-based\""} "unstructured.pytesseract" = {version = ">=0.3.12", optional = true, markers = "extra == \"file-based\""} wcmatch = "8.4" [package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pandas (==2.2.0)", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] [[package]] -name = "airbyte-protocol-models-pdv2" -version = "0.12.2" -description = "Declares the Airbyte Protocol." +name = "airbyte-protocol-models-dataclasses" +version = "0.13.0" +description = "Declares the Airbyte Protocol using Python Dataclasses. Dataclasses in Python have less performance overhead compared to Pydantic models, making them a more efficient choice for scenarios where speed and memory usage are critical" optional = false python-versions = ">=3.8" files = [ - {file = "airbyte_protocol_models_pdv2-0.12.2-py3-none-any.whl", hash = "sha256:8b3f9d0388928547cdf2e9134c0d589e4bcaa6f63bf71a21299f6824bfb7ad0e"}, - {file = "airbyte_protocol_models_pdv2-0.12.2.tar.gz", hash = "sha256:130c9ab289f3f53749ce63ff1abbfb67a44b7e5bd2794865315a2976138b672b"}, + {file = "airbyte_protocol_models_dataclasses-0.13.0-py3-none-any.whl", hash = "sha256:0aedb99ffc4f9aab0ce91bba2c292fa17cd8fd4b42eeba196d6a16c20bbbd7a5"}, + {file = "airbyte_protocol_models_dataclasses-0.13.0.tar.gz", hash = "sha256:72e67850d661e2808406aec5839b3158ebb94d3553b798dbdae1b4a278548d2f"}, ] -[package.dependencies] -pydantic = ">=2.7.2,<3.0.0" - [[package]] name = "annotated-types" version = "0.7.0" @@ -77,6 +77,28 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[[package]] +name = "anyio" +version = "4.6.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +files = [ + {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, + {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] + [[package]] name = "atomicwrites" version = "1.4.1" @@ -87,6 +109,17 @@ files = [ {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, ] +[[package]] +name = "attributes-doc" +version = "0.4.0" +description = "PEP 224 implementation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "attributes-doc-0.4.0.tar.gz", hash = "sha256:b1576c94a714e9fc2c65c47cf10d0c8e1a5f7c4f5ae7f69006be108d95cbfbfb"}, + {file = "attributes_doc-0.4.0-py2.py3-none-any.whl", hash = "sha256:4c3007d9e58f3a6cb4b9c614c4d4ce2d92161581f28e594ddd8241cc3a113bdd"}, +] + [[package]] name = "attrs" version = "24.2.0" @@ -194,35 +227,35 @@ lxml = ["lxml"] [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] name = "cachetools" -version = "5.4.0" +version = "5.5.0" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.4.0-py3-none-any.whl", hash = "sha256:3ae3b49a3d5e28a77a0be2b37dbcb89005058959cb2323858c2657c4a8cab474"}, - {file = "cachetools-5.4.0.tar.gz", hash = "sha256:b8adc2e7c07f105ced7bc56dbb6dfbe7c4a00acce20e2227b3f355be89bc6827"}, + {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, + {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, ] [[package]] name = "cattrs" -version = "23.2.3" +version = "24.1.2" description = "Composable complex class support for attrs and dataclasses." optional = false python-versions = ">=3.8" files = [ - {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, - {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, + {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, + {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, ] [package.dependencies] @@ -234,6 +267,7 @@ typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_ver bson = ["pymongo (>=4.4.0)"] cbor2 = ["cbor2 (>=5.4.6)"] msgpack = ["msgpack (>=1.0.5)"] +msgspec = ["msgspec (>=0.18.5)"] orjson = ["orjson (>=3.9.2)"] pyyaml = ["pyyaml (>=6.0)"] tomlkit = ["tomlkit (>=0.11.8)"] @@ -241,89 +275,89 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] name = "cffi" -version = "1.17.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, - {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, - {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, - {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, - {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, - {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, - {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, - {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, - {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, - {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, - {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, - {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, - {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, - {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, - {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, - {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -464,6 +498,108 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "cramjam" +version = "2.8.4" +description = "Thin Python bindings to de/compression algorithms in Rust" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cramjam-2.8.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e9e112514363261a896f85948d5d055dccaab2a1fa77d440f55030464118a95a"}, + {file = "cramjam-2.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee2441028e813ecc1d10b90640dd2b9649cdefdfe80af1d838cf00fd935ee5e7"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:86a3e0f91176eacd23f8d63b01139a63687cb3fa9670996b3bfa7c38eac6cb7e"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e34aa083a10079c8814091c0fe9080238a82569fa08058cf79d12b3f9710fc5"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:465ccf470536e065822daa2a083dedf18df8133278e9132b147bd1721211d707"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30aba9e9c737c986d26a809b9e36628452c075234a5e835b085ab7c2b9574dc"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:52f710bd7fa9b5a374e2e2281d7d672f9eb89263c531643f95fab93e98200c68"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6622095ffa6cae77c9e8036a39757fdb1d3cabc3444ad892e5a705882ed06c8d"}, + {file = "cramjam-2.8.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bc618c018594c20696a42faf8a144e1508b8a4312e0d8697f6c64b337e37e5d9"}, + {file = "cramjam-2.8.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:30c75259f58583f96ad9cef7202c70cd6604a9dabf9834211df48a27ec85f84a"}, + {file = "cramjam-2.8.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b9b4bbe7ef3318b2f2aed2a8a658b401a9ad9314d50372f9bb97cdef093f326"}, + {file = "cramjam-2.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d7a7c10fb2602d7c8c4dbe4eeacf352477cc1af939fd3537f4e1cd42526855b8"}, + {file = "cramjam-2.8.4-cp310-none-win32.whl", hash = "sha256:831ee2424b095f51c9719b0479d9b413bc849e47160b904a7a8e4a8dcf41d2f7"}, + {file = "cramjam-2.8.4-cp310-none-win_amd64.whl", hash = "sha256:4f6bf5752a0322cc63f955343c390253034b609d167930584bb392bf4179c444"}, + {file = "cramjam-2.8.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d48fd69224a2f4df187856021f545a65486575cba92bb32a14ccad1ce54584a9"}, + {file = "cramjam-2.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c53d8dce609607370f01a5db65c79db75db08e9e89cbb9c2a2212b7a3c0b8af3"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d08b8ff282545ab3a414db845e430320555ff7a7eb90517b2c9554e24ca0d763"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac5fb30cf6c03f72397ead8584592dc071f486c76199c46c28e7de619174ba1f"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0d86cfb2b457a337db4b7c8cf6a9dafc018806750f28b3c27d71b94e2d4379d0"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59565a16ce0c71993d3947bdf9301e0d69866c15f37d67d2875809eca998d841"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6741544b372ba3e6c65db1c44b1a75e48743d091b76a09d7d832b1fb0a0ef518"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5f486bacd46f364137f5b164a879821115118d7f866a838429eb10aee59a14b"}, + {file = "cramjam-2.8.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e02081bfb9998f5ff816f3e984a62ca91835e3483c578812374aaf5cb6ed921"}, + {file = "cramjam-2.8.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:1c63e856727726a1ee2a77a12bfccfcd70ee3e5bbe9e6d07bd00be5a1eb6ec10"}, + {file = "cramjam-2.8.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:74fb59137946b691e8987349e9117e2897f3b0484116ad6e2b1b4de0d082430f"}, + {file = "cramjam-2.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c7952e0cd6f37a04983cb027175f91f225d7c30625038b8930b6fd3f00619350"}, + {file = "cramjam-2.8.4-cp311-none-win32.whl", hash = "sha256:2bfd5c442e6031b146a93b1cc37d42c04b6d01bb652c9f123338c482c3943038"}, + {file = "cramjam-2.8.4-cp311-none-win_amd64.whl", hash = "sha256:73c95cae138bc8f5604bbbc97860f158c4f77e046304dd4f9c9838021d64217a"}, + {file = "cramjam-2.8.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:5056f476917d31c69719883bbe12272288b77ab5ea5ee55fbcbb6c0dd10e52da"}, + {file = "cramjam-2.8.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8359d31dca4bd8286e031f1a21f20f62f4e7a4586c407e916fd2de101c719a8b"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a1aee32556b9f7ecc61c6c4675798153ac511b5b72db9f56d2a8c20c1fa6d563"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:005bfe79ae38ea1df67fd3079089287640c780bf112aab4b6a3a9f12f0bf3c91"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51662c79c5a2256824f3acca9ccdbeaad3626c90ae46a19ef25f186d70a9ac69"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c744148e33002cefd4aaa3641800c0008fa177c8c09230c09d30d6e7ab473a4"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c897d2443cf9f3685a51ecc28c669aad95b6a610de7883647fe450cc742e2ea7"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:741b0c29d701d470243b9cad09a3e21c2ab83190710df680fd84baea1b262089"}, + {file = "cramjam-2.8.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4cfc6d838afb90a59d2c721fe8d78c2a333edf5c370b3ce8f9823c49bc52e5d0"}, + {file = "cramjam-2.8.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:977e380a567f1bcdb0f1156820fedc57727c6c639769b846b39ad7fc1be5563b"}, + {file = "cramjam-2.8.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3f16dea7f430bb8a5cf2e2a8eece5fa7a6e58bffae3913083f6c20de50ce85bd"}, + {file = "cramjam-2.8.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9d25c2ff722e66a55c58b6c325985b2bf342a6592db084557c2956a07d7179d7"}, + {file = "cramjam-2.8.4-cp312-none-win32.whl", hash = "sha256:b63bcf4e5f9c6ee027947a22862d054e8ce0fa189a33ccdb07e66ef09291252c"}, + {file = "cramjam-2.8.4-cp312-none-win_amd64.whl", hash = "sha256:72b9d4c29a51a8656690df2ef6f7823fa27ebc35e051182b6ebef5fef180876f"}, + {file = "cramjam-2.8.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:9b00949104594eb2b6daf9ec72f1a6dfc93968bc0ffbdbfee936c359fc782186"}, + {file = "cramjam-2.8.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:24b29d805e860d22499e6f5d004582477f3c8309e2a899e0c86c1530a94e6092"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9454207624a701cb518fbef137e2eb6088aaf5606679aa6ab28d2dd06d72702"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee580acb4b6af5ae211b80b679aa377ffa9f9ff74a1e9de458c09d19bce4433"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:157c36731e430670be44ba490b8a0e4fc04ebdd78c3ea19339ba4ac24d73ad25"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a12b1437e28b5e72ab10642d214e9b42220e8c5be2948ac6916aca203f69b0"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:553e2cd4c2614510770ff3a8bf6b72957a86985b1ae2b8fcdc6d04848857313f"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e40e448d50fa7c2b79c06d99459ad4a77d58d9cfb3f0549a63b91179a5e57c0b"}, + {file = "cramjam-2.8.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:769995dfc7fd042ce123f25e7659977ed4aa4d5d6aad976970b12b9b4019c116"}, + {file = "cramjam-2.8.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:1ba26f563d9e5be588c8e5f5523b4cdb5b63e3ac3fb28857af9611eb5ea51416"}, + {file = "cramjam-2.8.4-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:5cbfd6c44c85216b3535095258b506f6e246c6fbf1438a79f71bcff4d98f7e3f"}, + {file = "cramjam-2.8.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:4bf4e8711b27604b3ca7e7c224a70f5abe94f5bf05a183bd97677e9cffd2be04"}, + {file = "cramjam-2.8.4-cp313-none-win32.whl", hash = "sha256:7c9ca8e6c33c06c08e9945a20fe0f64a2bcd363554e359a2936b3a469883630a"}, + {file = "cramjam-2.8.4-cp313-none-win_amd64.whl", hash = "sha256:ee92df7e66b7cbdb05b18687a42696bc729bacaad0d68f5549e30cbfa1eb0ca8"}, + {file = "cramjam-2.8.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:386eb0fe9567ae3c06e2053205e19e671e4170f3a0deb68dd103e4c651a3ff8b"}, + {file = "cramjam-2.8.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64e22027874ce429ce04c0c9d19e6bed5bf6425ecc3e68752211b8509915c57c"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b74470fb215a3ac2e6ed968f671286456030882aa25616b969b1a52ebda4f29d"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c41d4542cc2c7238017caebc161b0866b3fb5e85e59727ab623f95e07abc453"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:14b6f2f883068873bd2b5c31fbf7c4223c0452b8bff662bec02d7973a095c46b"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5921c4521d41fb125d31ce1fe9e5bfba24a2577bc8727289baae9afbebc8409"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb62855f17be5d1bec0d3cef89d8d54582137529c7ea96480c40ebb4a8c92c4b"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91cd4b28fc75680616bd22db5a56802ce7ce406052c58e72fd583a16746a1010"}, + {file = "cramjam-2.8.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f03502eaf1a0a95cdcbf4c6ebba5edfaa68d356f487ec8485ae651772c9426f9"}, + {file = "cramjam-2.8.4-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:bb5e23c1f8dc2b4cddc7982da60d2f7a9719920539c26e7b754f2272f510fc0c"}, + {file = "cramjam-2.8.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ef6b0d4c83b173d18398713522bff1db1e4e73ec3b3da6495afc5628767d6c85"}, + {file = "cramjam-2.8.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b2253287a08759cefb75ef46ebaa0f993a2890a31fe9bba94363ca245f42d821"}, + {file = "cramjam-2.8.4-cp38-none-win32.whl", hash = "sha256:8375090e54978ccbb1d90e494d73d09e36477e0d695ddadf2d13627168862950"}, + {file = "cramjam-2.8.4-cp38-none-win_amd64.whl", hash = "sha256:12100dd3ed6969365d1952832e39c017d97c85eeb517ae468092f67aa4d89568"}, + {file = "cramjam-2.8.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:47c1594346dceb0d363d479ddac1e9ff87596c92e5258b389118ae6e30599145"}, + {file = "cramjam-2.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5472f9c6db34046c7ab2f0c4be5a4be677dba98bf78cc0eb03f9812e5774f14d"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bfa940e016bfeea2b93115abf9e4e455a6325dd85a3fa6af55c6052f070ba25"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24e738a92ac520b26b952bfc48b1ba6453ea455e20167f08f6ee3df5c7d22cd4"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:78ded70e85722a6dcd0c436193af58a43083f0ece35c1f74227782a28e517aa0"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b024a9912a5fd3b4e6b949b83b291e2828775edc0595ef8b94c491e904287b"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:673dc6395fed94db59fb75a7657d8b061bd575332d8f15025e7b1a4feaba0a3f"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b8f83c5a98fecf44c6d852a9bd30ab1508e51d910dc9c8e636863d131fd5eb"}, + {file = "cramjam-2.8.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:85eada9385a706d8d0f6cb1d51995f5eef16d3cade7e68150d6e441fd26406da"}, + {file = "cramjam-2.8.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:2429134bb2ee8fffe28f41e3f5390be9c539ac1e2c453034ea63542d7aacc5cc"}, + {file = "cramjam-2.8.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e90003b2ce00358ee669afa0710bf52dee6827460b80ce4a7a9f906551ab703a"}, + {file = "cramjam-2.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0619af45310cceeab9a2410d4a14445743e494015d85584b974847bfb2a2011"}, + {file = "cramjam-2.8.4-cp39-none-win32.whl", hash = "sha256:a30d68094462076655259feee1187237af846969007e5341a96c79b447c47ab3"}, + {file = "cramjam-2.8.4-cp39-none-win_amd64.whl", hash = "sha256:f24e375dfb31f0953e236f2cc4af1b03b80d40aec2bc558df48d507d8e7c8d96"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3536362f777d817c4994d6eaa42e00e705092c5660fd3d9984f3b0cc6164d327"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:0d52eabd20a694636f5b0197daa64db497ea518e057935a7c61ec71e92d3ccd6"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cf69f19ebd546fc155ec3098603de51f52bf620a23597810cb5b34d6aff116d"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:364258057d579c772e23e1f666fd7efec4f63ea2e791889bb18263c9e9e6aa91"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:98a2e2c3132b454ae47b194164bb8860464ed410fbbffc0d1de19452cc7cb402"}, + {file = "cramjam-2.8.4.tar.gz", hash = "sha256:ad8bec85b46283330214f4367805e6f56e04ce25a030a2c6a4b127437d006fcf"}, +] + +[package.extras] +dev = ["black (==22.3.0)", "hypothesis", "numpy", "pytest (>=5.30)", "pytest-benchmark", "pytest-xdist"] + [[package]] name = "cryptography" version = "42.0.8" @@ -585,18 +721,15 @@ files = [ [[package]] name = "emoji" -version = "2.12.1" +version = "2.13.2" description = "Emoji for Python" optional = false python-versions = ">=3.7" files = [ - {file = "emoji-2.12.1-py3-none-any.whl", hash = "sha256:a00d62173bdadc2510967a381810101624a2f0986145b8da0cffa42e29430235"}, - {file = "emoji-2.12.1.tar.gz", hash = "sha256:4aa0488817691aa58d83764b6c209f8a27c0b3ab3f89d1b8dceca1a62e4973eb"}, + {file = "emoji-2.13.2-py3-none-any.whl", hash = "sha256:ef6f2ee63b245e934c763b1a9a0637713955aa3d9e322432e036bb60559de4d6"}, + {file = "emoji-2.13.2.tar.gz", hash = "sha256:f95d10d96c5f21299ed2c4b32511611ba890b8c07f5f2bf5b04d5d3eee91fd19"}, ] -[package.dependencies] -typing-extensions = ">=4.7.0" - [package.extras] dev = ["coverage", "pytest (>=7.4.4)"] @@ -695,17 +828,77 @@ files = [ {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, ] +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.6" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.27.2" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "idna" -version = "3.7" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -854,19 +1047,21 @@ six = "*" [[package]] name = "langsmith" -version = "0.1.99" +version = "0.1.130" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.99-py3-none-any.whl", hash = "sha256:ef8d1d74a2674c514aa429b0171a9fbb661207dc3835142cca0e8f1bf97b26b0"}, - {file = "langsmith-0.1.99.tar.gz", hash = "sha256:b5c6a1f158abda61600a4a445081ee848b4a28b758d91f2793dc02aeffafcaf1"}, + {file = "langsmith-0.1.130-py3-none-any.whl", hash = "sha256:acf27d77e699d84b03045f3f226e78be1dffb3e756aa1a085f9993a45380e8b2"}, + {file = "langsmith-0.1.130.tar.gz", hash = "sha256:3e43f87655a86395133e3a745d5968667d4d05dc9a24c617f89224c8cbf54dce"}, ] [package.dependencies] +httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "lxml" @@ -1024,13 +1219,13 @@ source = ["Cython (>=3.0.11)"] [[package]] name = "markdown" -version = "3.6" +version = "3.7" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, - {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, + {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, + {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, ] [package.extras] @@ -1108,13 +1303,13 @@ files = [ [[package]] name = "marshmallow" -version = "3.21.3" +version = "3.22.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.8" files = [ - {file = "marshmallow-3.21.3-py3-none-any.whl", hash = "sha256:86ce7fb914aa865001a4b2092c4c2872d13bc347f3d42673272cabfdbad386f1"}, - {file = "marshmallow-3.21.3.tar.gz", hash = "sha256:4f57c5e050a54d66361e826f94fba213eb10b67b2fdb02c3e0343ce207ba1662"}, + {file = "marshmallow-3.22.0-py3-none-any.whl", hash = "sha256:71a2dce49ef901c3f97ed296ae5051135fd3febd2bf43afe0ae9a82143a494d9"}, + {file = "marshmallow-3.22.0.tar.gz", hash = "sha256:4972f529104a220bb8637d595aa4c9762afbe7f7a77d82dc58c1615d70c5823e"}, ] [package.dependencies] @@ -1122,7 +1317,7 @@ packaging = ">=17.0" [package.extras] dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.3.7)", "sphinx-issues (==4.1.0)", "sphinx-version-warning (==1.1.2)"] +docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.13)", "sphinx (==8.0.2)", "sphinx-issues (==4.1.0)", "sphinx-version-warning (==1.1.2)"] tests = ["pytest", "pytz", "simplejson"] [[package]] @@ -1285,46 +1480,46 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1349,6 +1544,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -1542,19 +1738,19 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" @@ -1643,119 +1839,120 @@ files = [ [[package]] name = "pydantic" -version = "2.8.2" +version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, - {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] -annotated-types = ">=0.4.0" -pydantic-core = "2.20.1" +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.20.1" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, - {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, - {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, - {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, - {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, - {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, - {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, - {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, - {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, - {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, - {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, - {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, - {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, - {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] @@ -2094,6 +2291,20 @@ lxml = ">=3.1.0" Pillow = ">=3.3.2" XlsxWriter = ">=0.5.7" +[[package]] +name = "python-snappy" +version = "0.7.3" +description = "Python library for the snappy compression library from Google" +optional = false +python-versions = "*" +files = [ + {file = "python_snappy-0.7.3-py3-none-any.whl", hash = "sha256:074c0636cfcd97e7251330f428064050ac81a52c62ed884fc2ddebbb60ed7f50"}, + {file = "python_snappy-0.7.3.tar.gz", hash = "sha256:40216c1badfb2d38ac781ecb162a1d0ec40f8ee9747e610bcfefdfa79486cee3"}, +] + +[package.dependencies] +cramjam = "*" + [[package]] name = "pytz" version = "2024.1" @@ -2203,194 +2414,205 @@ files = [ [[package]] name = "rapidfuzz" -version = "3.9.6" +version = "3.10.0" description = "rapid fuzzy string matching" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "rapidfuzz-3.9.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a7ed0d0b9c85720f0ae33ac5efc8dc3f60c1489dad5c29d735fbdf2f66f0431f"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f3deff6ab7017ed21b9aec5874a07ad13e6b2a688af055837f88b743c7bfd947"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3f9fc060160507b2704f7d1491bd58453d69689b580cbc85289335b14fe8ca"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e86c2b3827fa6169ad6e7d4b790ce02a20acefb8b78d92fa4249589bbc7a2c"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f982e1aafb4bd8207a5e073b1efef9e68a984e91330e1bbf364f9ed157ed83f0"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9196a51d0ec5eaaaf5bca54a85b7b1e666fc944c332f68e6427503af9fb8c49e"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5a514064e02585b1cc09da2fe406a6dc1a7e5f3e92dd4f27c53e5f1465ec81"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e3a4244f65dbc3580b1275480118c3763f9dc29fc3dd96610560cb5e140a4d4a"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f6ebb910a702e41641e1e1dada3843bc11ba9107a33c98daef6945a885a40a07"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:624fbe96115fb39addafa288d583b5493bc76dab1d34d0ebba9987d6871afdf9"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1c59f1c1507b7a557cf3c410c76e91f097460da7d97e51c985343798e9df7a3c"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f0256cb27b6a0fb2e1918477d1b56473cd04acfa245376a342e7c15806a396"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-win32.whl", hash = "sha256:24d473d00d23a30a85802b502b417a7f5126019c3beec91a6739fe7b95388b24"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-win_amd64.whl", hash = "sha256:248f6d2612e661e2b5f9a22bbd5862a1600e720da7bb6ad8a55bb1548cdfa423"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-win_arm64.whl", hash = "sha256:e03fdf0e74f346ed7e798135df5f2a0fb8d6b96582b00ebef202dcf2171e1d1d"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:52e4675f642fbc85632f691b67115a243cd4d2a47bdcc4a3d9a79e784518ff97"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1f93a2f13038700bd245b927c46a2017db3dcd4d4ff94687d74b5123689b873b"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b70500bca460264b8141d8040caee22e9cf0418c5388104ff0c73fb69ee28f"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1e037fb89f714a220f68f902fc6300ab7a33349f3ce8ffae668c3b3a40b0b06"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6792f66d59b86ccfad5e247f2912e255c85c575789acdbad8e7f561412ffed8a"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68d9cffe710b67f1969cf996983608cee4490521d96ea91d16bd7ea5dc80ea98"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63daaeeea76da17fa0bbe7fb05cba8ed8064bb1a0edf8360636557f8b6511961"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d214e063bffa13e3b771520b74f674b22d309b5720d4df9918ff3e0c0f037720"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ed443a2062460f44c0346cb9d269b586496b808c2419bbd6057f54061c9b9c75"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5b0c9b227ee0076fb2d58301c505bb837a290ae99ee628beacdb719f0626d749"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:82c9722b7dfaa71e8b61f8c89fed0482567fb69178e139fe4151fc71ed7df782"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c18897c95c0a288347e29537b63608a8f63a5c3cb6da258ac46fcf89155e723e"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-win32.whl", hash = "sha256:3e910cf08944da381159587709daaad9e59d8ff7bca1f788d15928f3c3d49c2a"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-win_amd64.whl", hash = "sha256:59c4a61fab676d37329fc3a671618a461bfeef53a4d0b8b12e3bc24a14e166f8"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-win_arm64.whl", hash = "sha256:8b4afea244102332973377fddbe54ce844d0916e1c67a5123432291717f32ffa"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:70591b28b218fff351b88cdd7f2359a01a71f9f7f5a2e465ce3715ed4b3c422b"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee2d8355c7343c631a03e57540ea06e8717c19ecf5ff64ea07e0498f7f161457"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:708fb675de0f47b9635d1cc6fbbf80d52cb710d0a1abbfae5c84c46e3abbddc3"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d66c247c2d3bb7a9b60567c395a15a929d0ebcc5f4ceedb55bfa202c38c6e0c"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15146301b32e6e3d2b7e8146db1a26747919d8b13690c7f83a4cb5dc111b3a08"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7a03da59b6c7c97e657dd5cd4bcaab5fe4a2affd8193958d6f4d938bee36679"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d2c2fe19e392dbc22695b6c3b2510527e2b774647e79936bbde49db7742d6f1"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:91aaee4c94cb45930684f583ffc4e7c01a52b46610971cede33586cf8a04a12e"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3f5702828c10768f9281180a7ff8597da1e5002803e1304e9519dd0f06d79a85"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ccd1763b608fb4629a0b08f00b3c099d6395e67c14e619f6341b2c8429c2f310"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc7a0d4b2cb166bc46d02c8c9f7551cde8e2f3c9789df3827309433ee9771163"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7496f53d40560a58964207b52586783633f371683834a8f719d6d965d223a2eb"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-win32.whl", hash = "sha256:5eb1a9272ca71bc72be5415c2fa8448a6302ea4578e181bb7da9db855b367df0"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-win_amd64.whl", hash = "sha256:0d21fc3c0ca507a1180152a6dbd129ebaef48facde3f943db5c1055b6e6be56a"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-win_arm64.whl", hash = "sha256:43bb27a57c29dc5fa754496ba6a1a508480d21ae99ac0d19597646c16407e9f3"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:83a5ac6547a9d6eedaa212975cb8f2ce2aa07e6e30833b40e54a52b9f9999aa4"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:10f06139142ecde67078ebc9a745965446132b998f9feebffd71acdf218acfcc"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74720c3f24597f76c7c3e2c4abdff55f1664f4766ff5b28aeaa689f8ffba5fab"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2bce52b5c150878e558a0418c2b637fb3dbb6eb38e4eb27d24aa839920483e"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1611199f178793ca9a060c99b284e11f6d7d124998191f1cace9a0245334d219"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0308b2ad161daf502908a6e21a57c78ded0258eba9a8f5e2545e2dafca312507"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3eda91832201b86e3b70835f91522587725bec329ec68f2f7faf5124091e5ca7"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ece873c093aedd87fc07c2a7e333d52e458dc177016afa1edaf157e82b6914d8"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d97d3c9d209d5c30172baea5966f2129e8a198fec4a1aeb2f92abb6e82a2edb1"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:6c4550d0db4931f5ebe9f0678916d1b06f06f5a99ba0b8a48b9457fd8959a7d4"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b6b8dd4af6324fc325d9483bec75ecf9be33e590928c9202d408e4eafff6a0a6"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:16122ae448bc89e2bea9d81ce6cb0f751e4e07da39bd1e70b95cae2493857853"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-win32.whl", hash = "sha256:71cc168c305a4445109cd0d4925406f6e66bcb48fde99a1835387c58af4ecfe9"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-win_amd64.whl", hash = "sha256:59ee78f2ecd53fef8454909cda7400fe2cfcd820f62b8a5d4dfe930102268054"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-win_arm64.whl", hash = "sha256:58b4ce83f223605c358ae37e7a2d19a41b96aa65b1fede99cc664c9053af89ac"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9f469dbc9c4aeaac7dd005992af74b7dff94aa56a3ea063ce64e4b3e6736dd2f"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a9ed7ad9adb68d0fe63a156fe752bbf5f1403ed66961551e749641af2874da92"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39ffe48ffbeedf78d120ddfb9d583f2ca906712159a4e9c3c743c9f33e7b1775"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8502ccdea9084d54b6f737d96a3b60a84e3afed9d016686dc979b49cdac71613"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6a4bec4956e06b170ca896ba055d08d4c457dac745548172443982956a80e118"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c0488b1c273be39e109ff885ccac0448b2fa74dea4c4dc676bcf756c15f16d6"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0542c036cb6acf24edd2c9e0411a67d7ba71e29e4d3001a082466b86fc34ff30"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0a96b52c9f26857bf009e270dcd829381e7a634f7ddd585fa29b87d4c82146d9"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:6edd3cd7c4aa8c68c716d349f531bd5011f2ca49ddade216bb4429460151559f"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:50b2fb55d7ed58c66d49c9f954acd8fc4a3f0e9fd0ff708299bd8abb68238d0e"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:32848dfe54391636b84cda1823fd23e5a6b1dbb8be0e9a1d80e4ee9903820994"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:29146cb7a1bf69c87e928b31bffa54f066cb65639d073b36e1425f98cccdebc6"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-win32.whl", hash = "sha256:aed13e5edacb0ecadcc304cc66e93e7e77ff24f059c9792ee602c0381808e10c"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-win_amd64.whl", hash = "sha256:af440e36b828922256d0b4d79443bf2cbe5515fc4b0e9e96017ec789b36bb9fc"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:efa674b407424553024522159296690d99d6e6b1192cafe99ca84592faff16b4"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0b40ff76ee19b03ebf10a0a87938f86814996a822786c41c3312d251b7927849"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16a6c7997cb5927ced6f617122eb116ba514ec6b6f60f4803e7925ef55158891"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3f42504bdc8d770987fc3d99964766d42b2a03e4d5b0f891decdd256236bae0"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9462aa2be9f60b540c19a083471fdf28e7cf6434f068b631525b5e6251b35e"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1629698e68f47609a73bf9e73a6da3a4cac20bc710529215cbdf111ab603665b"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68bc7621843d8e9a7fd1b1a32729465bf94b47b6fb307d906da168413331f8d6"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c6254c50f15bc2fcc33cb93a95a81b702d9e6590f432a7f7822b8c7aba9ae288"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:7e535a114fa575bc143e175e4ca386a467ec8c42909eff500f5f0f13dc84e3e0"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d50acc0e9d67e4ba7a004a14c42d1b1e8b6ca1c515692746f4f8e7948c673167"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:fa742ec60bec53c5a211632cf1d31b9eb5a3c80f1371a46a23ac25a1fa2ab209"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c256fa95d29cbe5aa717db790b231a9a5b49e5983d50dc9df29d364a1db5e35b"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-win32.whl", hash = "sha256:89acbf728b764421036c173a10ada436ecca22999851cdc01d0aa904c70d362d"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-win_amd64.whl", hash = "sha256:c608fcba8b14d86c04cb56b203fed31a96e8a1ebb4ce99e7b70313c5bf8cf497"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-win_arm64.whl", hash = "sha256:d41c00ded0e22e9dba88ff23ebe0dc9d2a5f21ba2f88e185ea7374461e61daa9"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a65c2f63218ea2dedd56fc56361035e189ca123bd9c9ce63a9bef6f99540d681"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:680dc78a5f889d3b89f74824b89fe357f49f88ad10d2c121e9c3ad37bac1e4eb"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8ca862927a0b05bd825e46ddf82d0724ea44b07d898ef639386530bf9b40f15"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:884453860de029380dded8f3c1918af2d8eb5adf8010261645c7e5c88c2b5428"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718c9bd369288aca5fa929df6dbf66fdbe9768d90940a940c0b5cdc96ade4309"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a68e3724b7dab761c01816aaa64b0903734d999d5589daf97c14ef5cc0629a8e"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1af60988d47534246d9525f77288fdd9de652608a4842815d9018570b959acc6"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3084161fc3e963056232ef8d937449a2943852e07101f5a136c8f3cfa4119217"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cd67d3d017296d98ff505529104299f78433e4b8af31b55003d901a62bbebe9"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b11a127ac590fc991e8a02c2d7e1ac86e8141c92f78546f18b5c904064a0552c"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aadce42147fc09dcef1afa892485311e824c050352e1aa6e47f56b9b27af4cf0"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b54853c2371bf0e38d67da379519deb6fbe70055efb32f6607081641af3dc752"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ce19887268e90ee81a3957eef5e46a70ecc000713796639f83828b950343f49e"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f39a2a5ded23b9b9194ec45740dce57177b80f86c6d8eba953d3ff1a25c97766"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0ec338d5f4ad8d9339a88a08db5c23e7f7a52c2b2a10510c48a0cef1fb3f0ddc"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-win32.whl", hash = "sha256:56fd15ea8f4c948864fa5ebd9261c67cf7b89a1c517a0caef4df75446a7af18c"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:43dfc5e733808962a822ff6d9c29f3039a3cfb3620706f5953e17cfe4496724c"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-win_arm64.whl", hash = "sha256:ae7966f205b5a7fde93b44ca8fed37c1c8539328d7f179b1197de34eceaceb5f"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bb0013795b40db5cf361e6f21ee7cda09627cf294977149b50e217d7fe9a2f03"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:69ef5b363afff7150a1fbe788007e307b9802a2eb6ad92ed51ab94e6ad2674c6"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c582c46b1bb0b19f1a5f4c1312f1b640c21d78c371a6615c34025b16ee56369b"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:288f6f6e7410cacb115fb851f3f18bf0e4231eb3f6cb5bd1cec0e7b25c4d039d"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9e29a13d2fd9be3e7d8c26c7ef4ba60b5bc7efbc9dbdf24454c7e9ebba31768"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea2da0459b951ee461bd4e02b8904890bd1c4263999d291c5cd01e6620177ad4"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457827ba82261aa2ae6ac06a46d0043ab12ba7216b82d87ae1434ec0f29736d6"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5d350864269d56f51ab81ab750c9259ae5cad3152c0680baef143dcec92206a1"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a9b8f51e08c3f983d857c3889930af9ddecc768453822076683664772d87e374"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7f3a6aa6e70fc27e4ff5c479f13cc9fc26a56347610f5f8b50396a0d344c5f55"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:803f255f10d63420979b1909ef976e7d30dec42025c9b067fc1d2040cc365a7e"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2026651761bf83a0f31495cc0f70840d5c0d54388f41316e3f9cb51bd85e49a5"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-win32.whl", hash = "sha256:4df75b3ebbb8cfdb9bf8b213b168620b88fd92d0c16a8bc9f9234630b282db59"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f9f0bbfb6787b97c51516f3ccf97737d504db5d239ad44527673b81f598b84ab"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-win_arm64.whl", hash = "sha256:10fdad800441b9c97d471a937ba7d42625f1b530db05e572f1cb7d401d95c893"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7dc87073ba3a40dd65591a2100aa71602107443bf10770579ff9c8a3242edb94"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a425a0a868cf8e9c6e93e1cda4b758cdfd314bb9a4fc916c5742c934e3613480"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86d5d1d75e61df060c1e56596b6b0a4422a929dff19cc3dbfd5eee762c86b61"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34f213d59219a9c3ca14e94a825f585811a68ac56b4118b4dc388b5b14afc108"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96ad46f5f56f70fab2be9e5f3165a21be58d633b90bf6e67fc52a856695e4bcf"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9178277f72d144a6c7704d7ae7fa15b7b86f0f0796f0e1049c7b4ef748a662ef"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76a35e9e19a7c883c422ffa378e9a04bc98cb3b29648c5831596401298ee51e6"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a6405d34c394c65e4f73a1d300c001f304f08e529d2ed6413b46ee3037956eb"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bd393683129f446a75d8634306aed7e377627098a1286ff3af2a4f1736742820"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b0445fa9880ead81f5a7d0efc0b9c977a947d8052c43519aceeaf56eabaf6843"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c50bc308fa29767ed8f53a8d33b7633a9e14718ced038ed89d41b886e301da32"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e89605afebbd2d4b045bccfdc12a14b16fe8ccbae05f64b4b4c64a97dad1c891"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-win32.whl", hash = "sha256:2db9187f3acf3cd33424ecdbaad75414c298ecd1513470df7bda885dcb68cc15"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:50e3d0c72ea15391ba9531ead7f2068a67c5b18a6a365fef3127583aaadd1725"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-win_arm64.whl", hash = "sha256:9eac95b4278bd53115903d89118a2c908398ee8bdfd977ae844f1bd2b02b917c"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fe5231e8afd069c742ac5b4f96344a0fe4aff52df8e53ef87faebf77f827822c"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:886882367dbc985f5736356105798f2ae6e794e671fc605476cbe2e73838a9bb"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b33e13e537e3afd1627d421a142a12bbbe601543558a391a6fae593356842f6e"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:094c26116d55bf9c53abd840d08422f20da78ec4c4723e5024322321caedca48"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:545fc04f2d592e4350f59deb0818886c1b444ffba3bec535b4fbb97191aaf769"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:916a6abf3632e592b937c3d04c00a6efadd8fd30539cdcd4e6e4d92be7ca5d90"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb6ec40cef63b1922083d33bfef2f91fc0b0bc07b5b09bfee0b0f1717d558292"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c77a7330dd15c7eb5fd3631dc646fc96327f98db8181138766bd14d3e905f0ba"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:949b5e9eeaa4ecb4c7e9c2a4689dddce60929dd1ff9c76a889cdbabe8bbf2171"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b5363932a5aab67010ae1a6205c567d1ef256fb333bc23c27582481606be480c"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5dd6eec15b13329abe66cc241b484002ecb0e17d694491c944a22410a6a9e5e2"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79e7f98525b60b3c14524e0a4e1fedf7654657b6e02eb25f1be897ab097706f3"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-win32.whl", hash = "sha256:d29d1b9857c65f8cb3a29270732e1591b9bacf89de9d13fa764f79f07d8f1fd2"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:fa9720e56663cc3649d62b4b5f3145e94b8f5611e8a8e1b46507777249d46aad"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-win_arm64.whl", hash = "sha256:eda4c661e68dddd56c8fbfe1ca35e40dd2afd973f7ebb1605f4d151edc63dff8"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cffbc50e0767396ed483900900dd58ce4351bc0d40e64bced8694bd41864cc71"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c038b9939da3035afb6cb2f465f18163e8f070aba0482923ecff9443def67178"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca366c2e2a54e2f663f4529b189fdeb6e14d419b1c78b754ec1744f3c01070d4"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c4c82b1689b23b1b5e6a603164ed2be41b6f6de292a698b98ba2381e889eb9d"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98f6ebe28831a482981ecfeedc8237047878424ad0c1add2c7f366ba44a20452"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd1a7676ee2a4c8e2f7f2550bece994f9f89e58afb96088964145a83af7408b"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec9139baa3f85b65adc700eafa03ed04995ca8533dd56c924f0e458ffec044ab"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:26de93e6495078b6af4c4d93a42ca067b16cc0e95699526c82ab7d1025b4d3bf"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f3a0bda83c18195c361b5500377d0767749f128564ca95b42c8849fd475bb327"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:63e4c175cbce8c3adc22dca5e6154588ae673f6c55374d156f3dac732c88d7de"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4dd3d8443970eaa02ab5ae45ce584b061f2799cd9f7e875190e2617440c1f9d4"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e5ddb2388610799fc46abe389600625058f2a73867e63e20107c5ad5ffa57c47"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-win32.whl", hash = "sha256:2e9be5d05cd960914024412b5406fb75a82f8562f45912ff86255acbfdbfb78e"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:47aca565a39c9a6067927871973ca827023e8b65ba6c5747f4c228c8d7ddc04f"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-win_arm64.whl", hash = "sha256:b0732343cdc4273b5921268026dd7266f75466eb21873cb7635a200d9d9c3fac"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f744b5eb1469bf92dd143d36570d2bdbbdc88fe5cb0b5405e53dd34f479cbd8a"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b67cc21a14327a0eb0f47bc3d7e59ec08031c7c55220ece672f9476e7a8068d3"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fe5783676f0afba4a522c80b15e99dbf4e393c149ab610308a8ef1f04c6bcc8"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4688862f957c8629d557d084f20b2d803f8738b6c4066802a0b1cc472e088d9"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20bd153aacc244e4c907d772c703fea82754c4db14f8aa64d75ff81b7b8ab92d"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:50484d563f8bfa723c74c944b0bb15b9e054db9c889348c8c307abcbee75ab92"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5897242d455461f2c5b82d7397b29341fd11e85bf3608a522177071044784ee8"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:116c71a81e046ba56551d8ab68067ca7034d94b617545316d460a452c5c3c289"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0a547e4350d1fa32624d3eab51eff8cf329f4cae110b4ea0402486b1da8be40"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:399b9b79ccfcf50ca3bad7692bc098bb8eade88d7d5e15773b7f866c91156d0c"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7947a425d1be3e744707ee58c6cb318b93a56e08f080722dcc0347e0b7a1bb9a"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:94c48b4a2a4b1d22246f48e2b11cae01ec7d23f0c9123f8bb822839ad79d0a88"}, + {file = "rapidfuzz-3.10.0.tar.gz", hash = "sha256:6b62af27e65bb39276a66533655a2fa3c60a487b03935721c45b7809527979be"}, ] [package.extras] -full = ["numpy"] +all = ["numpy"] [[package]] name = "regex" -version = "2024.7.24" +version = "2024.9.11" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" files = [ - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa"}, - {file = "regex-2024.7.24-cp310-cp310-win32.whl", hash = "sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66"}, - {file = "regex-2024.7.24-cp310-cp310-win_amd64.whl", hash = "sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e"}, - {file = "regex-2024.7.24-cp311-cp311-win32.whl", hash = "sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c"}, - {file = "regex-2024.7.24-cp311-cp311-win_amd64.whl", hash = "sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38"}, - {file = "regex-2024.7.24-cp312-cp312-win32.whl", hash = "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc"}, - {file = "regex-2024.7.24-cp312-cp312-win_amd64.whl", hash = "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8"}, - {file = "regex-2024.7.24-cp38-cp38-win32.whl", hash = "sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96"}, - {file = "regex-2024.7.24-cp38-cp38-win_amd64.whl", hash = "sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9"}, - {file = "regex-2024.7.24-cp39-cp39-win32.whl", hash = "sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1"}, - {file = "regex-2024.7.24-cp39-cp39-win_amd64.whl", hash = "sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9"}, - {file = "regex-2024.7.24.tar.gz", hash = "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, ] [[package]] @@ -2444,21 +2666,93 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "serpyco-rs" +version = "1.11.0" +description = "" +optional = false +python-versions = ">=3.9" +files = [ + {file = "serpyco_rs-1.11.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4b2bd933539bd8c84315e2fb5ae52ef7a58ace5a6dfe3f8b73f74dc71216779e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:627f957889ff73c4d2269fc7b6bba93212381befe03633e7cb5495de66ba9a33"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0933620abc01434023e0e3e22255b7e4ab9b427b5a9a5ee00834656d792377a"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9ce46683d92e34abb20304817fc5ac6cb141a06fc7468dedb1d8865a8a9682f6"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bda437d86e8859bf91c189c1f4650899822f6d6d7b02b48f5729da904eb7bb7d"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a72bfbd282af17ebe76d122639013e802c09902543fdbbd828fb2159ec9755e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d4808df5384e3e8581e31a90ba7a1fa501c0837b1f174284bb8a4555b6864ea"}, + {file = "serpyco_rs-1.11.0-cp310-none-win_amd64.whl", hash = "sha256:c7b60aef4c16d68efb0d6241f05d0a434d873d98449cbb4366b0d385f0a7172b"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d47ee577cf4d69b53917615cb031ad8708eb2f59fe78194b1968c13130fc2f7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6090d9a1487237cdd4e9362a823eede23249602019b917e7bd57846179286e79"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7192eb3df576386fefd595ea31ae25c62522841ffec7e7aeb37a80b55bdc3213"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b52ef8affb7e71b9b98a7d5216d6a7ad03b04e990acb147cd9211c8b931c5487"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3480e09e473560c60e74aaa789e6b4d079637371aae0a98235440111464bbba7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c92e36b0ab6fe866601c2331f7e99c809a126d21963c03d8a5c29331526deed"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84f497361952d4566bc1f77e9e15a84a2614f593cc671fbf0a0fa80046f9c3d7"}, + {file = "serpyco_rs-1.11.0-cp311-none-win_amd64.whl", hash = "sha256:37fc1cf192bef9784fbf1f4e03cec21750b9e704bef55cc0442f71a715eee920"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3ea93d485f03dc8b0cfb0d477f0ad2e86e78f0461b53010656ab5b4db1b41fb0"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7772410d15694b03f9c5500a2c47d62eed76e191bea4087ad042250346b1a38e"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42118463c1679846cffd2f06f47744c9b9eb33c5d0448afd88ea19e1a81a8ddd"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:79481a455b76cc56021dc55bb6d5bdda1b2b32bcb6a1ee711b597140d112e9b1"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8fd79051f9af9591fc03cf7d3033ff180416301f6a4fd3d1e3d92ebd2d68697"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d29c8f9aeed734a3b51f7349d04ec9063516ffa4e10b632d75e9b1309e4930e4"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15609158b0d9591ffa118302cd9d0039970cb3faf91dce32975f7d276e7411d5"}, + {file = "serpyco_rs-1.11.0-cp312-none-win_amd64.whl", hash = "sha256:00081eae77fbf4c5d88371c5586317ab02ccb293a330b460869a283edf2b7b69"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3028893366a1985adcedb13fa8f6f98c087c185efc427f94c2ccdafa40f45832"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c18bf511316f3abf648a68ee62ef88617bec57d3fcde69466b4361102715ae5"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7dde9ef09cdfaf7c62378186b9e29f54ec76114be4c347be6a06dd559c5681e"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:18500ebc5e75285841e35585a238629a990b709e14f68933233640d15ca17d5f"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47c23132d4e03982703a7630aa09877b41e499722142f76b6153f6619b612f3"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5f8e6ba499f6a0825bee0d8f8764569d367af871b563fc6512c171474e8e5383"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15438a076047c34cff6601a977df54948e8d39d1a86f89d05c48bc60f4c12a61"}, + {file = "serpyco_rs-1.11.0-cp313-none-win_amd64.whl", hash = "sha256:84ee2c109415bd81904fc9abb9aec86a5dd13166808c21142cf23ec639f683bd"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5c97c16c865261577fac4effeccc7ef5e0a1e8e35e7a3ee6c90c77c3a4cd7ff9"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47825e70f86fd6ef7c4a835dea3d6e8eef4fee354ed7b39ced99f31aba74a86e"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24d220220365110edba2f778f41ab3cf396883da0f26e1361a3ada9bd0227f73"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3a46f334af5a9d77acc6e1e58f355ae497900a2798929371f0545e274f6e6166"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d72b748acce4b4e3c7c9724e1eb33d033a1c26b08a698b393e0288060e0901"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2b8b6f205e8cc038d4d30dd0e70eece7bbecc816eb2f3787c330dc2218e232d"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038d748bfff31f150f0c3edab2766b8843edb952cb1bd3bf547886beb0912dae"}, + {file = "serpyco_rs-1.11.0-cp39-none-win_amd64.whl", hash = "sha256:0fee1c89ec2cb013dc232e4ebef88e2844357ce8631063b56639dbfb83762f20"}, + {file = "serpyco_rs-1.11.0.tar.gz", hash = "sha256:70a844615ffb229e6e89c204b3ab7404aacaf2838911814c7d847969b8da2e3a"}, +] + +[package.dependencies] +attributes-doc = "*" +typing-extensions = "*" + [[package]] name = "setuptools" -version = "72.2.0" +version = "75.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-72.2.0-py3-none-any.whl", hash = "sha256:f11dd94b7bae3a156a95ec151f24e4637fb4fa19c878e4d191bfb8b2d82728c4"}, - {file = "setuptools-72.2.0.tar.gz", hash = "sha256:80aacbf633704e9c8bfa1d99fa5dd4dc59573efcf9e4042c13d3bcef91ac2ef9"}, + {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, + {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, ] [package.extras] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] [[package]] name = "six" @@ -2471,6 +2765,17 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + [[package]] name = "soupsieve" version = "2.6" @@ -2570,13 +2875,13 @@ typing-extensions = ">=3.7.4" [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] @@ -2661,13 +2966,13 @@ xlsx = ["networkx", "openpyxl", "pandas", "xlrd"] [[package]] name = "unstructured-pytesseract" -version = "0.3.12" +version = "0.3.13" description = "Python-tesseract is a python wrapper for Google's Tesseract-OCR" optional = false python-versions = ">=3.8" files = [ - {file = "unstructured.pytesseract-0.3.12-py3-none-any.whl", hash = "sha256:6ed42530fc697bb08d1ae4884cc517ee808620c1c1414efe8d5d90334da068d3"}, - {file = "unstructured.pytesseract-0.3.12.tar.gz", hash = "sha256:751a21d67b1f109036bf4daf796d3e04631697a355efd650f3373412b249de2e"}, + {file = "unstructured.pytesseract-0.3.13-py3-none-any.whl", hash = "sha256:8001bc860470d56185176eb3ceb4623e888eba058ca3b30af79003784bc40e19"}, + {file = "unstructured.pytesseract-0.3.13.tar.gz", hash = "sha256:ff2e6391496e457dbf4b4e327f4a4577cce18921ea6570dc74bd64381b10e963"}, ] [package.dependencies] @@ -2690,13 +2995,13 @@ six = "*" [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -2812,4 +3117,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10,<3.12" -content-hash = "93f2d7dacf33194157b8340a87e18b8e1382b0480545689164885ca3dd3ead7d" +content-hash = "0eeab97d0a9cfff069ed060c693f3f96b61b4e63877abf70396e2012ba6e0330" diff --git a/airbyte-integrations/connectors/source-sftp-bulk/pyproject.toml b/airbyte-integrations/connectors/source-sftp-bulk/pyproject.toml index 61c355f645e09..a1c1340654db5 100644 --- a/airbyte-integrations/connectors/source-sftp-bulk/pyproject.toml +++ b/airbyte-integrations/connectors/source-sftp-bulk/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.1.0" +version = "1.2.0" name = "source-sftp-bulk" description = "Source implementation for SFTP Bulk." authors = [ "Airbyte ",] @@ -17,7 +17,7 @@ include = "source_sftp_bulk" [tool.poetry.dependencies] python = "^3.10,<3.12" -airbyte-cdk = {version = "^4", extras = ["file-based"]} +airbyte-cdk = {version = "^5", extras = ["file-based"]} paramiko = "3.4.0" [tool.poetry.scripts] diff --git a/docs/integrations/sources/sftp-bulk.md b/docs/integrations/sources/sftp-bulk.md index ffb09b19a9a90..02562a28fc883 100644 --- a/docs/integrations/sources/sftp-bulk.md +++ b/docs/integrations/sources/sftp-bulk.md @@ -134,6 +134,7 @@ This source provides a single stream per file with a dynamic schema. The current | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------| +| 1.2.0 | 2024-09-03 | [46323](https://github.com/airbytehq/airbyte/pull/46323) | Update dependency to CDK v5 | | 1.1.0 | 2024-08-14 | [44028](https://github.com/airbytehq/airbyte/pull/44028) | Update dependency to CDK v4 | | 1.0.1 | 2024-05-29 | [38703](https://github.com/airbytehq/airbyte/pull/38703) | Avoid error on empty stream when running discover | | 1.0.0 | 2024-03-22 | [36256](https://github.com/airbytehq/airbyte/pull/36256) | Migrate to File-Based CDK. Manage dependencies with Poetry. | From bc093d868b0e2a7a68d78070aafe928d7d8268c7 Mon Sep 17 00:00:00 2001 From: Baz Date: Thu, 3 Oct 2024 18:42:02 +0300 Subject: [PATCH 011/379] =?UTF-8?q?=F0=9F=90=9B=20Source=20Chargebee:=20ad?= =?UTF-8?q?d=20missing=20`incremental=20dependency`=20to=20`full-refresh`?= =?UTF-8?q?=20sub-streams=20with=20`Incremental`=20parent=20streams=20(#46?= =?UTF-8?q?343)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-integrations/connectors/source-chargebee/metadata.yaml | 2 +- .../connectors/source-chargebee/pyproject.toml | 2 +- .../connectors/source-chargebee/source_chargebee/manifest.yaml | 3 +++ docs/integrations/sources/chargebee.md | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/airbyte-integrations/connectors/source-chargebee/metadata.yaml b/airbyte-integrations/connectors/source-chargebee/metadata.yaml index 4772e28381317..00db96ccd37a3 100644 --- a/airbyte-integrations/connectors/source-chargebee/metadata.yaml +++ b/airbyte-integrations/connectors/source-chargebee/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 686473f1-76d9-4994-9cc7-9b13da46147c - dockerImageTag: 0.6.13 + dockerImageTag: 0.6.14 dockerRepository: airbyte/source-chargebee documentationUrl: https://docs.airbyte.com/integrations/sources/chargebee githubIssueLabel: source-chargebee diff --git a/airbyte-integrations/connectors/source-chargebee/pyproject.toml b/airbyte-integrations/connectors/source-chargebee/pyproject.toml index 3d28ee59a15db..c17478665e5a8 100644 --- a/airbyte-integrations/connectors/source-chargebee/pyproject.toml +++ b/airbyte-integrations/connectors/source-chargebee/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.6.13" +version = "0.6.14" name = "source-chargebee" description = "Source implementation for Chargebee." authors = [ "Airbyte ",] diff --git a/airbyte-integrations/connectors/source-chargebee/source_chargebee/manifest.yaml b/airbyte-integrations/connectors/source-chargebee/source_chargebee/manifest.yaml index 31562c2876087..e4ff9489892cd 100644 --- a/airbyte-integrations/connectors/source-chargebee/source_chargebee/manifest.yaml +++ b/airbyte-integrations/connectors/source-chargebee/source_chargebee/manifest.yaml @@ -111,6 +111,7 @@ definitions: stream: "#/definitions/item_stream" parent_key: "id" partition_field: "item_id" + incremental_dependency: true $parameters: name: "attached_item" primary_key: "id" @@ -133,6 +134,7 @@ definitions: stream: "#/definitions/customer_stream" parent_key: id partition_field: id + incremental_dependency: true requester: $ref: "#/definitions/requester" error_handler: @@ -360,6 +362,7 @@ definitions: stream: "#/definitions/quote_stream" parent_key: id partition_field: id + incremental_dependency: true requester: $ref: "#/definitions/requester" error_handler: diff --git a/docs/integrations/sources/chargebee.md b/docs/integrations/sources/chargebee.md index c1508a6e3a717..4d6294f4f375b 100644 --- a/docs/integrations/sources/chargebee.md +++ b/docs/integrations/sources/chargebee.md @@ -104,7 +104,8 @@ The Chargebee connector should not run into [Chargebee API](https://apidocs.char | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------| -| 0.6.13 | 2024-10-01 | [46294](https://github.com/airbytehq/airbyte/pull/46294) | Update CDK version to `^5`, increased the `maxSecondsBetweenMessages` to 6 hours. | +| 0.6.14 | 2024-10-03 | [46343](https://github.com/airbytehq/airbyte/pull/46343) | Added `incremental dependency` for substreams with `Incremental` parent streams | +| 0.6.13 | 2024-10-01 | [46294](https://github.com/airbytehq/airbyte/pull/46294) | Update CDK version to `^5`, increased the `maxSecondsBetweenMessages` to 6 hours | | 0.6.12 | 2024-09-28 | [46169](https://github.com/airbytehq/airbyte/pull/46169) | Update dependencies | | 0.6.11 | 2024-09-21 | [45805](https://github.com/airbytehq/airbyte/pull/45805) | Update dependencies | | 0.6.10 | 2024-09-14 | [45254](https://github.com/airbytehq/airbyte/pull/45254) | Update dependencies | From 919e45d3145d2e6c02838ca3740359abd1edb126 Mon Sep 17 00:00:00 2001 From: Marius Posta Date: Thu, 3 Oct 2024 09:12:04 -0700 Subject: [PATCH 012/379] bulk-cdk: fix test-logs location (#46336) --- .../bulk/core/base/src/testFixtures/resources/log4j2-test.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-cdk/bulk/core/base/src/testFixtures/resources/log4j2-test.xml b/airbyte-cdk/bulk/core/base/src/testFixtures/resources/log4j2-test.xml index e82ce1b1a34db..17ec0e432a371 100644 --- a/airbyte-cdk/bulk/core/base/src/testFixtures/resources/log4j2-test.xml +++ b/airbyte-cdk/bulk/core/base/src/testFixtures/resources/log4j2-test.xml @@ -7,7 +7,7 @@ %d{yyyy-MM-dd'T'HH:mm:ss,SSS}{GMT+0}`%replace{%X{log_source}}{^ -}{} > %replace{%m}{$${env:LOG_SCRUB_PATTERN:-\*\*\*\*\*}}{*****}%n ${sys:LOG_LEVEL:-${env:LOG_LEVEL:-INFO}} - target/test-logs/${date:yyyy-MM-dd'T'HH:mm:ss} + build/test-logs/${date:yyyy-MM-dd'T'HH:mm:ss} From d0d3d40e9d77742020ed58704b265b93c309fbe0 Mon Sep 17 00:00:00 2001 From: Marius Posta Date: Thu, 3 Oct 2024 11:15:26 -0700 Subject: [PATCH 013/379] bulk-cdk-toolkit-extract-cdc: use Debezium 3.0.0.Final (#46335) --- airbyte-cdk/bulk/toolkits/extract-cdc/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-cdk/bulk/toolkits/extract-cdc/build.gradle b/airbyte-cdk/bulk/toolkits/extract-cdc/build.gradle index e55d64b4692d3..970bc69acdf3e 100644 --- a/airbyte-cdk/bulk/toolkits/extract-cdc/build.gradle +++ b/airbyte-cdk/bulk/toolkits/extract-cdc/build.gradle @@ -1,5 +1,5 @@ dependencies { - api platform('io.debezium:debezium-bom:2.7.3.Final') + api platform('io.debezium:debezium-bom:3.0.0.Final') api 'io.debezium:debezium-api' api 'io.debezium:debezium-embedded' From a38479114f3d492ebc7759e041b5fefbd2e61340 Mon Sep 17 00:00:00 2001 From: Marius Posta Date: Thu, 3 Oct 2024 11:22:04 -0700 Subject: [PATCH 014/379] bulk-cdk-toolkit-extract-cdc,source-mysql-v2: speed up Debezium tests with mysql (#46341) --- .../cdk/read/cdc/CdcPartitionReaderTest.kt | 1 + .../connectors/source-mysql-v2/metadata.yaml | 2 +- .../source/mysql/MysqlSourceConfiguration.kt | 17 ++++++++++++++++- .../source/mysql/cdc/MySqlDebeziumOperations.kt | 16 +++++++++------- .../MysqlSourceTestConfigurationFactory.kt | 7 ++++++- 5 files changed, 33 insertions(+), 10 deletions(-) diff --git a/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt b/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt index d96c591e7ca55..fcb56e451f915 100644 --- a/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt +++ b/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt @@ -387,6 +387,7 @@ class CdcPartitionReaderMySQLTest : .withDebeziumName(databaseName) .withHeartbeats(heartbeat) .with("include.schema.changes", "false") + .with("connect.keep.alive.interval.ms", "1000") .withDatabase("hostname", host) .withDatabase("port", firstMappedPort.toString()) .withDatabase("user", username) diff --git a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml index 395f79cb3e065..5eb38ff4168bd 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml +++ b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: 561393ed-7e3a-4d0d-8b8b-90ded371754c - dockerImageTag: 0.0.13 + dockerImageTag: 0.0.14 dockerRepository: airbyte/source-mysql-v2 documentationUrl: https://docs.airbyte.com/integrations/sources/mysql githubIssueLabel: source-mysql-v2 diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt index ee59685638722..547234ab19c96 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt @@ -3,12 +3,14 @@ package io.airbyte.integrations.source.mysql import io.airbyte.cdk.ConfigErrorException import io.airbyte.cdk.command.CdcSourceConfiguration +import io.airbyte.cdk.command.ConfigurationSpecificationSupplier import io.airbyte.cdk.command.JdbcSourceConfiguration import io.airbyte.cdk.command.SourceConfiguration import io.airbyte.cdk.command.SourceConfigurationFactory import io.airbyte.cdk.ssh.SshConnectionOptions import io.airbyte.cdk.ssh.SshTunnelMethodConfiguration import io.github.oshai.kotlinlogging.KotlinLogging +import io.micronaut.context.annotation.Factory import jakarta.inject.Singleton import java.net.URLDecoder import java.nio.charset.StandardCharsets @@ -30,9 +32,22 @@ data class MysqlSourceConfiguration( override val resourceAcquisitionHeartbeat: Duration = Duration.ofMillis(100L), override val checkpointTargetInterval: Duration, override val checkPrivileges: Boolean, - override val debeziumHeartbeatInterval: Duration = Duration.ofSeconds(1), + override val debeziumHeartbeatInterval: Duration = Duration.ofSeconds(10), + val debeziumKeepAliveInterval: Duration = Duration.ofMinutes(1), ) : JdbcSourceConfiguration, CdcSourceConfiguration { override val global = cursorConfiguration is CdcCursor + + /** Required to inject [MysqlSourceConfiguration] directly. */ + @Factory + private class MicronautFactory { + @Singleton + fun mysqlSourceConfig( + factory: + SourceConfigurationFactory< + MysqlSourceConfigurationJsonObject, MysqlSourceConfiguration>, + supplier: ConfigurationSpecificationSupplier, + ): MysqlSourceConfiguration = factory.make(supplier.get()) + } } @Singleton diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/cdc/MySqlDebeziumOperations.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/cdc/MySqlDebeziumOperations.kt index 29becb5dade75..7065956367403 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/cdc/MySqlDebeziumOperations.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/cdc/MySqlDebeziumOperations.kt @@ -8,8 +8,6 @@ import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.node.ArrayNode import com.fasterxml.jackson.databind.node.ObjectNode import io.airbyte.cdk.ConfigErrorException -import io.airbyte.cdk.command.CdcSourceConfiguration -import io.airbyte.cdk.command.JdbcSourceConfiguration import io.airbyte.cdk.command.OpaqueStateValue import io.airbyte.cdk.data.OffsetDateTimeCodec import io.airbyte.cdk.discover.CommonMetaField @@ -28,6 +26,7 @@ import io.airbyte.cdk.read.cdc.DebeziumSchemaHistory import io.airbyte.cdk.read.cdc.DebeziumState import io.airbyte.cdk.ssh.TunnelSession import io.airbyte.cdk.util.Jsons +import io.airbyte.integrations.source.mysql.MysqlSourceConfiguration import io.airbyte.protocol.models.v0.AirbyteRecordMessage import io.airbyte.protocol.models.v0.AirbyteRecordMessageMeta import io.debezium.connector.mysql.MySqlConnector @@ -53,8 +52,7 @@ import org.apache.kafka.connect.source.SourceRecord @Singleton class MySqlDebeziumOperations( val jdbcConnectionFactory: JdbcConnectionFactory, - jdbcSourceConfiguration: JdbcSourceConfiguration, - cdcSourceConfiguration: CdcSourceConfiguration, + configuration: MysqlSourceConfiguration, random: Random = Random.Default, ) : DebeziumOperations { private val log = KotlinLogging.logger {} @@ -249,7 +247,7 @@ class MySqlDebeziumOperations( return Jsons.objectNode().apply { set(STATE, stateNode) } } - val databaseName: String = jdbcSourceConfiguration.namespaces.first() + val databaseName: String = configuration.namespaces.first() val serverID: Int = random.nextInt(MIN_SERVER_ID..MAX_SERVER_ID) val commonProperties: Map by lazy { @@ -258,7 +256,7 @@ class MySqlDebeziumOperations( .withDefault() .withConnector(MySqlConnector::class.java) .withDebeziumName(databaseName) - .withHeartbeats(cdcSourceConfiguration.debeziumHeartbeatInterval) + .withHeartbeats(configuration.debeziumHeartbeatInterval) // This to make sure that binary data represented as a base64-encoded String. // https://debezium.io/documentation/reference/2.2/connectors/mysql.html#mysql-property-binary-handling-mode .with("binary.handling.mode", "base64") @@ -271,7 +269,11 @@ class MySqlDebeziumOperations( .with("snapshot.locking.mode", "none") // https://debezium.io/documentation/reference/2.2/connectors/mysql.html#mysql-property-include-schema-changes .with("include.schema.changes", "false") - .withDatabase(jdbcSourceConfiguration.jdbcProperties) + .with( + "connect.keep.alive.interval.ms", + configuration.debeziumKeepAliveInterval.toMillis().toString() + ) + .withDatabase(configuration.jdbcProperties) .withDatabase("hostname", tunnelSession.address.hostName) .withDatabase("port", tunnelSession.address.port.toString()) .withDatabase("dbname", databaseName) diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceTestConfigurationFactory.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceTestConfigurationFactory.kt index 43bdc7183e1d0..723817bc701b6 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceTestConfigurationFactory.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceTestConfigurationFactory.kt @@ -18,5 +18,10 @@ class MysqlSourceTestConfigurationFactory : ): MysqlSourceConfiguration = MysqlSourceConfigurationFactory() .makeWithoutExceptionHandling(pojo) - .copy(maxConcurrency = 1, checkpointTargetInterval = Duration.ofSeconds(3)) + .copy( + maxConcurrency = 1, + checkpointTargetInterval = Duration.ofSeconds(3), + debeziumHeartbeatInterval = Duration.ofMillis(100), + debeziumKeepAliveInterval = Duration.ofSeconds(1), + ) } From c213bb3b08a6cd6078b4a011e3fb5aec476f033a Mon Sep 17 00:00:00 2001 From: Natalie Kwong <38087517+nataliekwong@users.noreply.github.com> Date: Thu, 3 Oct 2024 11:23:58 -0700 Subject: [PATCH 015/379] docs: 1.1.0 release noes (#46320) --- docs/release_notes/assets/new-schema-tab.png | Bin 0 -> 77990 bytes docs/release_notes/v-1.1.md | 24 +++++++++++++++++++ docusaurus/sidebars.js | 1 + 3 files changed, 25 insertions(+) create mode 100644 docs/release_notes/assets/new-schema-tab.png create mode 100644 docs/release_notes/v-1.1.md diff --git a/docs/release_notes/assets/new-schema-tab.png b/docs/release_notes/assets/new-schema-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd482621adfafa2b773e6863560bc76e012526c GIT binary patch literal 77990 zcmdpebyU<{_b(DsD$+EC1cPX8MgEUAg-QC@dba!{>{rZdhKJWYZ z{D0S-H4A3V;u~l0^F3$pPY?{16@QLKhz17-_gqp!L;(&C5e5ebUyAY+_~vt@pAzuv ziM@ijFkImv@irXXYdA@fcSSUmc-!?`>(bhVjfpl|eW;D|bSn zbvVxS2Uacf^KUM_+}&CY<0#qmKKWS-%2{{!b89Tv8$Y-&$bi?+U>}sAKfgl} zg(X2X5|F@u`V#_pEJ!V;h!El*-*e=z)7J2qNEqPBU;pu)mg)Wvhl(^a0;jfG9&P!D zLw{cw`HxoxzWjgo!bdGAS@_J_uN}6At=B@xc%ATa6sQ7XV>dfbkB?hI@dZft#}rvo z_&p<7^cwhn%@b|^Q2e0-Hq{Nhv|1=a-|UWJlSmbq-gU}275!V}1Z?1o7-5xG^O37v zLrX26#U-LC1wwH9!X=`}>mBpCtmfWL73;m^_(;j;{Q%zojcPM4%my8(N)icC0`>G|{1b^6LQ=fe%( z?6jCKpZxpV z_wsYIIcnB(BB$kxeRq&{5*97_#Q}fFXXJ*F@9+Gp8r=pN#ln7eM^lBz_l^A+3e!b9 za9V0c4I>8QH$5J&)4%6;zaSP3E$`6rz7(!?kbL)QICoucs?w6dW9f6N|BUW#1|tJBm%DE znog58GmI%2Kb$ZYd0pX9J0ptQp3dPW-O5G>Pw<}0?1ZH8uCx);mHwM`TN1Z9*gR^tTgkSWdROLBW0}zIC<^__!nU_I&9fpEhC?ZXDhJZ>r37YU)NN_+ zX~JLUK+}E(tEx46u<3V(8Iz}gXa#OS%nF$jhD?3aWwFJ!tE7A$S13JSX@rBZT&0^X z5BQrya5ZdpC$uQO^ulO;Lh+0A7V3X()VKQEe;4w#hoeM7FD)LIpEaIyK3lMY<1rpE%3|Z&JL^cNp8lUg63RdIwgR zJHN4B2qWOmC7LLh52p|x(jDvc{HdD5veFssTX#wN-SrgmQ$35GPMN{aY)pkv+w-=P zML!@Mlk0tebj$f}m3+DBi?f5V)-3j#82U$ctS$2|@W8C!m(VQ%Y=n)j&T^SVP6MXTz_mdUWa z>8HA5HO!5ou<(AYAkb^`e|LXlWV1c$IJOzj78}KG=5fbY%)inRYSt<9QV?%rKqK-2 zL7)TH(>J{KH8P6V`RSN=T_wWE!Prjsw*hM00x{bvuQn8HEhA>wluj-zxY)4A_$a~q z(vu#CIb|$~(`!z+KduBVl1xxE^jpk8y|J{;`X-_0joI^ATQ-%|< z-im?33BU-JvlC*_jS8D(w@j(nJ3&+@c-xhB_Elc<=R233%uP=07}tY@Sv?`Rv(N%{ zFpTLdKCR-6-z%hKPruP>TXeAb#7F7WhtHC4)()Ky=ejmYc3+!+6EhvFBow&K$BPrb zG^=~3T4xm(CGni-46G2Ou)A9%{#vmUN33+JYU~G--ernGk+k)%T#~7#A)+ypyCX;@ zmj7r)Uey<7Z{x3SmxlrTSFTGY)U4T#c@L()YICFX)_a{;&0LYtjaxD$rA8WNS(5m< zFr=qL2^mW<^)Cu+Ga9!>E8evFqwf-lwp|83PqZ{N$W#6RE$f`znkm3M*&GV1v7dak z%%(4*!p6jXd0!Y4^&W>$b23t}vZcbjD%@rE=n#d1v_OnjBG^du(=<9&Uelqssb%|I z)nY{R4#)dZC6chOFdsrt}=Trjqm(JId5vjq_Yy=>Y<8-?R_jX*;ilGKl(B> zFwBwb9sVKjQD{v9Q@&W2-eFI*i{Qud1)AnVn zf8I~UI%G~O!gX=baZ(6wV=Hj21a}dcKa>%lgkN_HZ=Y?4zO`AZ4ra2OP%fAWS?j?j zcihR`u*`0i7h%yiy*k=99m}qaf>SA4XrHN=mCsXtMFF$hkdDlh#E!Ff(X4ZFwAq__ zm9Nu;U1Mj&UZhCK?{f5#N@{~EJ=fNtDf&~_6%FhYYtejNXCX9zdO?DMnT&g_wE-OYq7gCMGcm$0eR4TqvH@4NxwYEa_()fNJX){ zJ~&}xYou)Ja#hE4y0p|ac|!r0SWIBOY#*gcJT|*cpjPO`g3u~Zw$sQoo@xnZ=#6F-ARJ<|$?RuRO0J~qwb^;y zSWd6dP;{y8_Coqro_vGme%Pg;81}kKtKdHLkHmPmGoW@lAhhl@Dt{@8J$ru}3C%v+ zq`nE#-`uIt*qW>HO+A)g(+Iwpsy7OAotFo3SgK?CqnU6V8VyYlxL?Q$MOureo0bq4 zjR&o8lr)Kj*`zzrtFzZ}d#~q`fHbI?Pd57eQuxL7I>X2Yc7NqMv8B^G?zB_STODd! zdpx-A|JVAl*9Tq?AA#m$tb5+^iA5xZD*iC}>|eb<&ANUVDtrEgO{Es@P_cpb4;A7A zCa`X#^To59VJ2{0YAD5T}K2yKsM9m%Ni+O6R*Y1Ia-beuMa;H_j5e0blZSXU_n zS|3av5doK|b;)m7EPB1Hu{SxYE`*tO~ne^pbryT%bWgEa34pLu`-(lTO(HF_P*n{0#vyp9@xM1zDJUMjbEX)Lz_) z80|!tKIby_89GV5e#G#ua z%u{|e8=VGe5kz%#24zb`Q6#j^`=eKIm{}=j1m(+T_@#D(b{mFxpMggNq>*mdV9A=iH zAya->MCit4)955(vfz;L(LpRofrg5$Yw|?>R8a#|AF>Ri?US#vGAsK^v}(wYOdew{`cSO{)%oWUV(VIsl4BHMgko#Uv$29U4{^6YW@4V~&oGZ#Jwrr91Ak1d1eQ7uKW#XbEV~3X+Mv$1n)iZS#s_i^x z@2*e&pZg0nHC3+dbe2+)KKH*cud(OgfcIe_G4j7Zgt2?xl(Ve(o%@4u2}&Fu?mm>8 zvBBAITyTk&##f5A$QOTMT zISS*M_26{Vy=rS2x7WJ{V5IOU*^3;fiJ6I_#m{NpgX}qGNr`33br)4v$6b}#EVcB) zW*cE2RI9A2Xv<~aOjYzj%ia?!F6?EIDIQc>@tbD8njO!fhh|D}mQ^NOv4l6kDfADJL#UYO-*?b*?5aO2E^Ot?)kXU~u>9xNNH46{9uaxw&C9 zN9F3hVvQZXbn*>9xp>6VVL=BWgw426_|B!o=DPQ}!xnTF$Hmy-oe^G13SSnpa^c*8 zxbhS_6`DWLOnlBUm!`!4#zN z4PY?uaAC8-y^3s?n=zB2{yXHmxdn+=?j`m&XH;hg98XP#w8RDy$l_<-!wfCLKJJWO zW1N1CGIKr@Xs$hP^X$s{Vo-AU?3HQ}9qMSN%tyb`hkKggtkcvWEROVPy$Ju#SBz`Y zATSz(b;`!oNuFC#=A@c=BES3dLhTwOg?&v-NWFJW-h9e@*U{Dpwucfcm)nKKMabEz zEx%h>>%n}NG>=JrHCTq9Dm$%)9Hy!DqXC-0VgCH-S*nkALjr|f`qb929!fNIu=U3% zd8_?-u9iq>t<5r_dc{tpKRWXEuH2vYRq3S)zi19RvP?CE?&)tAFj*l`tP`QV5w6Gg zA4+x>(k=G+mhGS}vQFxTzI;>})U zi66ZGvkqU+5i`;*$Hf|ZvXKmNR0}#%?^JnlWjfq-xhzPs&a`|OG3_Q$1X?H{HeFv} zFS_!%-w^Ay@2u#XT5)$24IVdngARDal$f%|O{6%wYc?#|Wu zhtsDaQo@9{{C}1H8J~GwjUoX;!dE+||MThJz+y5 z_XS`3{Z2p{zH%Sd-?yaSyV4Q>OW|l5{wn(O>HVNUbl#k`epLHIY5*MTr6w@EPoeoY zxPLzVO9&7hKW$Y;sXu4uQ>f5Sso26>M3v2dN}$N=HB6|VLU&!Zdeon95|JK=fo@0M z;6KD*?e`3Eom8U#hZyMoPI11=ubMxf-jDBh3=R`MivB|k@_)www}=P-&oTHS4#Z$h zOR+%WA7T&#q_}wH!{$Gn{sfpI{`Ka$xc~3~6#q`Ka{Z3xpHDAL3Pk6NvrGl~Kg>|& z-w!~DN^!~U>*U`Xrip-n z%MQZPW}>N{u)pvW6wW*M&*SnzsV9MdhXolIkJP@Z2S=?1QCs|k27UjMRb}60s`RJ9 z_+q5^%nApyZZC)8qYUD3sT78&0EbZKtfA47oRaxwh!3sAzEK2wh~R@U|CB73=kQkO zS%KDI)*jpB0}(pQdAFB|Tx8ArvzK3}r06{EY~P6ly&SZ3`218x4AzY~QmN%wHRSn~ zMzh}KIh#r0F-f%fdaeCBB=Bh2a@XtPj9b7`5G9;2=6#7i_gun4hPYg@>#3K;oikZ9 zRcNGshkZioq1|nL+e;h<81DIQEO?BV(}MFiGy}AC^?hSrCL5I&)5;hT^FU z247yk+jD-fKN@Tv6Zy|2<+UHCjTERv8R)9(#tE|8O|yJvoEO78#%bxHm6`&6&#|BG zPV9@FZOOCP>RY#ml8q(J9G~hyi?q!sh~Ym9KCqC=r;CVm$vQ5A0^Bc2S2mwuj}*8Y zh(r*-87`@^S><} zM(%eze=1~c@w%pw3VMCYPQBCJ5U^E970QaHg4N6QpLs5A)&TXO=q~54;oJ`~uM18) z!+C#d=AfUf5Ba@$FChN&(QqM!ze_%EgKKO4hkvk(+vLob7R6>zMb22`W%5iQ1FZ4p z#M$pTKHmLpmHo8>fHR~h{gB1L-k!`?6OFwc_Wk=)^XBvKVH}*|AI{~zO2p})FK;?k zFEgeQu;fB?=q%DM z;BCCi6$rr_u=3Jr^q}vI)bImZ`#0VX{XbQj*u5THvGACP4Hw7+t=>G`m}7opek9Rr zZCvZQq?XeT_zk}m%sy5JzCZV6H=@`ecqQQ8rn;J zvprWsFI)8P-mL*zp$^8DH?D|hQ`X~oOnmsPSO|MVt3WNXIr!XTu?inDQDKNSceGq) zdw*jIqmLzPaI5l(oxkUB+(GM4X?VKOHALZl!M-(LhZOyzIIBO(XqWQ?*macEV%iSw z7DHON+D1<=*?w6kKc{+{myvs0QW?77G$%fIIV1HecfL+dFM4z3TC8lt7lFoLV28xzXbFsl)Bnlq zekS23C8u~AyTca4(J6;PXQb6)AJ4nLt>;Vk)JvsMear)7<^}#Vk-Mk{;Wojnv%70_ zobJWZ?kFZL!W)4*joAGTbh4v&O>5$*0OQ~&UP)n%AVpz%YtiCiHQMU4F|C))SBYjyq0lqO6rt7n3q8eQ3PD)JU$7bDn56!!%RmJc}y-r8Vs<}ZGBJ@vjwhR?`2S?lpR(BZP} zE!XcDG=6rwMGIin=GTf%P4e|FvgH7Lm0|TC{M!j|nI+eKQ zlP}mtM+jr11fCPcw6!8V>i5Taf8mybumhM8Dt5bAk#@$ht^cP+)-ccN(I4LCdN(?^ z7oT4;S*Y6Yf29sLDKu-S${-Kf6-NC~viE_GoQ}bJw@%cs&TtJ=#NK|jdyg)I<;_8z zdp+{rySk?y4W>~}Vr!JL#FHXl*9XRk%_m-*hTqxx#d1hdJR_WI31Z9RM$6LX7hgS! z%0VIG4C7v#wH99)?+J}#uZg_om)Z#U4IKZ3rhUJ@pDx=Z5b$`BtHh))LN#gL!(#pn z=+!Iq@^f3E4rRatX>T!rQlpoy*NFJz_!%J{#Q&h~bGIVTD>m30A*(4%<~c z-Su8Uk4;R~RNsOQwcgoZc~vh3JXA$O@utJxtBDks6vdUb0#g z$6;TQ+Byv211#H`()e|byM@76_VrJRs+0o3EnY)2dZNiHLdlkmNHOrA;{ZspbAx3s6qh zC;vT}+kU!Rbb_E%u1d4a7(WE3$9VJwE$o4?iJj1G%za$}IC28J(3w`^*>!Nws72Kw$YWO3!}XYE<~ z-7CN`<=+$SgK{Ol)Ekpn?Rv@?K^pw&{+4`srNgG$nd{lY2xTsp)0|X$7Jz`(Noy}J#-w*naxy|K(o(NO)&;aHs+KLzM*xej`lGY$kM>G;t* z)PA!t;jEV3EIKYhdG3B#Fl}w$a{;Gb(9R)Y`WpH-+JsLMAZ~sfT{MQQcD3qVml9Ol z&wi6RN#hF1+~M$@DnX#O-Jx6`Wu%lodzquy#lhjlKmF+g2uyA^&8VRiofod(qm_g6 z1*$)vh)u)vT|6?|E4#Uyd;%qbf0O2v$6sO6D%^uAJjM!F)lcElsx8bS7?UD*J5Zhn z094z8qO{~QC7gEP|BWAF1LlEdvW6BK`_n8da7a~BpW<%qph-Tt_uky3!AuW+wF;ni5w9lD5(aM4SV0|)nl@RCF#90m_XSXH3Er+9|U|t zDqHD|Au_$`!N~4}RvmSRg~ogF@!`9w)72Y!R91I%Xd&*i|VA}~LL%nW7Y zdEy<;`a<;(&c5+GivzLF`F^KEfv4GNYQn+y7+ZoZII$adv;)=jGdipI@oCNngppUr z2Jzlycvw_Za`%FwpAbuin;sGK)f%wB(p+)?VawI`AH2%7_f%v_+}|wUA2TS#4vik0|m&H><=YK)Co1KvGiI=9}$D_wxeNmMX3|&YOSUUZ85CM zADt^*?hssUvz$PyJ3!K{UYYv|kgnW(nybI|39kHJ&Fx}ZDj8_6+|*SPfHjs$_kj-R zwz6B11-hfTaUY0pVp0=W0VTndM66V-)lx?&J|K>P?`=}&d(hGnSSv%RpdY}3Oq9U1 z!UO+uMgRRxx3BNv&@Zdwj8$s~o)S!t|OhL7-{+M8}%p_7iyZh>Nb0~_@oe+D! zz2+%3>>Kmq$2DS#q+VDL{%bt3i{htP=oV$xoX-AOW37z`0>tPKI#>(dM=whZM7jJM zX_2RsP^nVdwtgZ#TCni`lsC1Te4F<)rVbNAO!GTcR1-(!bq(&3zuV(%=>3%~`bgEG zDw}wKFssqm6JP~wKP@wsvQ)Sk|0^J{UxiDyTjqr7U=Un(1#+>ay5HM_qOM9oKMP!<7=gbSA-gywpHf(H0DCnLfpng z>G|$}`>)=_?r2=nyc`?`VY91_yhi`3&$XI(+u2HXSxD5dd;t)Dihyf?%W*P(<_VzU z0<=w-{BAfZ0q59Stx8;IpX0!mIo5-Op`W^fUUg)=F=mn(5C05kybkF7TnH%=sAbdx z07(nazJGnXNU)(Hv?6yN>eJe575g@&o&BwtInsDsD;|%MsUXrYLgK~FFW!-yRpzM@ z`#XA$kfda(k}88u%)1MXAI-Hdjy%zlcPFiG-O0Fl<1g`?GeXG(D2p3d`PK=WOA^R@3yd~yO(RDaz3RX6403ExlrU7AjvJ&`P`J%zEv zP?TAo4vgIrQ)##EDM zYIqeCb#sZ3tBkxc@PyUSgErcQRcF=xK!S>lO!t_0-KlHn)6@HZ4)iIJ0HS_;@yx;J`nFFml*i$PWm!ES{^-| z(b}va7CW-pEcv*r*c}!5PD-QYi%%%I-L0{YW=d{E%`fsX!REqcOP$>8mCbv8fv8mc z6?ARpJr~s+g6ll%rMiaV8qpqa7X=$Jg?XJw#ePIIrE6ZpZ;k!v;AQ)ey;QO>RJ9l; z(h=f+)De5GnLsr5Fi|x7St0AR+M)i%Nh;hJG8wm0IPX(gpiMfPP4a~seaVyfYCkr% zsLHCZ|E2D+@M~j+?|Kxvw@$hj(msdtHP5A!S1#3$91lu6?eoRraTp1YPIZ?84<8c6 z)xUrIpnE2v`y;s>ZL8OfoTq0eRUX1^@A}60C8vme(y9h7Y z9=Q-1u+A{Kg>~ycaxR%m|EsIC`P!Vsy_M3-CD z29D=YZ;qDPmI8RcL3y0^hyjc#$Ydzx&AU%i-BA?J33AFjt~oPh5)n-XH95Q3YC&eB zF4>e%$5KM@DnuccGY)Vg>7v3L{j|2%Co-qV##T=6ePQ$}JZ0PRHt1A?ZB3?>5UT8E zB)lAvmZJ|e->p0~5T6tIcYUQ13RP~7*caMi7fOHZog?Pc4GrkgftxBOm56Gk=8;W7 z9L++&qVjSLK3J>@juDUa347(MD(eJ?o*!vGY2gX|1a%P&g43*THb-0Q!|=nf4xOm+ zdJfWT=e!ssshp%W<{OD1X$XsFOJC_;mhg2FPdmGG(Y<793dEy-p_B{nhl(H_Z;0&z z^i=i_o*))|g5gGl;T!~;!;}ItakKWVj4iN_JOw-+WKcx0-i0$wB&x%_P0T4K4{pBh zX|0HTvq>s~>q)JXg|2vk`ZbQ^*9D;&hhqd@_Tfu@CYYv-b6KqDgD6MCt}rdMmgjE@ z)&=q>^ef#0zXlQ_yoG7M+Y`qMr@>f_$X(o1#ivVMF}dwTD1xiyF?2GZ`USrVG%((1 z)n=lQ2{3S4Oqn}{$wpI>ZVWB@09w>H?*k0qdfnCM7-`hl=@GxRK?7vB@8el3f0#<) z$&1*I5gn8c1c4?Djbv1^Cy)Z6cITt=t^LUcq55b)`MoT#@pBYr)1y~rKDg>RNc|Y{ z%~$hPw$$~TjU}z82HI)^!M*L$j2U`Km&76P(=2 zZIv~b=2f4OhxFTv{d}|QY+s{gdAeJk>aEsSSv&>7Am8APr4eQ-k=?x7#$}r@A^vCx zxb(9VV`W^$$2z*}Xc~ez5F9&qr|Gwb{fJ?&o+t4V6+=T_VNV&+R4Fr*h3|r3>Eg&< z_Xwto7e)|mp(Vbk1LO0d@+xGEp*M=znMIxjz`Dni%6HkDS#3^~7&EaEBE52q1u63M z{N?-a4PY~}bTh=+9?x!A`H)pl$3vjC z&WCRRb+12wvNzA(eu|RX9;0Cs4#pIlYY*gzt(I~Iw81tj?V>+~gSRahj9Lt)X($p2 zlG_PoTi(DxAxT*^+;+tZtDSNvcg7hcZJ#DmnIiVR~k z*Ki-Qw!DXe5rGm?Hw{LK3W(JD)Z`MDG(n;f@XtuBR(ny(n`fq) ze1_8yczY`@)sTBc4vNkZ1{XKG_@S=DZ~@-`?usjCX`i$`oWT zVL_yg@|5Q}at!yMZuTa32fAgKmApKwtq_{9;Iwr(K^(5)I+DTAee}}(g|<{BXeloa zd$%rFiAq_?%=;vsb=v9SCO?^xvGADYN#ubJ**ZNOe`95q*ZRFR!hQ?FlkAc69Rn%! zI*(~;Shh?FDpPi#ygH-SvpaCVeQTRm+L}%;5d{ncYxPIC@v{CZ&QLxu&L)NuMNi}} zJN|evv2zl`NDj!+810QUGO>}MLL9)F1XLc<)3&+}M!(ujTHS;IF-%B*9hIf?LX8QflV{jKC)H9X**tk{)IkP1_bUXkW`$tg}uY! z38U6GV5H90mj{8>gUuWmSS{-UD&a@+7Y!Egb~B7EmqLep@fa6Pp2~B-@9s^2dXlU)fWG2^ZZ-2-aJdu zY?@JRn{him!1#R{5k|e~l7gGo9z-DqD*57+qfm2vv}~Z0h6C1j!FFv|sxTcPPfQJy zKm!Q}%gYjR9sE`U%M@gGMW&K}9GB?+#>l~GH5Uj3oFJ_|K}JA8poJO+1iH-0g#urN zJU;GQr*MDGDV$O7^v5?cDTbk6^l+Zf&P_Mx#&D+Tr9$w&K+|FBRh`P_!L;ggC1JeD z9HwiRAxHpSYYmr*FSP4a$zJ*x{&a^6vG-fqK-Q{BWg{rE)Ue{$V;ak{)koq!#ewH7}}@T1YX-n0ZzPwiBg}Ns zTRB_zbVaV)sgl*#STqrVh^Q;ouEs~i50_8L_V`y3$Y|zGfBRU>i$PIY!Fu(LbnVquNc$ zoe9U*3DVZ4uAbpghsAcKz*VCb1XTJ@Ti2#dZ8uYT#m)Ov+mepyCw#y;Rm^>Wt3@( zX`b?e$e`w2{D|`IjblQWImni^@Zbz@xLqq;R-eolm8v(hhs{zisjzYfHzQ56#|LR( zy^pKdY2QgvHNv>w<#?`9c)dSfikfmvZ5HrX04|v@EGoXTL$X_-E8|qiE}vx^)mu8> zbzT9aZ;eG8-BG06_Qpr{pt?2R|KVR2Gd*&)hezLrOaP&Bs!%cc?i`Nmd ze&K8pBD*kF?`@gZRuct^nxDXaOs=tBwB4JwZ}($2>HCHUXl&iGhAx-2U03nnA^b~L z)T}|?3_k~`vN<_|?yyCba}#+-q^-@ktvysBRN`ia`+J?K7KLb3<|i1WQ#-dd=I*zh z`t$kgZ6w_v#~rM5V3N|;`o4$XIjt;*TpJ3Sl26qDogf>*jW|}UlN z$pWb$cQ^o$w)D{-Z7w$xAcaEF7$CI8lE?S&XtlhTUPyz^ANT2GlU;XuiyOPz!%3bl zdar)5`8bIna}D&;&;~c!_6QOZd?rn#_4m6I90L~-9z`GMH&eY*`jDOFG=&6)Im4&IT8g5CwR7UJB^!luX=DMI@*Mt8(RC1^O^0f3%Czb!yZ zj2f2?Hc!lEyCMuoJzM=sYG?E3_9yS@yHnT%w)n26`<5Bg3>)+>-B-!AO%*7YFfb>T zO7!IothvRtS3mv|U?uKJNvnQR!Rvfru+hJMwUtpH@ak5z+!O)uMuY;pNNwnLMMNrx zxqp=36VcNB8ApP3) z)v9Qtf0D)fzse9_3>e(wBUFq`O@UT6X)6f33$MoNk<qfp8A|KgDx#9Nkiz#77k1}HmwROf@6d3zSEoui*hgLu9UBBnu~tB|ax|piul|Ex5m-gBDtL=RjH-iEL6T|p^JL$5?~ACcpSkylSND7fUYEgMej)hS5W}Hij~i4f#$Tb zWn`2hjwCJ}PD@9qii}c%<21YCu; zb|%%MUIqf1+A}Mn7*XWwGKT$IO`A3~WsfhOai+CDd?t^Xi;)CyL1D9Y-KLj;&*~1o zL0761Irlq)u{WjBa7065K6k(5zeS-E$S31zH%%=Sdwb*z@w>Y&ODNCbb7iH_X=Knv zn{V~s4a?;5yn(;i;|_tugnX`W%a+qICY>UAR4BIJd_xgT@Sz-T50SpFgFdHcj?qsJCd!rV9YW>@W zf)B%y{%R+kWq+RSp_Nm<*^lm!a@Ia%GyT>7DMi#pl3NHWkxsIt0Y%JRBx^c5;&$(DOlH9u8~>ecXzconH>d-sSAEg_J>mPUC) z`8cn;63b`3;B3i>9L0&t;-y9v&4wQiNq=nz?ctRJ;3#6IaH2AK*R?2`O*U4$nDy2} zwxS_U_%tAeU{+e!5OayI)V{Nh{qVKS0OMq<3!yqa{kH$ZJG`T|CWFYkc6JUI64NUx znpG+vE|e~@a)|zI;hfDv7ZWnk0(%>Xk=nZ4Mk7=3N??l@D5vGxmB4_8q#Z_15ATQN zyDcBa)a&G}+Et=EdM64{p> z(PeHth1z42Q4pgWej5U6970?-Uo9F^{mY&%Q+3t^+VO_Nda5rLV5z<)*H`}QZ{^Ua z#E9kVZ9)~bk;N{)L{Y&&?jVQ!S_vF;m=6v_@dp!_e7Iz38W3Q}Wa1+wQ{i)0Qo-V^ zI%`#=sSFGV2@eB9a6|Qe8=WQ(ni_;3y>Fpntot*fBPzs?cV!bI@2O;Vs=V+sf>Z@_ zEYvh`Fey?AFuM$BV-whO_GmmK;X_7LD?Y|tU}tsOze3^yxS6Y~sgP)mj-LIFvBc`X zrxPf@ZzTa9e_=tz_D=OJgAU$%j+lqKFlp~RZR{Wt-lg5%1W6j%IpJ0jj3^#Q&B$KL z2;x2A9(B@PI#)rDyWSVpI1)J&0T|H|r8iD0An^QtpPc0yZA{$BMj=!m7X0K&r^o$4 zz-*Kp`<1Zk5b2^@*gGLqdTFh4-G>t9@ z;o%e`X4I~4$&3cW2bB&*hliQ!+d5}USS@-DM<%Vh=C>J!n-5vdRo76%M{KgS4wTqh zEI3QI7}j~-7D^Tw+|!GxfaeE3!qlW^9m1gYdtWb~(Wj*HI`^=ob(bg59L6*sP&F|B z&sq!b6CCxwT7dsi)4eQ3EzTYtNUX9wlfcrRlHcI^RyrpLc^v!Oq zd>@B^jrv)ny$NlUs>;>>GV<>E#?h-d3vp1iLHgZ7=!zym42;R~EtILGCh??`=PkfF zvBL+P_$cVM`uS6*2Yw2~xL3vrHc{^q=o2%+bO+xwn_>^YG#yZ!1F4iCd{zr8_wkg>wNszKnk z1&+S7+Dx@=RTSxOB}GJl@aKEgbYE6Ka^L&nl17DiR{wrkV_yyxzi3|WIqxF(PpCvG zSC|l(i1PuzFf1r-V7E?=Un~M=8SHgV;^OKrzGV~Dzx$a`RQO_T(3}=fBZ{r$YgCPO z3qk~?_K5j=VO6WtcH0N@w{g7A8~}l5=7+V5%cxpBm>KSmK{he2r7wSxE@}^8WJ=U4 z!7D*Xh4HdnUUwej1sa2zRY>R)2`Fq4T_8$MG+qE&u1Ii^qn3Et)jv=It_{I7txr)l zU?-yJJ=qx07r`ak^#MZ)9k%Zz;)V|otYVq8*zVokQ`;In#bs`YZ`b*1h=?Pr4rnfR zbKI$l-6aqIL#XWM0pE|PZ`1xSfeprW=!;ggRKZK(DVF7zG*%+mhAY7X&3B0beZt%R z7&eb2zr5w^g%gvP@697bYiOfJvrtXaqX}}_7x5YDc4;6zF)*$PD38nVY!IG+>SkZ; zFD~*RGw7UKgYm$q7~vIunh1CE3>WMPOo0lrcFy>5fP6Avrp+`1z{ClnR$bUw2!o?U z^8*by4#+!$Xm7{a2kqMe=EXo@&(J73=`w?4s$NjGxx6l;MkT6V+sqnTS16zw$SG+{ zco&wm%*V|P!MqR+7QSwQHM*WoT;*h7`?-@9eLYdGBpbsku$=Sw!tYAJ&VWOx6V~ua z-9J6uCLrj_{M_>EL+5IJtBAzL$mC`9lX?+*OgHonq>`BX*l{b6j_*A zp}1)xPk+cJbM2)Hcz)brDRJBx?>_5EkOJftth7M@@@?yo$HGg6yRPGhvV3%Ptf*9| z`3&%}IMTtUm@{Am{2OuFCR)gN##M5bfKG(qw+~I>Fkgaqfj7U!5V$RmYvGO1pd8z< z>{ZV){SLe&Zu^mLNcP)}fyC)&2Ht{5mkn63TdB>zTk>53eENig+vYtV4m!TdQ_6#o z#);SsMGY=DDB+>g z>BCN`9)5C=&Sw0_GSS=O=O4ep)hIT(?a!$p77aDHV|ZRGHiJ398k|k%g$x&Ad+C(D zU*2RLvM7^~o2)9B9$)zojtzkj_B+y7kBMVhgGLnJnMGWp9X^?W>N_OYVYX3Xw^K_}nr zpk85Rh*3tmUCqxz(!$k+H}KdK{LSr-7;3R|jhR^5eC~dma+XCVa<85@l?PqE7*JRI zgC)TCGVr&fK+6576?tf}R0$264u`z<_1Ao<5{F;>7E^a{lh$^(e2*GoTiT#Fu4u#2 zTYC)NXfDNn;_m;AzF)Bbb{0>9Nwqwj|J!H(+lNTNt#d*Ear_6n3E5M?&VsSZV;=M8 zAT5Cbc@XLQoQVI#s{fl{TWWj#I_*qP)1*M*&#~eY6B6z*0R8$0uaO43NCCIb8W^_o4_+gIXFznwIvpqI{+#`017LW30SYAl2|xe$7@PmUPyTCFzfk~k zwAr6w6bUDM1(4SlQ-+Hj5x)UTz$C$)tPU6gFafLs_~!*UuUInypY<|-r5}x4%F03m zau6;(Pl}*7CWC>CMX3|XJYf9<+BC71cH05(!ty$2vL(Rz3v_+K^np#zU31m8$Uc!{ zuHuoTxZ2uji&F`M$#wA7hh;(d%)eDr=bfF;ExuoFlX?R^I-s5lF8)94y=7QcT^BX1 zC{iLQB@HS_NGXkUC-v7Z z?;oxWi?jDWE9RPW%rVE(ZoH?MZHS6Tr|`1V=E&6z|HWrczqQeCRW5iGFBCWC~6$64to1jPs@T{?*nJ|Im=eGrp3SCbGfuhl6-4D7g?>ZT|p?AII zmq1dK?x>g&e?s|0nFNwU0P@I`tUP-j`!u0dA5g!38DK#WPC3EE=P~G2bR`95OavV5$=wux}{}%jQLQydwUKx6hx6bqTJGJ?d~tm~a@iOsOUKOw_^+B`xAvZ&SO(dU0(?rh*|%F? z99QBrcJ@H4;k^~oE2pDvI{?g*0fCSm-uIQg2BomNZO@@yA~YvsRXvnnJy)*$)7*Gq3w}uwGMa7S1yUlMswJ7r z7~WW3{wPTn)brE9-PKWi!Lf*H`?%hWx=G7I=2kssoL6vdki1B=8Q<$`9^6faEr!&}e9nL&hm z=}4m8X<~WHAQhF&X|r%ASG~eKQJ_5RRVO>)bPMbKT(~i)J^{Wa!@k6bEk}~keCa@?LOnh$@$Xu3_3eh6-)SS*?T|~&PvSP1)1);TCY`Z9 zQu#5I7@wc+9iHShb6U+HSuef_x~x@dN}_^^1+I93%8mvAGxZf4As3s=cYkh0Sp)n+ zoxa3?a_7aXbWlcr^GTve)WBDrrBOC~W?I+Yp-2htE`8eC`LeHEX3s$_ss0v5dndu9 zOsp-IH(=RhtQhYun>87uW_6%HVMsKWUe}@iJv&EIU<3k**dUazAki{~xeQ5)cQM1C zI^DA|a|+sVfcSG-=|ru9fL#(kdscPsPoyU@nIXS;8^F0hsfXlf$AFDCq%(Z{o{1yY z7FidJHdLGqNRDBFA}{mf#l^4#O5%-qg^WA10~r{Or-!teN=!!UH9F1Kk-e0jkOZMo zsj)>bOr8MN&S;Jz@e4hh#UcA=@59ABk zZu0>in^39g^4lH!Rv>6~GbD_`gyQusjs7FC8J2Co} z-I$hdInAwg4wG98iql?=Vl~`k0WYebtL2A3cunJBMYd)QumiEe!2Do32WsSLa_x{d zY}|ls0?ajHK*bGfs|xzRY||h6wmK!SWws~#8vdj_1mYpo%vcuf!BnjGd;+lS03h4^ z7I{@BRq`s1NBuDbKtT9dWKTst-K*$oWP#_&rEtonKxTFw_j^$$k&sP|C;?i^X6|$FOg3J?{(c{jr0{78pr_QVR_1ituAY`p6wz$*!MUbZy7r{u4OSRTNU@JIr z2-~cz=9c#P%3ySAZ{aJ9D3swh$Gf(;p}at1jVVF7&z=SlREgN=f)bkxPxx$i%0c;4 zyvjH7uQkrPdfj0}bvGl8$yx{)$aLPzdH3E(G9J`PmoLM`XFMbTwDjf~D&da|YDBvi z%N910b#7+2+0~V8SJ`prI|&2;tGs)al>Y+RZZ)i>6%YNgsGIaFR1cu!~o`=(M^Zo75|DokwBno-n11Oo-CuUp;kThbA z>rRu7)17JZq;6oA2xH|0@T*gu;5+mMx49Zg!G>O?)58MoN$1m3`KMN&LCq}T)lhmR zF~B#z14c|>ywpx|E|w?GRm^zQJFIJ94VFewGlLMWq6pRd^*wBV#BT?=5d5U?Yfh-|9)XP& zN3Ul9==hb2B(=tf-$6sTCG?l&4(auPEwu*abiuq=D?{?3Nc$jvzSjJ8zqd} zP7bHO$@x>mP$fS@WHXGHtg&||f~82R5*O2H*p>KC0(I<1@{MTJIUg1p zl!=nc+RKVP(eRg*z#zzNO^X|1>65M2a&+-T7yU#jyeSsVLKHHr3$IP0M)FHc2k4X+ z8wcIXfXtyBlPISGSsGbprEKM!xyjX|TIS95lH`O~5dS?C}8AqCR512mMC&}5v2 zl*@SFi^&-B!CBtb+t* z+8?!qVbF^50CxB47u1`nAGY8wSD1jno6l!QoNj1>9=SG~`Gk7Ng1)Hi=mnqSCR~3E zmt;T3c<{~wB^O14o~X#yQwY15uj{GR?dt<+(6Wc+Dzak$>m!D{J!wb|2_QXS@WnOv z8!O=#0(IY7gt2lh!*7ae>fhAnU*|TeV_RWP^EfeWaj>bDeiKK*S706l-}8se&0om#cjg zeMz_y#eMV;_t7y=o|Cn%O0zV=XvNB9w;vk^^odAf*x^F_Efa7vp`BqbI`p%acLoNW ztWO_tL&z`O^3=+zeWRH7kV>)ieDln+AIN)2iUgdk%S3Z*uo;oK#9QNvxG>La^${YzcoX{KoFm6! z37?};)%GfI58c&HYSPZReUez_(pE|qMnkwp{z1dz&VcSy23SOGtHJ~N*X?ea`=8Kz zAXoPY2kfe>$xQAye;`DLX5#Mgo(^lJPH)r^=q~1N8IHtb-J$jm5PZiIaX?t# zL?mJKjjEad!gN!KhRs5jaQWLH+b5}49V7QD)}oXA(Vx?t9X2{XQZK%ZL%k~oYL=xQ zKvxyd;9LnJK(JFDWcZ61&I)wXSlrK5!`}xtd&&9Qxd0U~(-jOAJJ{NN7~mSFO7Lz08vfi#chLjGd|Iyv3 z{-C?>nB+4{rK(p5=|`L5C%q~#8cNrOppd6~-HOq_hkQ4su>~IK+l)fNhYG@`v8UhV zXt>CFz4Jx=hN9mNk-Vd|gK@%?LDkqJ$+9e!BAC-lT~a(TSLLc)0>JdOVB2i+IUorDFR6 z^?djF1km|_*XkC$9=vs0^fKPZGD%Xk&aIc{A?&VpQ!l!FE2s3(J)JXVrF*cuqfM%> zPESAHHeuN+YQvRpMNI)o106sJ6+4uJ$mneCbZL;N5G>ohzhfd;u`_C*5bZjLCtq{- zYLg-Fkj%`6cH`>=dqiR0+MBlCz32~sWQJc?6`|TnBV^9`WkV3%F12*D|GF7+)6rQo zD{mGv|0*d+lZ>e=;j5;-EW6jIoF4NjED-S1e2Rcu9)*cPb3tQxG%1-OozR3^mLVS= z_4e$vme>8#!3360$Mp9L1@J*Oly zNvW2l`6T7t>-BPPg;XpUM4~tA&dxnYd3#7fJ(TpN$SO!t-qT6mOb1n}qju{W5>7>Y z*FY@HA{y$%ze#2#N+U}nBP7$Zxg+HCMdA6B8sLzBJ{q0rc}Ws-C-G%HNn6xl82dgq zsMfVu2Wl7?ZJ=<|Es;4@IZ0vG;aLi#*F8L(QGJX8T)~$C>bUG(XxOiesQUt78 zSn|)0oRUN=vwP>^PPjEBo!=N};#^O-Hl5$>jZKx9>}^ipzkhN%ON{M4)%vveyeg!% zs3(*s;EcJ11%ex$KX2~f&#c=K!^?!O;-++Ckuhk!ORe?a{uuf7w^B4U# zy*n@U2$M>H+=O8=Z&KRbzIM_pgZ~B$zS{vEsv1VYm>=oJ4T`H`C!~BX=!?Bt?6;#I z>BoZXy6C-{cf%0*e;|Jz2cH1ocj7q6YVgkp{3qt==m+-4se3M%3_q98ru*6?vZFfm zyk$#kax$Qj7;nWKR$2^`n@A}hA=k3qdPSh7j)ChfXGojkNi;AyIT>A<8ho)6yM`HJ z8{8#HEk%7awK$s6KH0KLj42W7CMvs3i6N{LBBe5rMW8 zO1>(wD_5^$3;g59J=r$`w0C-mT>sM6F9X^zw?^51J>}Ouv3-!PLq0hUEj{_O?V}fH zGy2e*d;6b{0#EjMj!Plq+f*bL_m?(S&;}89u@Ct5l>dA+@T*AT6%V-wu_d-si`K84 z({{+b(wxUjgKkO-7r*`2e+#@v(;KaLLPy|(8Cjaga zYypb?>!`4M2>(8B5>o^q%TdYr`uK>? zHtHPwIs305iK7Af8sC#gvSjDT6CCBWAaE+*C$~? zxuG4)wl$PQAXpG)M^dde3R9^pPu$F+`6W?o)XNm0_Tuvxr0%<}ctUmhqx zg!-BDHUixn2%6V|>M;QyW?IZ1x+;<1o$~WaPKDyD4DFIYJMls)i+!e~PJ|j=oOsl; zpY6Y`K~KmVuR2K=3kDmIqg=8MW4mJD1?C55=RU5s+#YP?z|(B z(bHOAfc59Hy5g~kVQ4#6p!-lG9yW4)QVv7g&`2zv*r z?5`Dg1lPSyd~=NoK5dQ;L&xg~UqE?=^79+~?~pVwfvR9x0valIE{EqH!7crGjGy^W zYf?o2_DZY-0Ac+Q&BK%JA!oZwOD~r!5JgTx`iH#(4?wN^a(?E`V9-Ny9WtHvx7$(Z z0`vT;Yo|k&@|VH;uT{T-ltC>J4>K-i_5YWd1HbA?UPVgrchcmd`|}kk27wWi3kdW2 z(*k<<(}G*F^wK}`{PUj4QNYk<_VqLWId~sgfbDy{;5489XZLw1-~ijrrb_geUF319 zK+|=ItSpLIe=>5Z?ec4Sb(%UhL*?$VG7CMGLOrylE)qW5E-x3Bu|oZB9S8U%Q@oin z+W(Hte;@c=-Qxo)Y@tg<``Y?p8Dgr2f9kgF##FlW!V6dhw`s%}h~O>PY3 zP8yTD@A^r_)iznrwdr?94Hi6%s~kng?=qfqzW8GdFPQ}2e#tuUQWeTZ|c=L^@j!Zk^BbX&TLo!4s`z>xsPNn%n( zzIYPjJ4`p3_x1*rY70OT0R$qXrr+ah!+0Ee%Fo>nr!9wDU5>VuhjR%=g|W0ukkRKb zmqZHg{MkhxHLv%(#y?1}4d>MdOyjaBHm3Zm4x0LA<$XN?WgbkIt#6TbZ1sFfw4KToo~b}4*BquPV~!W)acq{u*59lpDhA)ls^ zpFEFnAhWISZ$h&{coD~zJ$15H@x!+>JK7G&jpKb?Tr7QqKUOmr`Pk#nnSK2M_HB>; zYA1R`-?OPAAc@^fsu05+ia1BfEsW(=tAO+FkD%-ihU;d_FQ)F#hf7zzOf!oXEVWxT zCuU!xqSs1*VZe$V8|P||7O;kM7oe&I+s@I<+JTrvhnX0zUgw9wCuj6|F1i*qNAEBz zSFN2_GNNaZsGyJllA}xp_2QP}UAKXflYR+@F)5CNeCG|PMlY;5y~#?pqF(Q(^O-RV zOv+|bM8n03IjiHlMiSZX7Y{Y|`lCwtD}5SN{<7wt-~RAHKs_ytX#=VGn@4y-Cu}4Q1iq%C)*BFj!$l{#=C9@>=@tK8d@2- zr$T2~Zkcar2PkHM3ZcVRhO4Ha+)g3BCa78)61v{)W+R6opzP*d)}24z3j4#|OS43K z7ic*1ak$G(Raa=FZT;cYS4pTwbGF`$;{y?39{d8$Q+`+xcL=3 zd}X}Ox0*1WBp%7goz%SMGaWBQSS85qt<0M(ef2SSj1i*qgia+-)GN?9HEuB?CR<#0 zCc?G+3)oCb%g^OOk(xWbE$$!hbpG(;`ZcP(9Z<-&KZip;7U$mM5Xu+zs7fy7@&1>0 zN>xW8)uQm!{go{ESbxguL|Fx`%j;DHO7?4T=0@8`j*<$a*%!`-pBzljtD)x4KO<#0 zZy+q9o`{DSc;BH}R-0X~TxA=tajrW_ExWXf7vUs!Dop6@AwRb4pNGI+KX}E*gfJt zhQ;s_;|vHEKEAXM0v*>cJpnG8h5TwK8?``^QTd^}YWM%gITC2X5D|&DJv|iXaXE~b z?~Q8(alVmCk$!-q{mg!QE@NlxM7_dVxjk4k+j!7gG5NU%?gr0&Qa>iKN-UT{Wb%uZ2iqBrzInPo zMo8|#7aMEe!;!ncCOpLz52EeoO+&?^uQqB0$*;qxH+t zsPa-Qw;Y?YAmg-b0t%aYU_(aDkfQ~!S?Bj?5(VPCzgDKxjLy=-V7Qqe=`l{|#Y%J&}2jFp(gh0;M; zmvCBd{CJa$hhJ=LRz~}OjM3!=`!Nz3&iQX(zFqW~C&q zC|%FGbb}XF-YhQc-0WHZxdnPi-ox(sa$j99VV`yYak}Sxyeq1hAVixbL%ECAFlf$s z0;9Z^0(hOA7vM+b#ZV@cMSb`-;)hQiLFjQO{OYe=NWd8N{r%06!dGc#qlNUj&N-@V z{wHN*-|k2<;~2*YO)@5AH6#;0!LQKLa(Y!3e;k{iW4R}e&`%c-7X&BvM4R@;j!?8a zWN1{~tCurAE%`{!#(lr}9 zjgj=SzOf4(^}a<~a=AcapH>JN-4h)L(B?5)90be}&rCM%g5GvNkHhvt|Dm8ug3P{JV3}oP16OUOg z_PB=eIxEUAg?$P`#!wvpbpK&C*v1tzP?Z!BK3sUyemEr^?0RBH z^4!~dObW*1rGj4teUT!7%cNXoPoTQLHY$1b+vT!T$hfCiw17;@6(?vGt-g8NP!}BY zWdnV&ShV4>&p@@hyh^ej4qIoK}_P( zs*1=cwk*lzZl}r4l4rxr`No4CDubEx6S|t?5c<8k$FF=V z=n_Cp0Vi<@IB?}vol+zGXnAe4h~2GPD4VWSr&)~0^*9>@ z6YM?rKELqU<9*Lh&n`&OjMUD{k>-fP`g=?HNDGEW8wpLd+Na!A@V=3p`JP&9WItNP z;EViPagF!4wG!r_qRk&J^YcdYG|XmY%16cWd=e1WZkQm zmQz-F07Q9yJ}l8Z4k^S9DPP32KfX=#W6VS}P@K7}ji8x)OReW><=1VI<8YS=ARP@UKc!1r^W8xlqPZ=>azUpehECKBPGE&OR zYcz12q|7iNUQuZ&cvXJB<5iAg4#otU0%yWkq52?vPvXm18H9YQK!klJN>z zD)3r9wIY(+!JMe9hupo(zCH-)J_C>@mps{Tz&y)Ff5-r$(IW8>d{v-{-BaPE-=(Y% z;^%^~68e}Yk+uz#7U)vNSe`7ZxN@|pD?^CHa{EDp9Qi!WP{$K)t9xUfH0V&q@^~1= zOPBHOhKHW|stOs&bdQj^YW?;zbeE@UoF>RUGs|#?X#F80xpn+ROfuVa!7kURD(G;x zspXZb3OBwc$W{x8UyVh|02PGg8Z@lOd&5RUwP&6_Hy|rT!?|xcHBbsSHRNVMKfZI? zeyMT2fl44Amr;C7@R#?xiHAzPx#?Afe3D}@mMi2bw|Je^C&uUHG44vip?R6@vMMo; zy%+tBzF>N#Q>I8cS#Mts)?mZ$U(N+xofOhrXL_k;u2EUEsm1Ty^HfcMVM~Wtn;;o_ zKF@qZ_(VUImU;7RpDo52`K~5*v5f&Ni?d&b1A0pH{%dq0h`Fosh5X(|$R?$##qpWV zLIs>oq&bI!8mJIzs}I!`C{y;Jh~zgS!c*1aDQC!#TH#uSl%$U|(`D_z5g7nx$p{=$ zX_*kQpI{;L?JKjV2_Ah|AVE*Mv_x38O+pmMCr6zfj`n9zh1x+y5WHFs3SIgpX&UYX zwmKeieTm2#G_Xxa1)sr^Rne`n^PS!!^YX;5YEh3sFCOa8u<;^)v@ zb?Qei&{u+2c$oN6lRW`0rkY+P{mYckVqC{@d{0D!{8*Baq+W)(b*8E=fVgbDC15<5 zcN85qR%`@Ydp*q=c9W21Io>uHDMpw!!p^lGH=c%bE7NNi9Ifd*@sx*Xh0S^2nu8?Q zFn>2r)r1jocnEWO~u5l`8uJ2tqA`6rM=~waM5ZatoVi z8eMrNhX=7nOjP*r1c_JlMBzCz))+q_-DvytEtq6`fk~#ntjn{LHlr40Z>_!q^}RR< zSR_BP{!TYxOH)K(Q^UZSl zbN~k+WR4k)7UqJuwGq=vely+|Pl`F`$Qzfj#9Ra3&7WNHdMJBzW`U%?6nHguJ7h+E zADL<3hJ;ZOX7q)x2wKBiVzUT6C+wrt?*?f?|YB7vo_-wT}2mzN6%iN zZI;R2ADpiNl?x!}Z-uhaD)(XYLD6XqWuZeBby5z(&A9orsQq6bV;V__dj^;Ft_;#g zG~6YWjx1~g#9DF=SWlU62b}!5oJX)aR5V%J)%e+<4Enf&%DnSw)JL_Tj7rHxxkYIl zbCZVMmvk__+l*<+$33f9NJf+ZRK;Ie!}%Ewv>hVV-yo}3B=(dW#5IkpF2Y^0Kku>5 zZxxT%TX;)=Sp+ff^XZ?-lM`>8!KF5OyncrY9r+B?!dS_MJR|ej&O=%~nGsnKL~zvG zfGIIqTM`6LcP%gQCqlQI_8iQyT~0Ko`P@KyrsP-pjiZ4IpTu;Mdkxfxno66Os;QbsYbG2Sk1=d97q6IW{KnZ@TLjtBa5ETc)4(HH_TbN zD=E_^=)GZ#lP{gN=WNMVqTi;$u0smWwkHkz!Fm|;)HxT*dkIXEaW1`-Os-9;F^i{5 zR4;8pme(@vgMruReYn`{#tOW^I~Ja5mxim!_c10x(}_kQiTdg>l8 zg(F@fCCX%mJRrU7Ae_q%V)T$h9d=>1P_2egd5Qt`PkU$ih-3I9FhC0CgLL(@1@wZpVw#PLK+d7l;DOa*dz3iJ3XXxC28m}b7M+N z$uFt2>+l{Mtv_%VZjqR z`e~p51o^F#`HSV+5wf4-DnPM=`ujcFf8{POtJ9kps^@gNi)9|s!Oez!|Uj>XYK zjyc5V#N^>;*A8sqDVI+QR4`_d{#l~Rl#lJi`(eQ{v^%G?Hpw8UdgFc-i7NNzPor|h zV*neKYI76Q?@muZax2)MUI8Hv>q+QR@+NHr6^zf5UWSOkpOqTxBRgzyR+KPrKYl!5!p_AOgNm!l zaf>{nqLkze6g|PRTYu<2HoX!u)>G^uw;j%6@}GYN*^8!<-)QVdBBbe?Pa6j7WKO_x zm|o%Vkb48)4vYF;{3Gd$tp%b)`hP@;{|zw3Lz&#sQ|gYbbACpcQ%^5r-gjw2v`Z3i zF@HD;sIY%{|H3cVCqh9Oe>F?BMBSK`+%|f3$jnB#DvCV^Z@2WnL2i*j9Ui@6o2wb` z4`@|!(RbqJ}$Kt9HD$W`l-{W zWsDkJYvd}uWL=*&fo0&chTVT=f0>fVUku#)5pc^1ejh2ov0oW5q6a4eXnmKT{%ZIe zzoQ^UH61JdhR>jCV7IDR2oUzq2h$cr3#I=;4hkV+++pugm)+W;r;5`p?t;Kx4Q4#*_shW^?Cx$I>g^qE{*WKx|I{c@Lq+qddULXNHrU1~$%colv{9@hR_donbzs+N%E>9Qk=AppQo((~)fuJNp-8O$d++ z&~FEJ|Mn<6AROouWz-9iI{t^Lg z*wZ67|9p|QY{12c-0QNL`1cLL@O=Pnlnn)he>{xhqsnEjZ#8nU{O5f7eQOVF&?fX= z_sL&gjRUM1hgU2B&ovE*5z; z`v@)s7V&;?i7Av{^n^hxH>l>|ym2T^dfaA=kVU6((qV(R)T#4B{6T?bz47Ykj&?Mc zNj@|kyS#g**~F~ju;LP2N2%%c&#(6<^fNo&^|bN^PW=l9GrQ&fdyKo6em(;3-j-Xr zGV>A32^?U)--zWt^2OtfL96!ZV(}C62}vHy@A-QhaJD5^AVJgx0y!gxi9V)uGoW{+ z2bc>W_{q9nLQ4OyWvXZD@c|8{P?Hc(A<776JDIN6MiFJ=i@yMTf<@9pguHTE!Y2s%0teAyV8Ym%UV}vSs9&J1~0P z%>kdV6u@(%q}Pr|N`~!i5H#{vgkqep~mrH*L4)3ifmWG;^`nwO?Sul!Wh;|V*q$ibDGCwI+)q5n5iIJb#b1x)<0!7pv zNX4S&q_{xMeEC(-)6+mRu=^ZqPSumS?sAu{rv~sKGSc`=74UjujXX0Mj; zy&Ol6{ul?%+htx}L9ScP&rL@1Q`syu;i)e)US6V+WV|{-M(Y#vAkD7|hOQWzt=t0A z{Kf#vw;bdHylhtJxyZBCg8tloaj3Lr{6Llx4}r4LcoZAGN;G?bdNdk6%pNgj01nPA zB<0z!OfUubc3@TqsQvqJcC<)xpgdYgHDUP`kACPRN2Z^R)oR8Rq<-Sm@??`#6>E-> z%}rHFZEun_VlA*dUE&(Mf}Ji4g+<|TB6^I zYL05C204(UTBmECQ!h0Y2boF_6K~|-mh$rI`zeNqWIU_Op$I@)v-Z{}>-o-X9jiIU zjPPhM3AdwNFB&nd45UKE0fJ-8UuO2CEs%s)Uz*P<E&wdp5#6gg zwE~_<*%|yysWN}QpmnM&i0|0jZu#}6v)R6bwF9`pm><&=2+j3@=w4>GHqew?Q<`;r;=1 z_K1p6j6rNoH}Z3)8qOx;f%KOL{FWsEk?+(z9}eGd9pT8)tf8}4iE~#zKXqEmNHZ_s zvI!d}zBrqre&I6Al`=E~V%A!>6Ej~7*W=ygyG(1N#YWy|yWbpFM~ias7}dX?pW2i{ zGZltZiw$3b+K|G?Cj@H4xdoK{5iH*(swL1>ss%C>GIWM2_dLxH7v7^4P1vL70Q99h zWp8gdX+ox0wS=yM`I#BqT7ukx*X3xQ1|+n-OH4<>TNa}BG(^v+Ju&wOer6N08ZaZpzyqt?ubIvOGJ62vT^R+(M4Roc1Sr^UfvvpK3I zpQ9gX>?qSGN3iH-XgDB>82wGgOA|0)+zv)7bWz2uRZHxvqgf@qJ6$>Ji{KE2((#QY zGlxmLioLb1k6ES12X!bak&g=or888_$;HD1is#~g_Pi!hJywk$I)rkhMPqU4@c3; zpl+i=PLi7mBMrmU7F|RXhlM9b_IlmLYo$-gb*r6>tA@}l#eAR@IP$%oziQeJeU$a# zpg~+f{%Y>(^jof+EMKZK=|Ro^+tr25^fYIRxcQp`I zgd~O2kB^^mXlvbYKYnkw^tElu>EzkTx%XD7$s!*CemZ0|EAQMWhMU9ABRCIQRr+qC zz}f!zXuFeVj;Zws zUXYWEPxPfcQ)_HhpiTY)Xjs?Sjr!HUl{FZtK_>xmvDK3re5sdT@T@{y={e8N4wm=7 zTpMm32YG=frdu;?TeS$8)a3w{z1Jc=h zoE2w&Ejy^gx3Y(sZ;i%^kyBS5olTmwMQ27U|BoAb=@|9Y35Z;WWX6A;V2B!TR>OU~ zEM+mA%kYg=24Z?EB^ikdbNSe8*Y;#3%Rqgv=MpSyY`(OAgvrx-s(^Dh?e)4_i@6DU z09=4mr>ty;jb~=fz8l#B_0?OsWHnBCDzkJa2kz@2i@LN#_U%-{0ludi4Bt-8H`#`H z?l0Zn7>#k*w{k^&0Q@7_fGC0{DBh91n2q41%QuYu?y_E$)gerEDo9P`uqQ5!6N2vg z(W@q04iXu`aZ!T77bSIM?qEDfkB?X36QB8sV&^xAM{I9Z=ZgtO(*@Zwn6zn@ndhiG zrpGI+9^Qb|!e!E@t1um>!TBh*Xw$hi zaZ11@9tWX^=}>kGSTy)b$SE%a|JeP}lTQHoc7F!*-Ik+*RYIN+Ics{IbK?qB>Or>k zbA}g~vfoGm3+X_;T0`AZ&`3!mSRsCQ!X|Ds4rg%`Y@Bv@0LTJmxwv41n-Ge_a_Z>D z-2HN9QGqRH^XTYBM-Dm`CjIJ2K>_d9oRmEvL=dxXLRTl#awe@Mq^sr^2+X>pa`u-E zq{|@@JSeBFtdc!&63B(iG0u2}NnFiVi>v+NrYuKmNalMo=Tk8btZ#_28q*{<=kD$x z+okWa9CO`eLgF@$jL4|>D*8Ox)~YsI#y&EMjkkTu8{1v>L+p=h0b15nX-8=12r-CU zEb7=;mjsq$opbYR!};|I0J-wU)aY<`!a&`H{N*^Sp6nOkD5bR|3K&f{gqo94O4-(4 zW(xTFEBZDHL8^~wO}6c+?7YeC-`x@Mw?EQhTmj*`QQ z?I%%DQdX!u?H7o0LNa>dM%_hYx6?qe5$SlTSs5lN_t5d)>db=ccBUU=U3F1b{&vod z-Rx%pQER!q5=>?r`w3i0FXH%CkGF@lY&7hGk)CL*)}3>=v$iVa<3Z4;2lCb@)vAoC z&Je5B6L!O)H{B%y{9@Vv5lDOJUD7L)0b!agn0f(9GsBRH-8VN;<6Pz-48#;|$DSOdeKe1-_oGJ5Xu8CDnrlvt65-o2*Qq z(3@epmEXx|vPf-LYx9Nvl7V=za1o~FJmyV)6N_7>|6>{ddBi+5A}qm6dD2lH>jxcD zgLwKpOUW`}RR$!z#EaPGAULm_2U%*hgL>Wx;k(jDE_4JZcr}MUQW@~1pVFH;+F7(S zTUP6Ip@-q#$tZkggJraB0=+P-L(7WCO*ZC@G4NCkARe|3(K3-84DqU={Wy5e79K)9 zu+K4P2Gm~IUqMWHq7>BN>ch3JI2`IP1_h!b)Lg62_B+j519`37O=63L*bx$~sk0#B z%-66MCw8cg;yhW5dpPEC&3mE=j@}ADIXv6=WbAf~ecaEPGg-Q=e(Dh||0+ANJip`v z+MbK|z=4|I)W+NJCa<;hL}80L3_#{FO=DFTM?Co4_?+1IuG*AK#Wi#d;3lp&V7Mb_ zl;w~i4dSV;JZXH-L`e%l(E0G)zJ@|`;&{l#6(+neoi(M1>8qEvk4)l5zPQb%SD@bPV^rgFCn8ULyzY zt#o-e#r_9p0NcN1XH)twYzp-qz@F}68~sLKe_>Z`l9wRTvZ+n>Z|C9XmB3vjbQ)IUr=8Ha<-*hihseuZh{We7Dz_>OVblHY#L=@-@P;Hm4S zX5^7ml_KsxU+8E2*oKXiflq^&A`PW{!-@LmovwHsB7uZ_5kOd#L2UR4Ts}JHkE6OQ zZqh*#^z-p4h`3wy#GpqRAhVs}Owtt51%It3d5;FtL7xR^8+r&Q|1whj3ZM_9jz+ou z>~d@;@I5~{^enOb+4eCNv>A2u_WWfu+Ca5{Z?%nB&|lhE0f-Bcce4-tIR?LhP?1++$W0C5#5McBKG z@0=n!M9Qef4Hzb>N82gycr1s0 zVe>uj-mJ#~N;3VE6CRulXjUPxzR_>i9rzEwI}@`mt=PP-H0-0hM1)IBowSvM?o9#$ zH#m^JuOs>Wvs_3@(2ckk_<9%TjbQTMpjYRt`#~TZ%2{)W28mMT{WX;wKyPp(kK?k* z05~VmB?0J&2)2g4_&e*NTeoP4<#cz$7K8DsTRsm*as*?%jyJYc8~>@Tv}uT{VS z4j0r@aWGU0#^Hyn ziCjwoGT?w?eopTXWIm065O=X|>kCkl@k%2;8Hf8-$33u{7)`Vf*4|Mh$?!D-48BV) z?JyQ%_G^MJyTw$;g(nk%@+Cd|c$X@-^4Zzi*Mv`qafdeCe!xT=1JocryA=g%kBH-Z zz?1)0yXyt!K~}{I&Do2qgFP{_=Daz1Z=S7Y&}9K0PHrNdw$|Gt5qK6vEe0N;J|`3j0P?e9vhEDeD+1@~Rd$3|+GPQV zogfm4%99YVKZiHai1a?~6~fwCJI_+!AI5j6+o zfuZsDXiuc@qyPoB2=F*Y?S}Ut1H0hx^f(*}r$!gG;&cMp#e3>8pwOidKvn~cl{EW@ zcyyqYtrW0^N1QiY7x`{?e!5?Eat4&uEF9pj0cYEtaf$#^1l-@8<Uf!-vxWk{+qqMM|RT?rDhPFBzv zgF4o9rLQ5%fA^F-IM3;1w$~j>5S4anrl*I5>rDBdSpP+cIRrByZC=F@yIl74|+wfn3&~*sbVrd}f%o z-qtGy-em)j9GFIRBd^H&kr-hN6c|hL0^U}dArNIsu?ShwG7w}I3)p3^bil;!-c!o}MKft%i2qb}5*aQ_>mXZf`RvIM= zwJsHa*yU@!6uX}_+ovpn{1iRo&ZRoM`pKOolRQ^*EPfY141B(G#|TUk#}pI! zP_|6Xnw_3=xB9(_)aEjzZzpB3@ZF6r&T6IUP9?1XTMnuc6QzQcL8cE`tS4Ko{OWD; zb#9nym9_!2xYgSo>-&JVs#^c{NaJI2bexu3q#^M1Ljbr{pDGz?ahb&c2E#!!oi zIE(b8os28u!VmE1To0$Q>^EwL)t3945g>jo0LMGeHc)t~XjGLJ1DiiO)0}12^O?$i z-0Td*u>1_}=hZ_6x;B7?A7oTMpHrp@c04S8k`=F2!1w3@37=)8ye1^ETyOuK>ZVWs z*@{2LBA-t3E9I(B0Xs_WP?weA$al8;&_Ozc-<^+`MW;HHR=xqM?R?NA5uR&zAj~oG zm1q53?F~$0P(xI;A*ObAJP7dIl~h_PTdfp?uu8vOyh2gfg>c8GM$_fskyfM(8FYXW zuzjR^r@#xdjO2F@CBC7QD56a;=7arMDy{1%TpdGRb{@N{0RkY*M;_ z5LPIc;@i@_^~thr{BX-ATOxc!x*z%qRIO2Sz+U*hfK8D&?eHuId~9Gr$m2a{P#dyw z1yWJ|(GQJ5RS4iH=a%nX9GldZ7=8O%GMmTbq4`wv%|MX>y;4AOd`Fhz_Q6Kip%=Z3 z#E>vW62=m;ER!+f|4{edQB8j9_n@Mnf{2QMf{2YSAW|Y7K~aKqLN6k{hTb8fA}S(C zRXWlWdMBYMC}&O<7)1;`Finw z&xS#F4#^q6BYRJhoZ+#A!a_3z^m^v&l=-}x?szF&_l!Q5N~eeKo?bH*pU({0J#q!` zf)$IpBH4B_lALpCjL|MuW5}R=e4g@nQ#oSCDsB+SWeY(Gc@wi-JwGwviSKD!^gm|r z5NU%91D#2?T$vnfmO7RD#K!LWGSKhE4=s~)pa#*(k|LkrM&*}o?G({91pWcrq<2oQ zxF2K_jYnuy@Skz-`PFk2W94$YxNeI0Y-JjF+qIQ@KZY4&vvvA?4`rH-f6-Yog!+dq zVM%m&ODx2JpyuCtcu|=HM*)SQKDaK0ZOMb^o4$rxIu6bu)j2J+ONWP84^tq>h0#re znhh<}od<0CcWZ3!jJ-5od%hPxQF;Ml|JHSpk%@Af7wH7{)4W)VEZhFGyj${IDr!?5 zJNQ8Zk0~DXmELv;On&x-Asy7KuEe-*vmA)mF)pfESDUGlKno>&bZ1`SCPETjp!qWO zrh@ETCB)#>p5*&d9R?t>c`NNCJFH<(BsB?wJ|t*aeAhO$8xVB+{0u1x`&{_=tLR|9 zaV*Xi+anBORXm(IJpG>TF!q{?4@UBWZ*d^(HV3#QqS~Na{{kq(y0PZsNa- zX(7*cWtgD*2w+K2yL&u7AH$H#h+N=_ZD20!hfL9+3;^@_`@xzTTbv=!IQ0A|ebnI*{ zXh|_xdFa%_nLEqsKs3AFMzDR%UA;PHK?+r84k0VGF6v~Jmnl!~$xiq%z;0z3v|v&p zLZCz9bU0LUtXDCYL33M^W0qD2CRbvsGtzQpyhRax^K!%AT7cBpQK^HtWtkg_(kQO$ z)c)&S5n)sj8vT>tP4;5H*pv=|#bo#DRYD%=D*Kw9N|QFzq49si9;%;IY}sKABFHjO zXFFEPAS1g?fc*(V-R>BIGNz|W%UqGhxGCax<*SWVZ~Ci&e*a>)@{5WqPF_nuvMtfZ zCOpZLb?8o817)|s#QNZLVu*vYmgnandvl;A(jKWUsAD|XGKmq(h{+s`9pNef3OQPA zcE72Xk?$+26mXWu0S*0J98gq>Czr>_R=0H)cB?h=9zb4#Yn%RS|TF`$Ya+ zN+eJb*ng{d%0?aD6$;tY8=Rq)YWWO`1UZ}D8~gKR1g%DV=xRdZ?W=#?yAmwtYQ@8 z>!t&O*&BRLc;y@zM5 znAp6ed^_a1-}18i_vCY#9P?K~9m&DX6MUlucDhTEqjO)C)`7fL{_~fCl33jG26a4E zzpG1enAtiBjGYqET20-4zY&)wZQ5Vxdblll(sxz*ahvA_!i{>VThxl(<=(J$%d3mx zo@<~Tzv-}k&PuiC!;c)V$#;7CDk-esmRt#IDxi~|jmuPPL|tCrWPA`1MwSK;?O=N{ zqFm${AX7}hH`Xb(=ETPFRi7V=0YVX!cT4xtWy*-+mVD!hA)Blhp+;U-#Ji}pv(>GR z5~fky2@`+%5Jz_@kDleoy6-&ATV&Ps1LIu~&aRC1yeveMrInm|MiC7esBq4siWQUq zkb@jB&{k9%_k_@Vo%@w`vLc-i={Q&^Qnz1kWaaJct*R7zxr)@-x&35ZDVXilef^m{%6_8K@3+d4MmsrZs5g`d@bbOJE7Od zYz7h}h(ph(cfQG}|IK0Wy0UsE}@wHnSDBPCCi2USaanT31Wvi}YA zHqmlrR$5chiTTQW@WWcBiF1&+J4`Dtyk}M_MItIspy`@sTeQrXPler476}Xhwm{48 zTkMIuleL$tW{|qGYt0xmG;&hrDEwPNZ*%s@68$&wB$0f<#+2$7MI)owGYlg%O5o%g zzwqPzU;N8u;GkvTsM<`lE%kD}#X`HkeB7q{WkKLUva+yFCseuzI{dK$Xrsz5rA0~+ z?;Z00M80ACbqR-jATd{c@eWM&#u#m1%|R%Ntxm`%z4-axG)Afg>2sMyO*dDM_1m_@ z+<2wQm31r23xA&J=FA(qU2n;mjfJ>m;tw%nj~9|Er%wIN1O3C0#Yv;7B5w2jO0*p! zo7Dpxjc+20*PqAl-{1KMUP~1NM3sv>bmsJbh=;#EB($1De-O5l-GBX5X*4O*!9C;o zso#j-{y+AG{u)#fKrNPrd6p*o>y;cL<7D{uK_GAz(O+m*bVKKR;mmDuSC%y|Kp_F3by{|@dD_e|FObYAkPLe?=j-w>V8GVk2i{vilc zb3V~X?HX5kyXS-OhBUkTePVww}B`gOtwn$ z?h=~jM~w1(brIrdr!MISmkqu5FjJFpfpPino9QM}Zif7YTkPq-C&ZpQ0n3{+>FmMU*CRw8=kg0d2=&oT{T%I>&eI?_&{+Tkdat| z{14F#B8kzc4WQBmQm5AGhVRC|-_?#-s&=bWzxB-mqsEwA-k1A(1zdF(Q1gC!Q#O_H(VhJ1;O zmJDGo^S!ssm`|6yhlEew_cUNz&6X+6Fc)f=#o~C+T}YV9|SBGy0f~X#0V9#(jdES zOs3~GU31*BtSRF7b*@ohB*NC@dh%FZ;3Z!p6xwJ-09&lk3=IYFcfvusdMR+l=>dyH zg(xsY55f;D!`XTAW8q6yAe^xz5wYJ~|JJ*i6yI$V^kf4%U*Ra@^vfy{YmG z84@6_x;S1eg~UA`coz=Z?Q{d4)@x}Rm{0pi{dLVnC`f!!jMlH&-*Mkuy?<>X_yACa z`kkGT&U565-fXi{-$6qgT)KZGHv{q2yMd9S=_gZ7k##`YX8|fw&`6@{2ksak%CQBv zn-*}BdP7$-LxA+5aKM#IuPYrvP_;8{j_J|N8MX!T)311w@#mgylBdIukRRpYH}U9{Psyf@ zA4$z{lDui^+dEv94zAKOQ15=EI7s?=r3d_Fj~xdixM1JUky-A6Nu6J)o`zY=(vcdv zMIX(3~eoRMlIt+yE-A z0cQ7&An!eKkCl8t&ec}++7FfvLL<5C)1Y*&M1?v2L0ct=@#JeGB zak9p9T}jMwJQY>y1!PlUCnH>jFm8*Ax1=?aQk5%QC5u6CrFTQDWEqy_fqlA}hj*H4 zx-Zy(`y)zWD$u2Vzz*XcRd^c5m%UhQCRb6 zKV6+T%=ftI?RlPI#k_Yd| zNLB-~GzX&x#{K5{M~*n#X0N z3f|YFktS> z2n0IbUf;7>5QdgmtotAs{PCSx0XRbJW;;uAkx>5+KT0}8Izq28r${CbmpjHvtVoZu z;d#U@hqp;0TLV8&3-?QiUB_%#ZuVuqdXno8S$l42RaBA< zO7(1wqGV9#zPw@F^&doT5|yOKba&N8Nr zHNwBEdCgkIsi_^I9~s8AEf^(#MssV0QKmV>-5xlOdXlhQa^2n6 z8^I@^gOaxT@tsvOrJj7r^}g&=yiYGl1p>HG@0KnbHGi^g{ZZuf%_`yRn*^uNugSDxmu&e@e zXU=j2;JKhx^)7F{@jhQbK2|eGxM)uD&r6`?D6tm#v>&rEEE0+RTzqEXooSP_yfH|Y zFu&%vAIse>Ee{b?Prp$L%zI7YR(PK8Upp{OS86jEy8v~R;*BZH%P>v z0>pP$LT{?5rM;42;He8#Ch2N*76)JpAyVnF$XC3T`RU%aQ%%7j<;2fjc6Ty*c&D@n9{PIbDHGCWzf0UdgOedXjO@u8(^F*h8@=fK1|2AtD9C(L<6H9$$t&S$Mr z*&Z>6l4RC|g)!W%I@qUK8u5B)99>Hb_hSg)_gZ&oWVMqy6(M-;P943AkJm&JlULq> z*E4?CIUmeaRI`3hnEjH}fzNa5^9})2N@u+nwpM9{ZTmbhtMv+CzF+o|x;1l3S^Q?k zC%NXKie_*+9_h`|JwP87bsf+3LnQLr2)Dh<>vclx|upc4pqV9n2y*(|1 zXW+=1n*n`>68|GajLjYROBVyn4$p3;+}<3%;*OLIG(?k{QNta?ZHu>UaC%+#?<6JJ z%%&~k+$hfpu|&u;s}LBz8$Ghd5y`s(9dhQW7gyt-Yr}KtE|*y234v+D`IkpVw&$P0 zlR(_lEdqt+w03ixh=RfU@1bQ5@e%_kqMy_l!}kX^*>bTauM~&k0srMq@B^DrpDG)r z4mipa!*{$p)+>jf&AQ68z1#U@1baf#r`Az``7^Tb`ZnD$G#AhH%|B!IT}h&3T~yCI zeA1H&OBW%!Xqk{YT*XoVvT*uGm08@!-YtjSRMD+?9A33jJ55r6)#uRLG9_P>Pd^^P zixH2KI~-O6Jd^>9z`;7gM75XQlp66|-g*M`-UgRV%m>7lB|Ta_6@g)+u5F2N1Ic}6 z8Mqh>TwN{PQ{rx_c+EA2WGmsC+!jl4;{!GMW5L2^O@YFGwQ(MFDo2i0Kd$mBEj5g; zZ)H}k8i)iWx4W?0kS%6nGdjmPI^EF@1WAAQyRiKljI`l5WYQh`fbe^a*yV2)b+dj9 z8TNS9lgmuxyn2+7#z7euigikAS>S;mp26Ym|lQ}kWU0R z6oTyE(#?6)wO3*_N|KRuBd!cQx>JU5F?ai=QrMH8az{J&iHnv@=&atGdBi15Z^;-F z$E*czXg>TAbxTJJM$%wuuuT0M5ERpqn*mFpGi0M?PxvbZHM-OH{YPo}y33U+cZpb^ zhXCn0(mr9|d@t#GNn|b0!+ee)gw? z-SH&gmiGXSSHOL)^ZB5dd%Y$H=f>J_>Xu>7KCp{R?X5NlV)l0oH+%I)%Ez8lrWVh1 zIa3EO;4oFx7jAX(ViuO?@4_959UHQ0k(zY(c6`ECj=?LA$T zz1>TIMDP@dgm0J&0o!&P1M)%VL2;&+(sZyi=S7RR!nHi18j)dI$r%UM+WL>{Cc4@A zRMbLKrXN-%%*fK^$;h)5&X4E{9#uR5)~p29O~OYNx3OAS?wm%?J)}pc($s4!`HI}Zr`jytsOdI>-1hZ85m zjTV~uOe`!326AuX#%t3FQXXISbY=V5lyzrbR9bbcJgsonde1gBQ0$qpw>6v88@C$0XE6R&?{EYeTVy(TwqBf4j4f>kyBclVL%6VJ-ta~En!|{+ z)m%4u?zj%I_v54cb*pM7-(sI0!GT&}c0Lc`41er1GMYL55bpIjFWlU*ZUmohGutV| ztD=^lp`s|;U!3{)VdR71P)LBEfMp{E?SwsSVsWOlM7c$no$9xr+8_SHmPIVu&W**LCV%^^GDmiqyQs6sipii@{^!m_O@%eT~@e=ES#>Fn0 z;QQUYm2m+&Nk<{E{Uva7K2r-v8~UPaPuLngXjDtdfdKl`2&Ic5rMw19&V!ck=L6 zQoj;u^s(TZaL)QS@?nj5u;Md6ec=WGpp9JvXf zdr1_%!^!v~)bs6a5M1|Q)ho4oF)|$Bfl)ct(w_#=6g>qyY;`s9wIbr`8#$ zQl@B|8KU)StYjW;8CT=GbIMb_J!3mZ<5i|}?z}Aa1|2jxfu~eK(f>>JqGGrsyVi&3 zd?T-YwXbQ04V8T1D`c!K5}6K0@LK#O;2><`)qpN6-wS`jZ7T|Tq29dRmEK;}-8RUl zR|6Jzn7WSLKwgKP&x306?0h_yN2Z;3pHVpXUf$Q8&_roYp}frYLCy2s#f?1RNu<$h z*2IIMOkKfz+KJ5r6@2J5`Vnb)tPIi3y}x*tr2^ZbGH|@4;exOVdP)w4J6a#c8q_~+ zL{Yl5t#7ka%(}TX!BQ>~`1YctJ-lZ9No>D?^3@Q@wFKghw4#@9BP)+B;C^^jbZ;U` zBz9NCmQGkq=W-CIrQjviz9!S>&)*!C687%B1$-9_`VWLWR`P_m!i|P#!#kHj5bIKP z3s1W==O&x|2Z{YY;?gS>zQ{+Pk2W?;8yML#n+{ zssuh*`hkeqJGMMjp@2&)RFGUc#!d8}MkEi@@P_8!tc{W$@C$474~uV;xn=YDvu95( z&cNR29k<8`-JQwNX95GEw>`t{;fPEnwgRFpA>qZR65h~F!c%s*^uy(tg~WTC%VFI- zuA?!-%Rw8GWr+KI%PGYs16x)h1xAC-+?|^x2$n$$2Brz!8VI6zJ4Y8EMD!e4!UP1D z;=fbziF*!9DX1TVMltzpbkwewHm|z9X%=cN@$W<>cm8G&h?Z&p+sQyqEaMx<^t6zCxS!KVIf*#xB21DEL%@Rg(*mrt0%BOYMzoKymzs0 zHkV3iYW94zSc5(jN4)rzs=cUUGv}R1C_STA4jXB5l@sPk|4x-{gPKVPm}du53O8iA=4NnG;fMPm+kDM z1@57~lt_IU<-ta$H1J2C&1Y~1gWBd^2i@hpFM_3jMnC(^|96Mr352YaPc=oZ1gGW< zkAbla7FJJcAu}X5)kZv>-wq96hhLjYh4!o6*8Ooj6(`H-+*+G?T;H24>lutHhespr z$`k1wAQKj6{`&*}+gC9J{Rq#m_bh(Xi~*@B3BNWzK&LFvIPNLxZ!G|j{Z@{D{3rh8 zAL%ye*Z7}p`|nr%{q;|@z^^fM?6~lo4+qgC7XS27{%Ojcmj1*IeobEa%x^@=K;!;J z;J;t{cduhK@{oU+mcGkBV%UG~9cauJOLN}7eca$Tm+i05ahlmz?(pILwe|JzkdR3e zgnW|K#$k z0Q)cvXbFlx|H$G?5|T9P?}Q^2t6uR&Z!nOcS`0uN0SrqRrKC~1W?{yBS*T-jx)p$ ze-PlG8@5YL_uVLL=sMWwg46lVy#XH7iB z{vSk`>wkVIF5f4`p*RdCEQI-)sSU{HsLk$iimZt^gkQqXor7h1R9*7hS_(3}>$0I! zf}V!!mhKva@T~zaa`!TON>7;)dq_y*_qVI7C%~BFl7ZriiLeY{kIq<|rctYKO1tGO z`sU~46X~}gE~RO-RHCCFL)`fsn1DyP*V=+2;1f^Ee0%bT1m=~OVk@8gQy9f9pSmqe zj@G`($L`Fa=U=B1xA*t%3wpF;c3hY5z>wN&E`E^^?ykkwIs z7)`8^(NIg<{v}#k)SYK+GZ{kfatkfmM|rJ#kp61Npcr@N_D}wBn}hunE|r^!^}+Lb zpce%4>)bU8YVkXBsK}kgvT#Ppt9RXpbsFLio`F?jPrRY}@L?QUsz)aGTbf39I(tCEEsiH zdK!Sq0uRL8?^>;d^3M7VmoAP7J^FMl_h5)G3KQBCm711wa&C94nNhI3Xm@wFyBa6W zqkUTwG)H=94U9TcLWWa_1Hzk`GFiGkf%x9RBi+@$0z8Jra_|}ng~V1r*x1-$@mgRo zJcxnez?oF0!4fam=O}ccr*_iD7g_}1t%Y#qCH9NiD|nWq~^ShTv* zr#J8DR!*|xx(XBS69v<#BW|3AUTXLOAJIZ-ZdOVI|Hn(BD@i`Non6={lkSDL27{P| ztcNS#Qc>je?>}_&v9;AlHvr3o8W2R!vby*0wvj9S*(m?_NcqGHPK;X~(!3>;Ew!oN z9?TXgA3$ER`>Wmk!W$qi1dSIf(=3@Y6WV^}NqNF5gOW~RJ}X0RwwcdJ3a(k2%~RFp zy>Yw?WKRgBA%cGRZfr9gbZ37UDL2z@RKVT{W!xMO&y|@?V_>)1d2?pzycl71q6RfG za%q!8#k%|EmjH>z#awzskA-usp!<>&h?S5jI|w7^x}sc#ESYCZWZ=O2nirp?4R^sN z+Jo2u7z^t$sAj+E;ouU{5)9fTk?E!(VZY)XAi7J}#cj6}a?aXxP9m6WK-9z6W~9nM zzHuPqfl+7)puSNaP$rJOo%t(vgQXBwmBL2tv@jlD1%UPgI$I!Gp>~fFhWXd0^S(RK zuLzv$MlAsYIY%CR%nPC{RvQO!`KHh}mXOc=?ni?Qnd~Y*!%I zn@tKwEqXJq@m=5u_M5my#}#LU!<1EJzFth$D1ovwkl`E~T0k~s;Lav<%GaO<6yl%& zOEU9YJ4IZ~RJX@z&kCA4Xfbfu_2nBJNnp+!9jz4I z_AX|7xD`kh-AVMBsArx#C@aXVu{&=^WYRhQ_)br_a^*)b!FOiUOUPxRPrhnHji5jQ zrT^&SeM^IY!)nXEaI2E8CrcB~Y2#@T^B9Hn8>-N6g56zSYVTZ@MZ$#~COF5ea7O7T zi@g^#ZB!Aq&lX?NN@;;M^-zL*R&=F7woIc;>J`~x*cLix$xC<0HP+B$OrC*P;$XK1 zXDC-)Es4&(d!{Tgj9mJHkn$1ML8C_DAEkQ{+2h}YMGScvLi=Y=O2#++x6OgRx%g#K4SFv@kbOC zYVX$C{W&tg!|fnUO0RN@UC7cQoT{f&j7{K2)BB&Hsc9MsRt+e-y}O~klG=YOlaS%j z87^6I@6ky0wZbM|Z)RmuT8xMbX1>H9M_(2Z0dDJwajX9>6oeYSgR%0K*_s| z7Qf2=C$;YHJ#Uf{sHpTEnJRu`%e*{KI=5S61b#ly!Sh@p17vzyLvp;oGueuQ&&)3R z@$lzg2-*(0U@k-xUD>;!|CAknmm-Bq;4|m5MQDG;>!IA>r#OAJo4op;^5Uzc0V8Y#tsF0je9$D_8Cm6gYCJr9NQ~?D*T$^xsRn9C*T1H{h(l+9~g|@Be4k z%^$nTXfi0f0##goet<}8d7B*+YvDg_I)DDZ{ujj>nAdUPH#g<<3P{s$17JC4I^c7}bc)A3fINeNn%3XbqdlJlCT|0LDYp9PO-*SNa#0ovvp$Li8 zN)Y#3@{!u#3IfiIkDsIu)>{$4LufZtt`3w071^F3brNKLoU6_@5jp-#&7J!Y{DdPl z?3h%e4-uOxC=D+}QzS05_&zoZ2eZK{RzGUD8{D*RPdX7JBCs)+(B9kuoQzq(0pZfj zL#O|;7@XL^W}gh;;k%HK5HPsOLde!5Xzd4e`6E-Rq}|QvT~pVK3B^~6+v;z=YATLz9&uuWXEg6aem&e)J(#vD6M-O zm)ni5y$H-)vg>h~>%IUf4N(31noh&gk}s0m2uekt-TA(wYbv@y3wTR35+!N8T+W<0 z@d_}9!Jv9@AMPw+@$1V(!r&SOj{}A-!pp}*0ZO^Ua7hOr2BYuSzk1CbQ^Cf{YPGks zDC)KG+{f3~bv`FjquBBe#SR|^SM<Y{h$_pHZ2j zB`zSpD%9J60UrYwEA*}z&L*#{*bNjBp9~C-+{MqkVk@^(aOLnSA$1%Ym$AG3?3Pc` zjYGhjk_f7u*~)6YvVAU)2aX&XC1YhG^y+cXgB(L(#D1ptgOn%<8v4og!8T3EI5M(b z0|ZqJfFY?;d$Ym}jQv~gLykpM@tWCvnLBu!@@fqLO1ystB~PT&!AckyCka}<+~~LE zyfr=~ouJ9lUziUJr8W(l91IshJcUsYGP-9Xq$+#cDA>(Jhg>DH33zR%AGYj0uJAL& z=+wP%bsotvWKPb{&*Jn~BV-I9?>vjexkGw9G=P^A+Fxcl{-sUGvx!O+Ofvvu#AFT7 z#k~?ajOErWHWJ=1I6sXTEe;65*6CfH|pvWh-6AOo|TI9vy-eG|tgXf<+lbr?8+ z2vsqFk{rVebd5cDEQ7j=$|GnJz|53bY+D-^UvN6hxGvVX;BTp>xYDUF=9{8D?Oc9FU7 zJTmCT$we>T_uHO9GWV6h8zbXY3}%=M4Y@~hyLPXfxsn^kUP1Dw^V|`0S$Pjqe2{H5 z+Uc8%v7FZ@{oE7aQM;++R9ZGYA+bQ@U<1m1qZi7C`udgCdu};;YfE7Llr(o(>Mf5z@2kZP68!>D_RjqSxFgeJ=I%a#S@G2kMwgA(x*w^vmj` z0%uf_nWF?Ts&7FR%1h7I?+%b>qEF@BU!l8@wZ3{V6TUlwCa_}fDLtQV3a`Nn8>8;& zfeHaA4ioIsqu}pHOqd2xsSL^X=0avuNYdfm<6%GTBeaJAFg{z!h`-2h{DklvW{?WSRQo03&z-Y z#Jl&p(cP!#0G>Gg9#pieGvMZj9-B<4k)gxC)OL2hE=G1ub%J#GH_Yjh3}Qoo1d1eNIqBey$m0&c9HIKggS+0U$VFFWpp=|*&Opv8=%On?I9`?ffv;@F_ z6%cG>&RH%d#15w zgSUh+Y=aO^;AlmvXCU=D&0EN>4?ZW(bcFNXEo?#CWyQDfd(yC?TtFpK%d=V}Nq?jN z>}?y63Ec$>%I4wY7Lh;{uC{t0If4XgJ&eTr@9%yM;?)5#VbUzg6vv|i9TwnR90QL* zV?&=LwA9#jF3qrUWY2GH<6d<9*9KM&UP(#T{EF_4l$18Eo1ct4clTQ7&5e~lKb_tb zgxU+++v*RQ1qy7IqEl1v5~50jgs7e`h@l=An$rNNn`2z3w+{*2a`x@?(zZ04U|%kX z@OeV6VkOm#9ubZEc|NAURPGT&~0E;ldyk z2iLqE7Jmi{lY*r8d8zNu4vf9cUySD7HA3O*l)gTXsTQV{`{ttqzw84AB#beH4rfm- z8wo45RjN^IhVSgcxU@MMB&i<$#-6b906?Q_Y`>l=0C`>qKz{YczmVwPzy9wB zN8(3*UI)^*{aAuOx}_{o*Yn>+t5;J<%O-t>QnQn{+qWUNfq^$XxRd{i88 zziX#o+y8EPrb$Tj>@Pb40MP$yB>Ml-Vyg*D9l8JZqSoqoK#?bX+`pmye^*PVSM-!z7O`L; zSv{o)I9E2JGzWkYdN!R>OFR*jIUqHHmsxx(_Qqu{5V-&XL@TLYE5(amlaewb zCnq;_xHM0kistS{!hFGFV6-ZJ{-106yR?fVLDpdRd0ncAx$Y$r31)P;5E$mE83peM zSiCS#iE`Q5&>+6!akw+)?oMnGTi;XsUUO_5Aj9V)v57u_4E26z-bOc9bhj7Pd|- z?;F@H6EUdlrdWtHKYxL>`+>AC9)CW>zP~oX3@dS@BZd8sGy%C_#wl2p zmky5sS_#xJy~9<3-Gycn!0Vz5P>Yu4XEUt#?iMG30Q^Z{VhoYxWc@MgEa84&;JFnK_alq5sEh;_$<&Msr#B~1ehv}j1CMeH#5E_%Z_=SV5scg z{+3yFZqqcAp6@~)kk42-Pud52qy7`~hg(4`$u=wyW!7Aj`*iv{zDweY%R~ zSW#ZO6>ALc)L;c*V8X)CEr^X3cf`N!{5kiLw!|7WyMdvx+(DT%5PIE+i~>0nDIk@= zz~6tL_a#ZLP8vH!RtXv_NME9P|5mr7_0NxCE_lypo2dD`pJyMBuywlsHm?0O-F%6O zcLdd2Qd7vfr+IF*!LWBXPY$!K2UGe#2g#krUX=in4?D@pS3YIs>s6Bs^h)yyn$&7s zPrNoysz0fz87Q$q{s7~)Lb+Xwd|zqi?cC$5^2w#-toQ))@(+Uv`mTJA-XVOsQ@Dz8 ztI!H&#BOX=YfnW5SgNYt2Z`YFJ$Xj50aVj9msLRCYZ~x=zm0GNx(R-MN2F>>9I=%v z7O7dK3IrVZI+|F}1!5*tEMhml9+UyGGux%M;I}_--}*t|wC?xND!i)l`ek2QXog&t z^K>uo-I(3a;sMW#)dOCq(Ve{ob)K$HIP3NcPM@pRBd*g2yp4+kYW5Aw4A3hmU*^)9 z%N)BV(>nNmAj%)u;T{B@y41DMuYliXXx4`*J@~fAtFdj~sH~gsP@=h4F7N!KGM$Wk zJ#C0w%-!@0FSYOftM#StfLdl+2YnEH<98L;xvk1-gPl?zA8~J@?f|3&BsX=#m;iIw zMeeWW^dv&Opxa*!V0@tLpRXoy%8^_Kfabl-zzbM?(Bibe2B+$>{PWuDUtO#ETMO`? zdxwv|JEFj%qY- zT?yZu^WxBjv?ZJzdM@qLr$fQ#SF80(qbetPT$4iY)wo_h4yi+PucU~Gj6@LZv0W{Qvon8JnqE#kDJWN#&C_h{%9g7%M- z!o9LdyXL4W(7*f|1_@a{#r)Hul?(f0O$5N2^#ACLXF>D_2+(hRVZUzqZ8Voxr7+F5 zjr#oZCJmQXb+P6Rqr4uQVdty=h47`G_^)JXV7fvNYTAZ3TNI2A6m=`y%EFT^$ub6F61|JBU=wSRnT z{Np7dfR_YXEk1a^QMk4=xVWoyL^(kc-mkMp04(|Ipb#xkI=_I@#~r2E;to03_P(ma zp`QO}#j|0syui_scM@uE6`jz3OPI=gf!cPqM8M*)+7EMhc#*^R;Y~M@mZs zZ}H+U7V{$BzxVh&ose)%bmxuUj(N+|e9#*PLG=^~mz1P_+1BL$xKTU+Wz-EML-~SSzh>!5&By^_{fU&YA4ulK9fZ1m@)Dk`3-wp zp$&;3MDFztRO|CrLoaru*xpP%2_>N}qWzN{GKhY$6`*yZHq<)P59vuDqq zV`9p>HKf*30V2}(&;dcGaOU-?EbUApx{Gfmq^wA@q3V8uj-J$Ggw9O6TdFu z|0fD5aHnDu{Xrxi3XIR~7pMBAa}5^IgBR5E6+N)!3l}Q%&YZ#Y6wl^7hiVx_AO2~J z1oyBA6hF5VdY?I-h!B_FdFCqrM-kA*vVg46|DTKFA4j^S!R`wHf)A82Ww!lzZg3e4 zwYgKZx+56OjFn<4$z96AX20s@Dbvsxt~{*e{zx7i?YcF7u}X0-qY@MIxL{li zZVt+WG`11ngi@051gJ4wu?DVrJ8|bv|MUp@qd29LT!e(GF8&w#JJ5lg`JSXZw1Up& znbBGvi*7YFi&7gv=%MyB0VUD}tbFQt{GyvF%zOMqzrUc_}z77u8^9}gA`}7fnR0^9S+%<7bMG+taIEw95PaDY3-GG8+TSa~Cg8?lgS;it)4u zZIY|k2<6C35XZ%Z*uQ-5?t+?(%ts#|AJRc(+V=cIu3lLWa}DA^6%wrn&q^4Apr|dGeE!@x(4L0)u&W+{K5mFz#u{wp>urBZvgNG3YaOfI3OM3R=y+!WFRDl z{s)({ZrNNOgV93zi(qT(x$Zn6%Tcib4E!w^^ox8;Bax?*_*MgC7XTHJ2g4)nKWYc6 z$0T}QChR}-yxYP{wK8_u5|2g?k^m|8n!C*xZi#c3sujK6SX2gyv6+5VOEEwL%tXj3 zGe_!`5%u%KhJZdQH}KNMk0I$a?uVPG_;&R`BM1hRR2$NPpJP^6Uph}CW~I0s4bFi1 z46^o0^!s2&OdWN&z7>9-Xk`6^U14K(L5q&rSCe%3r;SvlfJ{wJ*MKlw;O647IaFSK zrq6cg4jwD(HU8=h80b>TlsARj+ejq5@X&8@8T|yZ7OVmR@K_>a!Sqf>p=D+#8!fe} zxP*qV$q6+)|<>YcT(G6sVcP!zKbtipRZ_I48=iHkldR3w_#>VREWNAyvC9r1{5X`bYauxI;=2JgOBM3IA zA0Nc0$m1n_HUCq3Xyod15`5bdj44+LS|F>cr}CZwgHxKlkza)jN^9?9w4vWzZJXBp znY3s$rj2KG$0iXXNGwu~J{e(a^l>`DyPLVIYVd&sj(Aw>aD=c*Ar~q{%8zv_jz;pP zcJeiE&?(eXT9(>ZeHF77WMo)a7@*D2Vn2&u%hkYU!cABCbfW00 zN+B!kigK{pbZd^mOTm8yMBLX+BYw2{;tc!)&caaQ**SxfAi!Y+J@@g7EC#*YyI*-P z`5HUm6|zwNe-$a`PCEb~+xzjJffhLkw&w>ql^ThN0+NAF9TX}{;v+zxMg?dHBnt%O zVqrCs9#uz}EDpUpgAv@=W^WBIX)CiGPWdd0E^o`R&QO>h<2^m!aqS_<2AP)O^;Q6` zbc15Qy1+upv=L=F6yUCx&Qlek-QlPmJRE&l#cTGfe2k>Y-6j#K9m`}Ca%~mw8Yz$1 zZpK|2nJtD}lfW8Ey6_2yU4WX?y)fzoVHFbdQl{TNu)EFOlitFti*Z9iqxX%Himkeo z${vPLvWCEEenIk25BYb(q$`K600>*?`@FWUY%a1r!9L`&UNs$kuO28gH74XFgr@3@ zmv~J7XLU1$^t_RM;^fKpmuHqStXhoZPKeZIm>!pfH+_yC=3dFXhHG=hKedfx$)B|imqz(8Pev@{fEvP1 z96};&8xvaEB#8}Dmz=!?@rz=*@7{F*0h7c=yGro+Gang+nlQdWofOcT13%rxrGr2p zA7A~MNH3k?w575Dc_YML%2H)fX>1L-WvNe#@Jwl%)d-?yn8yT+THLBU)Yv6$HB#-Y zFl-yX43M}f)04rzqtIv~CUoK_h{}5(kOofOxt;u^LMSY+HKb;tmYT}vA6-$uTIn>! z8+Y%^pew7(9hHZj6I!l7ftfoMxiOpwe;?j+VA@o}J)jju&i1SeF=#T2xv4RW4$X2s zB{6^*-c{+NyLSdyT)ScXI#Xdh@p`2<^k1ELWgn6Z>YxnZ70KmoVmg;p8?ZKyLr}Z;w}Me_8_S3m)#}ko`__XUtaMphs2wj!f>^<7Mkuq1DXiE^ z;{w_tPTTH4dmW=GE{OhVjt_Sdhx0I_&BGMaibWEjC8IZ7x&QjrD`)RJIxkI4fYh&M zw@@8)KUBd;YlVIRuw;!pU_v~WXS-QxUoFmS_avoJoh;eLTj{m6*7 zEC&Yi@*q8MJFij1+=p)Cr&i-1B|@ZvkMgx)_+rqh>)`A z1BY*?|14MsNZvFWT*Cj>-j~Nyx$kY4od$Mk!j6sXk|{&VJf=a&Y*}V0LkOA2MJf%1 z3`NM0*<#5u&rL#-Se9j0+Z4-?dFK7z?Y+;b#d*(p&U2nW-p~8&zxMj9a1X!xcYm+z zdtKMpwa&?SlV5q4#!No}DzJz%icumPuiA|lDck-LjJo~5FzSB}M)3z7WQ$CYTJvGO zV9aa;8r^;}*~#|e9lakPU0B!m5eDF1Ow&h_egYz4|E55)nrL@Yw=b7bxl%LR_$3Ut zundVxr+m6D2C)**bZ(xfyGwi1bh4QYTZ?-!MXEr1+thx-Y|2#MRT`I$dfc(CD6KwuEMY))miK~%O( z&I++fWSVI-JejUI??2l*R)i)!H$70`iMmZiwJLns{oY8AjtaDh9R6v`#l!6|5Tiq$ zGfiF*vc3;{em!|+ZOtR!LghAG>EC&xMoB={GD=sWP)IYwceyjBbSQ2+>kg$Idsb30 z%X{J(nGiMfn>S}+NEVMMiJT*V+rHbb8KSlxiQ30}1o0F3R ziOPvUbfnvLTic1p`m4HjP4=aAxlnIkD)WFbE`rSQXH_Y8jvH>UvU)s>h&}KY)2j}m z7W-+3iz~h8eEw)!oz|U_y-ELqn#mc|Og;X`8MtP59!dd|?a07qcK*Y;9OevBGoWPp z_n;CKU#_@^tYgr6l4*A=r>3pR)XsS3`HalVf3-Bnw$HiIo@5PCW}@9;;%dARP){Rm zDYt7tcy=v=OP}wm@R(Fa zFgG3_jRFB#3j~eeOp?wQrGvB>J==a+ka9Z}LKv`DHc@=tuGyih6=U5x- zz|ACwz9p>wEZ%b^Hxh9**ge(}*Gh5Z9BUKTa;nnB#gpv7g5BNahD9rI9lvI+l+d!8 zQE2_~lf`_uiZCmx%IB$JN|3ODHH;YCpmlo3LZNjss(nU9&uxxi}iDeXi)*wUtE!M~S zbR~;B8Eg67T+~!2&_;yKqwvA5yK6$$aX!9Y3t>Z5v2t~ToQuT)M{ElB&Hr94o1qdT z*}N;l?z-|)R?40T(7k=0GsRmxGAMjGUrohk1)G2-}usGU$^KO%~aYNvNKH41-V3R1En-(R4@i;m;2 z0*LG3{-?ODNv%afgM-{!VYi+JoJw)0Mb&AaC9Aw~0Pg5vbK?0zU(Jy%bun^vzh+0* zzk-=A!8VXFWZku(13UN%rZ$6u>?>yk2}I9mCQB&2UzjaT_u^zEn2wAYH?~CNkd}xS zZwCSd$lrj#ey;C;z@{ycFx!At=N!_(SlJ89Nx`K&$FPR@6sP*f{=6sHHJ~v{k~|RS z#H=l9+pH{$i$2XpCK2b&I7B6b$ zXrpv4Ow=zdC>JpJDnc9b$M&N5+oz-+mm3xI>ikTh^?pbVTc6&I*dA`A-62ziBDI}w zD-3n*m|LzR4Dm@SugS>ppLUp>v^y~TKp)(N)X?rI5#lPTqCQDYyFK2mIEa~@ppm&aFDF*Z{}Il4+B7% zecK-?EVzSWy&Zn&j~vy#r*qnWH96Qi-!{e-ju53M$iq=H^-Nnk`#W!*_40~E3;`*U z<6=cG#dlK_nSQaqLG{_-##5qHN3e?E(x@F1KU-fyRrtQ)@uJ?W7UBmO_ZOrX7vv|K z1@Kwek({kx7Y?I4Ow~#^6Po{z5dBb0ba|MR@KElzKs*x=;yLKCAH^z#s@ks$DBlRl z3Es_`17^|i=%zLa32v--A4(!PVF)vjNm-i1@BAO>()?j-=5h;g*rem~g3a(Sw7=k` zH83>9$;MV!vlf=Q_~y+U4v)(b|118Fz%L#WbL=k$*+XnY-lv(3K@at%~sdX&mzVUo7NL>4B8d|``J9|Bi zu_b#MgBWv3eQjIWF!}0is!s%H-N6K%UBhZKFe$cq%cIYCc`O-bi%iIL|ji-ljzHq}C5d;Y^(C`c`S8)Rz=CID)BrVizS zcahCEsj;UlW}FuXCQ&gWyNPLyw}!eQa{{{QO$rklYb&Qco!m< zc$1nMPQ#fM9h3_wa_ve|o-zB@K6HarO4|ZE%v}Yyl}>w7=|?UxvD(>?z(BY9w!&+R zsL)Wa2&l_PS~5lk8TREWgF9hra5z~AmcW`92=490Y6qPg_0niG|w>~r`W zy6XA*4vTeHajMVCBqQ3?{B$$O#GbzHcIzGI$wBZa2%@+JKbpv{m!AWothk}w>hI6! zAOF|C?b{=vj8K>ZEaHyxki$s|9@F3#V-m$xWugSIHEdpb(BvB1mh~!CX+X6j*C}<- zC)ZFmr#s8^b!o|jPEN48Zd*%)T*k7NEivI`!+2SYwN$3hszk}9Hyv;8$HPQlMnpn5 zJG^=a=E!7w=?klabEIqjM>E2A1-e0{g>7@PK-U6{(7ian0x;y$(wfgyJ|q`->}FZI z%_KU>|2%gjt-^~AaV7u$`~H^nCO#Ywk8Q%YhQeZ1E@8V8J+E;NBw?17ypNf`HC|Da zh`_+U8eg@HIK1=|@cx{GrfU_WxbSxy7hIGdAYQv;*8fHNG>)sAJCvzEU~1bvmuu0m z)QV!DO+`NT{Q7dxxV!9!wm?FJVW=7B1@Ia_H&e`Hp)q!lq9?H1;=7(edrWJo z8}o2xBse@zAq9NN-wXKe=IkA;SI6g0Mhlu2#*GtC_X^OuDYqYY$A4=Hoa*b_hhL42 z8}4ix6P;POB2bdzs1n`MTnY|@GF4R3y1Ju#glCV24}XU!RAGxOT;=^Ma&p9_Egwz<2fhmA}{X zf5?|UeUmTU{Z76VW$s*=-<#&EPHFLMLTSua;>EAN|n@^v-4n9~|@M1BRFNZf?{H=|! zWlI&6jz}Ll;>P>i<)Ubjibv|hnPj2E8!naEV}N-Ub)JI!eqlQu_yk`ts{ssrw0B7XWUBOjtYV90g?%w)$$xBATSUOs2Zl-aZqpHUVIBtdhF-m zuk?1D9+ZYms``AJ^51E%P#6aMenq-OK}FvymMF{$^J&JV&e<}n&KZy{)5$?MzE4Pr zUAiN~xPs~10m;M)_4-RAPTX5P!*1e`m(z;t&IDg44~SlDdszqG+O~bQ;5c>+=FOu3 zjl4X!-G%38LyMCq6-F^C2bDplvlpF5el_zZ5LB+@g%BABRZEgSMdfgl) z`rlMBl}lbCieBlB{ruPhNwq*__N0^67a!0Ze4n;ZysbiTv{ye*LeoF6pY-sh5h~3N z zowh{H(s-ch%RPQVY{PDB4W&M-FwEaQ^YGUl$aeHL<|#08r~=(Kq3i0F zXriN9y-&21c@!h?_pgJ9g@&P zvYc|#B(K&4bGbn3M_}Xw(#&vRzPMx2`SRv7Nc@rI{MLess{11(GR|XKq0FJz(`amO#)+K z2D;I=blrEP#R@C{QnO>78eo91@WG!2?eoWOKC%_?#IxOQWW!m_^L}AQNxpKd((_$O zV1QN-s1#E?DZ?5%?hOKJQoa@KZ2bDqI`7-Xx_#GsiG{WYfDIiopFfslfjZBNwsY); zsOm&ei}4(O(Yq>P3nD36gUqYUmCK8ZC0(^a4H@N45$KHG8|g7>Ez zLqkKOP0SP>d2|0Nqm;0irRv7%F> zz~Oqm{tL9AlE5jG+;sr!iQfX+us(w`3O~?&pXiV{lAt09sNe40GotaZj*xJ(8vqH@-qqLW0&pz)>()EPs+PT64nd%9!4k~ zBKLysiNc_P#C-YR?wa^8-4GU^f9bPz_LA>dx0^Q#Rr+?4^Y-m9Ij+-k2h~G)Sdxz> z{FeSnEMgx^&dnpgyxjgQ_=Xt6-h&DbTlUd!KV2arcP@qN+`iC{Wv8~99{x?(S+jAq zoc8tY+Yd42tW=y;vv=pC^X4RMeCJ))++`*_8($Sf3k{@bZ4EWDITj)6!H9?1P3Qv*j~LuU{K} zZ5~;=!=s=7{B5~#wN}DGW&(lQ&{btHl;AV^rMtm5z+sQb`Jm{mJl+%yPRk3 zitO(e5=F4bqoutvXzzYF$Yrj5)O>eDs#=H}sZGp#AqsmjASgSWPaTw8`UU())ZdN0 z{3`y#TlXQ7kvR1=F+Nbv>h~Har0pgxTYQ(+s3U(oJMj#g`gBxBfK|_#iSp%qGWMib z>wcFp33bT>K&@r(f>6MFSYv#TLv`=m&|vk1cRJ!BHQ9xHjwVl|d^oY;=4>2ev$8&5a9cFibTw^Czv1nuId*%`x1 z92Gxe=zD}baLV-6sfy*ElepjNf?syKF3ONamQVu@B*R!ekK5LOtS>v*r)@9?822JMs&$akLt;H7qR*7bz+=Cc3qJm#KP-pFw(T=rk|u% zVi=qmoeZPJ0@aip%#x##(^FKkCOtpzt++4r+>G)o8FaN7y`-!22hX2V(o(SAi&raT zmK;diO3z(W<1;*^)9Su7S);%s^z2?Ro0=mz*vsn%`H)$!IZ=mG^=QeZfhL9Z5gxxR zao3{pTP~xzVTf-|^(jtcLcz|Bw3edfOCQ9Qb^pK)o0U$j?$Gk70p&6ob>on7b8mZ1 zO+0PH5@gcKcJB}G^U2arZ#=T@_&JK&5^dyCLPneUX{s6<8=vv=sef$iY}2N3nidN) ze@5csciW`fF6Z^x41Tfq56dpHCR%_?>H>$-*;4Wt7pp=~xfILb--z39fM^k+eCgun zOQ4Tn*SN%`Xa3=dkI35B#4BkmlJ&)JZ$?M7Xp_>#iyUUY?4qZk(`r>>rj^CdvEp6A zwKP>FWe62s2ZZf= zc#3|q!Hv3T=Zs@;B;m$L4|uAk&D9po*;@NMSH?(vS$akO%C2u7`u$i}+>p}&bSdS- zDU=yeZkKfN2^YzUOZP5nFUQeQht=?3hKyeXm$dIYi}eWz2#}g*{=`gCt@H1MpP%kO zp;r(VxsS!@RsAW7i~sEoYz5~F%`beko9LuoLJQ|$Y~!P{O&ly#@P<7osL!wo#=430 z;l<*4-8Qj>Y(tWBF6AGmsBDoqqiu-K=DG}ed=mr9&M5fq#Z|pc{4zUL;VeIS|AFTrG4@=aYYJ|MAMtgbfOdYUNOk6g7xmVe}ZDUe*1XC1dhPR;l$=S#oQsie(+Gxvl#sr;`WlX$&%}V z&9&TM_47%HlS_sAJL6oS#BC+tVt(2UqC2?+I6Nv2vZ)cE?F)=wB4(W9X%6lzk#lP- zq<9kcij^TxWF`BMK|)I+#sni`epMuNtkajsD^Qj5`N&fLlUA6Hm~TUpA!d2B>&<_1 zi6b#DHu}2SOb=F)_?Oksk1A?E5weuQEv(LCovZ2TwJW`?a!jhF zD6cL5FUSMztqp%wyQ-&Kzw)xYNGQadB>JqLw`op(>5(do8A6Uq?YF-g$t(^- zBq2I9IV!4yM^{igMwGL7Z-!o;KAtA|$w|iHx6CoI4jK9R&i;28zD^0hKTTn>|8x^^ zvb|Pt#Zje*p7+h1?_JlIiEqihqAb1C#xjocU0Y^bSds++IvvPUF@KBk!Xw5MIJ4zzxAPlkq$u3khySa|Hg^7K?2jDpO0 zDmkBS`r0}zHC`+<>y`g&$bqpQvY22B?K9^B8N&QkVPv=F<=^+6JI??^E=@CabF*M1-?+KghD&+45f<3g z17rT%JDs)cu=v~?srFU;xOanhL@IDTQT2*9wE)UfTXCJ zg^%n_){0)K+skMtHP?25F-teW*`zBFKx9N5^Djf5+jbw4dg*^mdSW7-&tQMcSlr8K zY0G4pmFtg1vU*cbH}6DeQLMo(y-llUUeYJ>dVJ@RcfW~iHdVT z&pXBwvnFLnx|c=JMpv%9k7|S);QOU5_kibDKXgk0S*7&z+haKWn)4y7XXsfOAdAW1 zO9z>$_#yA~^XCIgIu$KAqm$jvT3SSVbs{EKm<#{ha=3Z7ex7GuXT1NVa9I!b&hpqf zOVbdN>3XPcLZQ=;F(|X@{2eT5B0$}i(43-n=QO;zLBR-XI+bSEE{B)Unl$J-Q3}Hr zzjWA;9Pen`Q_oPm4>-77uOj&J3LuPxV)HFX-N z>_t16y?%vj&xlX^IbYNr$>spxh{BWC7ncVY^yo=SEYZE zp_s^9>-23i+&1(~{(ES0Jl%>=S_Dzdat&9kc~d>;DyGK?^v?RFq4&jnh1!zK?mU=zKnXH7}6#8qiY>z;YuZVeIII0)zkY$CJd{xB<^@VY_* zB9hC-y<1rx1qNkf>FY%^jaM_r%Od&pattJk9ILV{f?h@Pu}x%#u1U|)l4R@7=cPJC zON`OGIgj6>vv?Q$0-|(pQroD;L=x6$?hN?!+Y(Y)aEuWw=seT)+%_5gBD?;Zxe!(X zUia|R8iN5xb6`BZzIh~yW31ru*@)iYm&4@YM-dn7~2rwUQf(+o75AZeaHH3QE7+EVhi~ z&{ye9yck*?P^w-VZ1t2|9pY=#J?Gr({82E$R5H*c}!&Vb3%N&gj4MHb!yQv2BFN(YPgVPbZde+tQyCE0vO0N>(lRA zv}PhPi*CC2Dq76p`P(XKB1;a;8OzEJk>Noa8t{uI;mw)NZQ7coBpKQgPNRm* zUo%;E=2W&%77(#Tu_I6Vh1K!1I@ujrtIKo{IevjLpThX@sME_a6QTyPh9|O#PDA{4oft zM%mpF_L`H(M9<5R$kFd5=c%CLmp`{WD`wMb`&pBa${F+YBxO%YEFQs^3&UpG+#cQM zp9pE-hV~v2+cp{%!?Kt+l9rxc`>B|FoFb?7@E7=@58(>eh)Txiot<|H5TYnp%5N3+ z|NF)F&WM}SC5~u{#|J*jy+EqL^YyPb`RY2fTB(Pe25^+u8YE>mpf09<@YtWSVuY_g z9o(s#aB!c-QL*ac%}_!-?XS|FhMzy1((K-ix^VB{<@MTA@~~9AjURZ+#Cywd^YN+F z)p0|FWK?ARX7}Upb-!KPvgGf}4O4j?Xxl6n7PL)uM-CD;9{1L5s&G=1$0(5Jw~q@* zTq`4E_{LM(3fIVe$7a861&M1746NID^^myM@=X)T{^O8BlYinx;;rU%QgRUU(fEn? z;b-KLi5ENA!U7Z~H7WbJu%ch`0V!EOjWK4PmL0d<8pS*yz!^?)gJ4Jgy9db#C?chxnxF2iMgB-D02a&mLs&XlrvAlfIklC+ z7<16e-1+TDVE+Py!rHmSqcgSnKX#g8C~?AGF$K8DC35T8fxc>&SISBn8+S(76;E0> zth$yUCF~g!&yTCU$;oE3WKn(P$Sk)<(yL2u#2`@-jX^o9&c-q*)wv*^O9pf(+DFdM zGz~DJm3skNl{h5bn(NLEL8n)p#s=iB$5eso;#B8>hd%I0o~MbTJ>K%% z+!-U@hIc$h z67Q%_@7lHO3?QWo)0tZg8Ykk*TMFHt4KXGum#YJ=uB`}yft2f(2`v+fFwG!kmaNL(Um&01kYu;y(7l{ixf=bL?&{J5 zQ=GLWAXk07*;A4Ad@cLR#V0;JbN4}B?=w;x(>O$EPGQcsn6=@pZrE z-Zj^}=$aN+a%(o>951>8o3_0?gMp7+qLlXjHBa>1xS}@5iMr!08}%}oJ5K3D;%ucW zjGjQR;kc8xMC!tXE&LrcxeeE$Z{VZ{M?Ms(xGYGeEr$t2}?%vA5W z^6g3uG1Vo{Ij`iGj;pZdt`SHYCD{cu5?5SAikmO)s_7YOZI}lNk>o}Se zC|S4$iw@h=Ki-C(jDX6e&+eopzboq8q1V9~MxMjx+7Y)xCW&|r?j2@n}C(&F32f6enlAb@m znMTEqJ&X4$lu=}0(2Gxb_o%+?h<&SQoqT$C*#UaCs`DpKxPUOC82UwNk6~TJX|}4> z$v^+{Wj|E|2XExC|q>E`Gpl`U^TpSPGtzn-G53K5YC31GRO+L|u*Kt$F%@E~D1F-n$I26&H9R*p zz})TDW}Nl1u=|$qfN_C!p3O1iXJ?bK*E2N-_McNwu<9%{>L?dK{rNL>w}u4v1&|gO z6Z!|(Pf$j?`)z^D^u{v>>$>1K?M;R0=@;%%-cz|x zQi!#7;N`CpTtS{H9mVWJN*vgWnffZ8U)eLT4TzdAY;A z5KJ+!jNU?_!9d={FJytATrZEJw8sJ6*zX0Kq4zq?mOnYk@Ar%aBn~&8F>hlLJxBNw_ zes}gOK-En(2DWc3y5uSu|ExWG`=~ZKyKPA?nv!bhSy@v*epL6reSv*0Q|+}zbe z18*_^TYLT+boPIw_S|Ccv|g*%S+t&sHuf=jtuV8A=5aTk Date: Thu, 3 Oct 2024 11:36:31 -0700 Subject: [PATCH 016/379] source-mysql-v2: rename MysqlSourceConfigurationJsonObject to MysqlSourceConfigurationSpecification (#46345) --- .../connectors/source-mysql-v2/metadata.yaml | 2 +- .../integrations/source/mysql/MysqlSourceConfiguration.kt | 8 ++++---- ...Object.kt => MysqlSourceConfigurationSpecification.kt} | 2 +- .../integrations/source/mysql/MysqlCdcIntegrationTest.kt | 4 ++-- .../integrations/source/mysql/MysqlContainerFactory.kt | 4 ++-- ...st.kt => MysqlSourceConfigurationSpecificationTest.kt} | 6 +++--- .../source/mysql/MysqlSourceConfigurationTest.kt | 6 +++--- .../source/mysql/MysqlSourceDatatypeIntegrationTest.kt | 3 ++- .../source/mysql/MysqlSourceTestConfigurationFactory.kt | 4 ++-- 9 files changed, 20 insertions(+), 19 deletions(-) rename airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/{MysqlSourceConfigurationJsonObject.kt => MysqlSourceConfigurationSpecification.kt} (99%) rename airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/{MysqlSourceConfigurationJsonObjectTest.kt => MysqlSourceConfigurationSpecificationTest.kt} (93%) diff --git a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml index 5eb38ff4168bd..9d0476c9309f5 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml +++ b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: 561393ed-7e3a-4d0d-8b8b-90ded371754c - dockerImageTag: 0.0.14 + dockerImageTag: 0.0.15 dockerRepository: airbyte/source-mysql-v2 documentationUrl: https://docs.airbyte.com/integrations/sources/mysql githubIssueLabel: source-mysql-v2 diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt index 547234ab19c96..6cf699981b0d2 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt @@ -44,17 +44,17 @@ data class MysqlSourceConfiguration( fun mysqlSourceConfig( factory: SourceConfigurationFactory< - MysqlSourceConfigurationJsonObject, MysqlSourceConfiguration>, - supplier: ConfigurationSpecificationSupplier, + MysqlSourceConfigurationSpecification, MysqlSourceConfiguration>, + supplier: ConfigurationSpecificationSupplier, ): MysqlSourceConfiguration = factory.make(supplier.get()) } } @Singleton class MysqlSourceConfigurationFactory : - SourceConfigurationFactory { + SourceConfigurationFactory { override fun makeWithoutExceptionHandling( - pojo: MysqlSourceConfigurationJsonObject, + pojo: MysqlSourceConfigurationSpecification, ): MysqlSourceConfiguration { val realHost: String = pojo.host val realPort: Int = pojo.port diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationJsonObject.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecification.kt similarity index 99% rename from airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationJsonObject.kt rename to airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecification.kt index 58833f83d734b..2f02b59ec4389 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationJsonObject.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecification.kt @@ -51,7 +51,7 @@ import jakarta.inject.Singleton @Singleton @ConfigurationProperties(CONNECTOR_CONFIG_PREFIX) @SuppressFBWarnings(value = ["NP_NONNULL_RETURN_VIOLATION"], justification = "Micronaut DI") -class MysqlSourceConfigurationJsonObject : ConfigurationSpecification() { +class MysqlSourceConfigurationSpecification : ConfigurationSpecification() { @JsonProperty("host") @JsonSchemaTitle("Host") @JsonSchemaInject(json = """{"order":1}""") diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt index a03c73d806e66..e31c8c0b80693 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt @@ -52,7 +52,7 @@ class MysqlCdcIntegrationTest { ) .use { nonCdcDbContainer -> { - val invalidConfig: MysqlSourceConfigurationJsonObject = + val invalidConfig: MysqlSourceConfigurationSpecification = MysqlContainerFactory.config(nonCdcDbContainer).apply { setCursorMethodValue(CdcCursor()) } @@ -112,7 +112,7 @@ class MysqlCdcIntegrationTest { val log = KotlinLogging.logger {} lateinit var dbContainer: MySQLContainer<*> - fun config(): MysqlSourceConfigurationJsonObject = + fun config(): MysqlSourceConfigurationSpecification = MysqlContainerFactory.config(dbContainer).apply { setCursorMethodValue(CdcCursor()) } val connectionFactory: JdbcConnectionFactory by lazy { diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlContainerFactory.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlContainerFactory.kt index ecd9ff481dfd2..ab417e57691e6 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlContainerFactory.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlContainerFactory.kt @@ -50,8 +50,8 @@ object MysqlContainerFactory { } @JvmStatic - fun config(mySQLContainer: MySQLContainer<*>): MysqlSourceConfigurationJsonObject = - MysqlSourceConfigurationJsonObject().apply { + fun config(mySQLContainer: MySQLContainer<*>): MysqlSourceConfigurationSpecification = + MysqlSourceConfigurationSpecification().apply { host = mySQLContainer.host port = mySQLContainer.getMappedPort(MySQLContainer.MYSQL_PORT) username = mySQLContainer.username diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationJsonObjectTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecificationTest.kt similarity index 93% rename from airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationJsonObjectTest.kt rename to airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecificationTest.kt index 92d1612423b51..c063017f0df18 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationJsonObjectTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecificationTest.kt @@ -13,9 +13,9 @@ import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test @MicronautTest(environments = [Environment.TEST], rebuildContext = true) -class MysqlSourceConfigurationJsonObjectTest { +class MysqlSourceConfigurationSpecificationTest { @Inject - lateinit var supplier: ConfigurationSpecificationSupplier + lateinit var supplier: ConfigurationSpecificationSupplier @Test fun testSchemaViolation() { @@ -25,7 +25,7 @@ class MysqlSourceConfigurationJsonObjectTest { @Test @Property(name = "airbyte.connector.config.json", value = CONFIG_JSON) fun testJson() { - val pojo: MysqlSourceConfigurationJsonObject = supplier.get() + val pojo: MysqlSourceConfigurationSpecification = supplier.get() Assertions.assertEquals("localhost", pojo.host) Assertions.assertEquals(12345, pojo.port) Assertions.assertEquals("FOO", pojo.username) diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt index 3280fa5292276..1a9a4265d33fb 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt @@ -14,16 +14,16 @@ import org.junit.jupiter.api.Test class MysqlSourceConfigurationTest { @Inject lateinit var pojoSupplier: - ConfigurationSpecificationSupplier + ConfigurationSpecificationSupplier @Inject lateinit var factory: - SourceConfigurationFactory + SourceConfigurationFactory @Test @Property(name = "airbyte.connector.config.json", value = CONFIG) fun testParseJdbcParameters() { - val pojo: MysqlSourceConfigurationJsonObject = pojoSupplier.get() + val pojo: MysqlSourceConfigurationSpecification = pojoSupplier.get() val config = factory.makeWithoutExceptionHandling(pojo) diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt index 3f340c335783e..12d4a4ecbcc66 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt @@ -155,7 +155,8 @@ class MysqlSourceDatatypeIntegrationTest { companion object { lateinit var dbContainer: MySQLContainer<*> - fun config(): MysqlSourceConfigurationJsonObject = MysqlContainerFactory.config(dbContainer) + fun config(): MysqlSourceConfigurationSpecification = + MysqlContainerFactory.config(dbContainer) val connectionFactory: JdbcConnectionFactory by lazy { JdbcConnectionFactory(MysqlSourceConfigurationFactory().make(config())) diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceTestConfigurationFactory.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceTestConfigurationFactory.kt index 723817bc701b6..7bac9f03e2cca 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceTestConfigurationFactory.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceTestConfigurationFactory.kt @@ -12,9 +12,9 @@ import java.time.Duration @Requires(env = [Environment.TEST]) @Primary class MysqlSourceTestConfigurationFactory : - SourceConfigurationFactory { + SourceConfigurationFactory { override fun makeWithoutExceptionHandling( - pojo: MysqlSourceConfigurationJsonObject, + pojo: MysqlSourceConfigurationSpecification, ): MysqlSourceConfiguration = MysqlSourceConfigurationFactory() .makeWithoutExceptionHandling(pojo) From 7dc73752cfc241987bdf2c3c27b6d02219631d8c Mon Sep 17 00:00:00 2001 From: Edward Gao Date: Thu, 3 Oct 2024 12:48:25 -0700 Subject: [PATCH 017/379] Bulk load cdk: Update spec test to run against cloud+oss modes (#46300) --- .prettierignore | 1 + .../io/airbyte/cdk/test/spec/SpecTest.kt | 26 ++++++++++---- ...evNullBasicFunctionalityIntegrationTest.kt | 3 -- .../destination/dev_null/DevNullSpecTest.kt | 9 +++++ .../resources/expected-spec-cloud.json | 34 +++++++++++++++++++ .../resources/expected-spec-oss.json} | 0 6 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecTest.kt create mode 100644 airbyte-integrations/connectors/destination-dev-null/src/test-integration/resources/expected-spec-cloud.json rename airbyte-integrations/connectors/destination-dev-null/{expected-spec.json => src/test-integration/resources/expected-spec-oss.json} (100%) diff --git a/.prettierignore b/.prettierignore index bd77e4f5a9831..530f275141c88 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,7 @@ airbyte-integrations/bases/base-normalization/integration_tests/normalization_test_output airbyte-ci/connectors/pipelines/tests/test_changelog/result_files airbyte-integrations/bases/connector-acceptance-test/unit_tests/data/docs +airbyte-integrations/connectors/destination-*/src/test-integration/resources/expected-spec*.json # Ignore manifest files in manifest-only connectors # This is done due to prettier being overly opinionated on the formatting of quotes diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt index 90f51521df922..2dabbcb1ad378 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt @@ -17,6 +17,7 @@ import io.airbyte.cdk.test.util.FakeDataDumper import io.airbyte.cdk.test.util.IntegrationTest import io.airbyte.cdk.test.util.NoopDestinationCleaner import io.airbyte.cdk.test.util.NoopExpectedRecordMapper +import io.airbyte.cdk.test.util.TestDeploymentMode import io.airbyte.cdk.util.Jsons import io.airbyte.protocol.models.v0.AirbyteMessage import java.nio.file.Files @@ -25,9 +26,6 @@ import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertAll -private const val EXPECTED_SPEC_FILENAME = "expected-spec.json" -private val expectedSpecPath = Path.of(EXPECTED_SPEC_FILENAME) - /** * This is largely copied from [io.airbyte.cdk.spec.SpecTest], but adapted to use our * [DestinationProcessFactory]. @@ -43,12 +41,28 @@ abstract class SpecTest : NoopExpectedRecordMapper, ) { @Test - fun testSpec() { + fun testSpecOss() { + testSpec(TestDeploymentMode.OSS) + } + + @Test + fun testSpecCloud() { + testSpec(TestDeploymentMode.CLOUD) + } + + private fun testSpec(deploymentMode: TestDeploymentMode) { + val expectedSpecFilename = "expected-spec-${deploymentMode.name.lowercase()}.json" + val expectedSpecPath = Path.of("src/test-integration/resources", expectedSpecFilename) + if (!Files.exists(expectedSpecPath)) { Files.createFile(expectedSpecPath) } val expectedSpec = Files.readString(expectedSpecPath) - val process = destinationProcessFactory.createDestinationProcess("spec") + val process = + destinationProcessFactory.createDestinationProcess( + "spec", + deploymentMode = deploymentMode + ) process.run() val messages = process.readMessages() val specMessages = messages.filter { it.type == AirbyteMessage.Type.SPEC } @@ -73,7 +87,7 @@ abstract class SpecTest : val diff: JsonDiff = DiffGenerator.diff(expectedSpec, Jsons.writeValueAsString(spec), jsonMatcher) assertAll( - "Spec snapshot test failed. Run this test locally and then `git diff <...>/expected_spec.json` to see what changed, and commit the diff if that change was intentional.", + "Spec snapshot test failed. Run this test locally and then `git diff <...>/$expectedSpecFilename` to see what changed, and commit the diff if that change was intentional.", { assertEquals("", OnlyErrorDiffViewer.from(diff).toString()) }, { assertEquals(expectedSpec, actualSpecPrettyPrint) } ) diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt index 4ce1ba494e962..4d7bd50359657 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt @@ -4,7 +4,6 @@ package io.airbyte.integrations.destination.dev_null -import io.airbyte.cdk.test.spec.SpecTest import io.airbyte.cdk.test.util.NoopDestinationCleaner import io.airbyte.cdk.test.util.NoopExpectedRecordMapper import io.airbyte.cdk.test.write.BasicFunctionalityIntegrationTest @@ -29,5 +28,3 @@ class DevNullBasicFunctionalityIntegrationTest : super.testBasicWrite() } } - -class DevNullSpecTest : SpecTest() diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecTest.kt b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecTest.kt new file mode 100644 index 0000000000000..0c80d835a462d --- /dev/null +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecTest.kt @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.integrations.destination.dev_null + +import io.airbyte.cdk.test.spec.SpecTest + +class DevNullSpecTest : SpecTest() diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/resources/expected-spec-cloud.json b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/resources/expected-spec-cloud.json new file mode 100644 index 0000000000000..80470032815ef --- /dev/null +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/resources/expected-spec-cloud.json @@ -0,0 +1,34 @@ +{ + "documentationUrl" : "https://docs.airbyte.com/integrations/destinations/dev-null", + "connectionSpecification" : { + "$schema" : "http://json-schema.org/draft-07/schema#", + "title" : "E2E Test Destination Spec", + "type" : "object", + "additionalProperties" : true, + "properties" : { + "test_destination" : { + "oneOf" : [ { + "title" : "Silent", + "type" : "object", + "additionalProperties" : true, + "properties" : { + "test_destination_type" : { + "type" : "string", + "enum" : [ "SILENT" ], + "default" : "SILENT" + } + }, + "required" : [ "test_destination_type" ] + } ], + "description" : "The type of destination to be used", + "title" : "Test Destination", + "type" : "object" + } + }, + "required" : [ "test_destination" ] + }, + "supportsIncremental" : true, + "supportsNormalization" : false, + "supportsDBT" : false, + "supported_destination_sync_modes" : [ "overwrite", "append", "append_dedup" ] +} \ No newline at end of file diff --git a/airbyte-integrations/connectors/destination-dev-null/expected-spec.json b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/resources/expected-spec-oss.json similarity index 100% rename from airbyte-integrations/connectors/destination-dev-null/expected-spec.json rename to airbyte-integrations/connectors/destination-dev-null/src/test-integration/resources/expected-spec-oss.json From e7568758493d643bfecf238583ec71da50997c93 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Thu, 3 Oct 2024 13:54:38 -0700 Subject: [PATCH 018/379] Bulk Load CDK: Exception Handling for TaskLauncher (#46316) Addressed all PR comments. --- .../airbyte/cdk/message/MessageQueueWriter.kt | 2 +- .../io/airbyte/cdk/state/StreamManager.kt | 211 +++++++++++ .../io/airbyte/cdk/state/SyncManager.kt | 201 +++-------- .../io/airbyte/cdk/task/CloseStreamTask.kt | 4 +- .../cdk/task/DestinationTaskLauncher.kt | 112 ++++-- .../io/airbyte/cdk/task/FailStreamTask.kt | 67 ++++ .../io/airbyte/cdk/task/FailSyncTask.kt | 50 +++ .../io/airbyte/cdk/task/OpenStreamTask.kt | 2 +- .../io/airbyte/cdk/task/ProcessBatchTask.kt | 2 +- .../io/airbyte/cdk/task/ProcessRecordsTask.kt | 2 +- .../io/airbyte/cdk/task/SpillToDiskTask.kt | 91 +++-- .../kotlin/io/airbyte/cdk/task/TaskRunner.kt | 1 + .../io/airbyte/cdk/task/TeardownTask.kt | 12 +- .../io/airbyte/cdk/write/DestinationWriter.kt | 4 +- .../io/airbyte/cdk/write/StreamLoader.kt | 5 +- .../io/airbyte/cdk/write/WriteOperation.kt | 40 ++- .../DestinationMessageQueueWriterTest.kt | 29 +- .../cdk/state/CheckpointManagerTest.kt | 15 +- .../io/airbyte/cdk/state/MockSyncManager.kt | 110 ------ .../io/airbyte/cdk/state/StreamManagerTest.kt | 260 ++++++++++++++ .../io/airbyte/cdk/state/SyncManagerTest.kt | 335 ++++-------------- ...inationTaskLauncherExceptionHandlerTest.kt | 226 ++++++++++++ .../cdk/task/DestinationTaskLauncherTest.kt | 61 +++- .../io/airbyte/cdk/task/MockTaskLauncher.kt | 3 +- .../cdk/task/ProcessRecordsTaskTest.kt | 7 +- .../airbyte/cdk/task/SpillToDiskTaskTest.kt | 3 + .../cdk/test/util/CoroutineTestUtils.kt | 31 ++ 27 files changed, 1234 insertions(+), 652 deletions(-) create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailStreamTask.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailSyncTask.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockSyncManager.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherExceptionHandlerTest.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/CoroutineTestUtils.kt diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt index 9a8202d0fc830..c80072c88518b 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt @@ -59,7 +59,7 @@ class DestinationMessageQueueWriter( /* If an end-of-stream marker. */ is DestinationStreamComplete, is DestinationStreamIncomplete -> { - val wrapped = StreamCompleteWrapped(index = manager.countEndOfStream()) + val wrapped = StreamCompleteWrapped(index = manager.markEndOfStream()) messageQueue.getChannel(message.stream).send(wrapped) } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt new file mode 100644 index 0000000000000..8dce8fb1bfe3a --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt @@ -0,0 +1,211 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.state + +import com.google.common.collect.Range +import com.google.common.collect.RangeSet +import com.google.common.collect.TreeRangeSet +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.message.Batch +import io.airbyte.cdk.message.BatchEnvelope +import io.github.oshai.kotlinlogging.KotlinLogging +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton +import java.util.concurrent.ConcurrentHashMap +import java.util.concurrent.atomic.AtomicBoolean +import java.util.concurrent.atomic.AtomicLong +import kotlinx.coroutines.CompletableDeferred + +sealed interface StreamResult + +sealed interface StreamIncompleteResult : StreamResult + +data class StreamFailed(val streamException: Exception) : StreamIncompleteResult + +data class StreamKilled(val syncException: Exception) : StreamIncompleteResult + +data object StreamSucceeded : StreamResult + +/** Manages the state of a single stream. */ +interface StreamManager { + /** + * Count incoming record and return the record's *index*. If [markEndOfStream] has been called, + * this should throw an exception. + */ + fun countRecordIn(): Long + fun recordCount(): Long + + /** + * Mark the end-of-stream and return the record count. Expect this exactly once. Expect no + * further `countRecordIn`, and expect that [markSucceeded] or [markFailed] or [markKilled] will + * alway occur after this. + */ + fun markEndOfStream(): Long + fun endOfStreamRead(): Boolean + + /** + * Mark a checkpoint in the stream and return the current index and the number of records since + * the last one. + * + * NOTE: Single-writer. If in the future multiple threads set checkpoints, this method should be + * synchronized. + */ + fun markCheckpoint(): Pair + + /** Record that the given batch's state has been reached for the associated range(s). */ + fun updateBatchState(batch: BatchEnvelope) + + /** + * True if all are true: + * * all records have been seen (ie, we've counted an end-of-stream) + * * a [Batch.State.COMPLETE] batch range has been seen covering every record + * + * Does NOT require that the stream be closed. + */ + fun isBatchProcessingComplete(): Boolean + + /** + * True if all records in [0, index] have at least reached [Batch.State.PERSISTED]. This is + * implicitly true if they have all reached [Batch.State.COMPLETE]. + */ + fun areRecordsPersistedUntil(index: Long): Boolean + + /** Mark the stream as closed. This should only be called after all records have been read. */ + fun markSucceeded() + + /** Mark that the stream was killed due to failure elsewhere. */ + fun markKilled(causedBy: Exception) + + /** Mark that the stream itself failed. */ + fun markFailed(causedBy: Exception) + + /** Suspend until the stream completes, returning the result. */ + suspend fun awaitStreamResult(): StreamResult + + /** True if the stream has not yet been marked successful, failed, or killed. */ + fun isActive(): Boolean +} + +class DefaultStreamManager( + val stream: DestinationStream, +) : StreamManager { + private val streamResult = CompletableDeferred() + + private val log = KotlinLogging.logger {} + + private val recordCount = AtomicLong(0) + private val lastCheckpoint = AtomicLong(0L) + + private val markedEndOfStream = AtomicBoolean(false) + + private val rangesState: ConcurrentHashMap> = ConcurrentHashMap() + + init { + Batch.State.entries.forEach { rangesState[it] = TreeRangeSet.create() } + } + + override fun countRecordIn(): Long { + if (markedEndOfStream.get()) { + throw IllegalStateException("Stream is closed for reading") + } + + return recordCount.getAndIncrement() + } + + override fun recordCount(): Long { + return recordCount.get() + } + + override fun markEndOfStream(): Long { + if (markedEndOfStream.getAndSet(true)) { + throw IllegalStateException("Stream is closed for reading") + } + + return recordCount.get() + } + + override fun endOfStreamRead(): Boolean { + return markedEndOfStream.get() + } + + override fun markCheckpoint(): Pair { + val index = recordCount.get() + val lastCheckpoint = lastCheckpoint.getAndSet(index) + return Pair(index, index - lastCheckpoint) + } + + override fun updateBatchState(batch: BatchEnvelope) { + val stateRanges = + rangesState[batch.batch.state] + ?: throw IllegalArgumentException("Invalid batch state: ${batch.batch.state}") + + // Force the ranges to overlap at their endpoints, in order to work around + // the behavior of `.encloses`, which otherwise would not consider adjacent ranges as + // contiguous. + // This ensures that a state message received at eg, index 10 (after messages 0..9 have + // been received), will pass `{'[0..5]','[6..9]'}.encloses('[0..10)')`. + val expanded = + batch.ranges.asRanges().map { it.span(Range.singleton(it.upperEndpoint() + 1)) } + + stateRanges.addAll(expanded) + log.info { "Updated ranges for $stream[${batch.batch.state}]: $stateRanges" } + } + + /** True if all records in `[0, index)` have reached the given state. */ + private fun isProcessingCompleteForState(index: Long, state: Batch.State): Boolean { + val completeRanges = rangesState[state]!! + return completeRanges.encloses(Range.closedOpen(0L, index)) + } + + override fun isBatchProcessingComplete(): Boolean { + /* If the stream hasn't been fully read, it can't be done. */ + if (!markedEndOfStream.get()) { + return false + } + + return isProcessingCompleteForState(recordCount.get(), Batch.State.COMPLETE) + } + + /** TODO: Handle conflating PERSISTED w/ COMPLETE upstream, to allow for overlap? */ + override fun areRecordsPersistedUntil(index: Long): Boolean { + return isProcessingCompleteForState(index, Batch.State.PERSISTED) || + isProcessingCompleteForState(index, Batch.State.COMPLETE) // complete => persisted + } + + override fun markSucceeded() { + if (!markedEndOfStream.get()) { + throw IllegalStateException("Stream is not closed for reading") + } + streamResult.complete(StreamSucceeded) + } + + override fun markKilled(causedBy: Exception) { + streamResult.complete(StreamKilled(causedBy)) + } + + override fun markFailed(causedBy: Exception) { + streamResult.complete(StreamFailed(causedBy)) + } + + override suspend fun awaitStreamResult(): StreamResult { + return streamResult.await() + } + + override fun isActive(): Boolean { + return streamResult.isActive + } +} + +interface StreamManagerFactory { + fun create(stream: DestinationStream): StreamManager +} + +@Singleton +@Secondary +class DefaultStreamManagerFactory : StreamManagerFactory { + override fun create(stream: DestinationStream): StreamManager { + return DefaultStreamManager(stream) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/SyncManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/SyncManager.kt index 10d46bd667b23..953de79db12b5 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/SyncManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/SyncManager.kt @@ -4,23 +4,24 @@ package io.airbyte.cdk.state -import com.google.common.collect.Range -import com.google.common.collect.RangeSet -import com.google.common.collect.TreeRangeSet +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.write.StreamLoader -import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Factory import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.atomic.AtomicBoolean -import java.util.concurrent.atomic.AtomicLong import kotlinx.coroutines.CompletableDeferred -import kotlinx.coroutines.channels.Channel + +sealed interface SyncResult + +data object SyncSuccess : SyncResult + +data class SyncFailure( + val syncFailure: Exception, + val streamResults: Map +) : SyncResult /** Manages the state of all streams in the destination. */ interface SyncManager { @@ -29,14 +30,27 @@ interface SyncManager { fun registerStartedStreamLoader(streamLoader: StreamLoader) suspend fun getOrAwaitStreamLoader(stream: DestinationStream.Descriptor): StreamLoader + suspend fun getStreamLoaderOrNull(stream: DestinationStream.Descriptor): StreamLoader? + + /** Suspend until all streams are complete. Returns false if any stream was failed/killed. */ + suspend fun awaitAllStreamsCompletedSuccessfully(): Boolean + + suspend fun markFailed(causedBy: Exception): SyncFailure + suspend fun markSucceeded() - /** Suspend until all streams are closed. */ - suspend fun awaitAllStreamsClosed() + fun isActive(): Boolean + + suspend fun awaitSyncResult(): SyncResult } +@SuppressFBWarnings( + "NP_NONNULL_PARAM_VIOLATION", + justification = "exception is guaranteed to be non-null by Kotlin's type system" +) class DefaultSyncManager( private val streamManagers: ConcurrentHashMap ) : SyncManager { + private val syncResult = CompletableDeferred() private val streamLoaders = ConcurrentHashMap>() @@ -56,166 +70,55 @@ class DefaultSyncManager( return streamLoaders.getOrPut(stream) { CompletableDeferred() }.await() } - override suspend fun awaitAllStreamsClosed() { - streamManagers.forEach { (_, manager) -> manager.awaitStreamClosed() } - } -} - -/** Manages the state of a single stream. */ -interface StreamManager { - /** Count incoming record and return the record's *index*. */ - fun countRecordIn(): Long - - /** - * Count the end-of-stream. Expect this exactly once. Expect no further `countRecordIn`, and - * expect that `markClosed` will always occur after this. - */ - fun countEndOfStream(): Long - - /** - * Mark a checkpoint in the stream and return the current index and the number of records since - * the last one. - * - * NOTE: Single-writer. If in the future multiple threads set checkpoints, this method should be - * synchronized. - */ - fun markCheckpoint(): Pair - - /** Record that the given batch's state has been reached for the associated range(s). */ - fun updateBatchState(batch: BatchEnvelope) - - /** - * True if all are true: - * * all records have been seen (ie, we've counted an end-of-stream) - * * a [Batch.State.COMPLETE] batch range has been seen covering every record - * - * Does NOT require that the stream be closed. - */ - fun isBatchProcessingComplete(): Boolean - - /** - * True if all records in [0, index] have at least reached [Batch.State.PERSISTED]. This is - * implicitly true if they have all reached [Batch.State.COMPLETE]. - */ - fun areRecordsPersistedUntil(index: Long): Boolean - - /** Mark the stream as closed. This should only be called after all records have been read. */ - fun markClosed() - - /** True if the stream has been marked as closed. */ - fun streamIsClosed(): Boolean - - /** Suspend until the stream is closed. */ - suspend fun awaitStreamClosed() -} - -class DefaultStreamManager( - val stream: DestinationStream, -) : StreamManager { - private val log = KotlinLogging.logger {} - - private val recordCount = AtomicLong(0) - private val lastCheckpoint = AtomicLong(0L) - private val readIsClosed = AtomicBoolean(false) - private val streamIsClosed = AtomicBoolean(false) - private val closedLock = Channel() - - private val rangesState: ConcurrentHashMap> = ConcurrentHashMap() - - init { - Batch.State.entries.forEach { rangesState[it] = TreeRangeSet.create() } - } - - override fun countRecordIn(): Long { - if (readIsClosed.get()) { - throw IllegalStateException("Stream is closed for reading") - } - - return recordCount.getAndIncrement() - } - - override fun countEndOfStream(): Long { - if (readIsClosed.getAndSet(true)) { - throw IllegalStateException("Stream is closed for reading") - } - - return recordCount.get() - } - - override fun markCheckpoint(): Pair { - val index = recordCount.get() - val lastCheckpoint = lastCheckpoint.getAndSet(index) - return Pair(index, index - lastCheckpoint) - } - - override fun updateBatchState(batch: BatchEnvelope) { - val stateRanges = - rangesState[batch.batch.state] - ?: throw IllegalArgumentException("Invalid batch state: ${batch.batch.state}") - - // Force the ranges to overlap at their endpoints, in order to work around - // the behavior of `.encloses`, which otherwise would not consider adjacent ranges as - // contiguous. - // This ensures that a state message received at eg, index 10 (after messages 0..9 have - // been received), will pass `{'[0..5]','[6..9]'}.encloses('[0..10)')`. - val expanded = - batch.ranges.asRanges().map { it.span(Range.singleton(it.upperEndpoint() + 1)) } - - stateRanges.addAll(expanded) - log.info { "Updated ranges for $stream[${batch.batch.state}]: $stateRanges" } - } - - /** True if all records in `[0, index)` have reached the given state. */ - private fun isProcessingCompleteForState(index: Long, state: Batch.State): Boolean { - val completeRanges = rangesState[state]!! - return completeRanges.encloses(Range.closedOpen(0L, index)) + override suspend fun getStreamLoaderOrNull( + stream: DestinationStream.Descriptor + ): StreamLoader? { + val completable = streamLoaders[stream] + return completable?.let { if (it.isCompleted) it.await() else null } } - override fun isBatchProcessingComplete(): Boolean { - /* If the stream hasn't been fully read, it can't be done. */ - if (!readIsClosed.get()) { - return false - } - - return isProcessingCompleteForState(recordCount.get(), Batch.State.COMPLETE) + override suspend fun awaitAllStreamsCompletedSuccessfully(): Boolean { + return streamManagers.all { (_, manager) -> manager.awaitStreamResult() is StreamSucceeded } } - /** TODO: Handle conflating PERSISTED w/ COMPLETE upstream, to allow for overlap? */ - override fun areRecordsPersistedUntil(index: Long): Boolean { - return isProcessingCompleteForState(index, Batch.State.PERSISTED) || - isProcessingCompleteForState(index, Batch.State.COMPLETE) // complete => persisted + override suspend fun markFailed(causedBy: Exception): SyncFailure { + streamManagers.values.forEach { + it.markKilled(causedBy) + } // will do nothing if the stream's already been marked failed + val result = + SyncFailure(causedBy, streamManagers.mapValues { it.value.awaitStreamResult() }) + syncResult.complete(result) + return result } - override fun markClosed() { - if (!readIsClosed.get()) { - throw IllegalStateException("Stream must be fully read before it can be closed") - } - - if (streamIsClosed.compareAndSet(false, true)) { - closedLock.trySend(Unit) + override suspend fun markSucceeded() { + if (streamManagers.values.any { it.isActive() }) { + throw IllegalStateException( + "Cannot mark sync as succeeded until all streams are complete" + ) } + syncResult.complete(SyncSuccess) } - override fun streamIsClosed(): Boolean { - return streamIsClosed.get() + override fun isActive(): Boolean { + return syncResult.isActive } - override suspend fun awaitStreamClosed() { - if (!streamIsClosed.get()) { - closedLock.receive() - } + override suspend fun awaitSyncResult(): SyncResult { + return syncResult.await() } } @Factory class SyncManagerFactory( private val catalog: DestinationCatalog, + private val streamManagerFactory: StreamManagerFactory ) { @Singleton @Secondary fun make(): SyncManager { val hashMap = ConcurrentHashMap() - catalog.streams.forEach { hashMap[it.descriptor] = DefaultStreamManager(it) } + catalog.streams.forEach { hashMap[it.descriptor] = streamManagerFactory.create(it) } return DefaultSyncManager(hashMap) } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/CloseStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/CloseStreamTask.kt index ee786d583c4da..38d931955124e 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/CloseStreamTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/CloseStreamTask.kt @@ -18,14 +18,14 @@ interface CloseStreamTask : StreamTask */ class DefaultCloseStreamTask( private val syncManager: SyncManager, - private val stream: DestinationStream, + override val stream: DestinationStream, private val taskLauncher: DestinationTaskLauncher ) : CloseStreamTask { override suspend fun execute() { val streamLoader = syncManager.getOrAwaitStreamLoader(stream.descriptor) streamLoader.close() - syncManager.getStreamManager(stream.descriptor).markClosed() + syncManager.getStreamManager(stream.descriptor).markSucceeded() taskLauncher.handleStreamClosed(streamLoader.stream) } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt index ad105982d7064..60cfb8d4b6f35 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt @@ -10,14 +10,12 @@ import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.SpilledRawMessagesLocalFile +import io.airbyte.cdk.state.StreamSucceeded import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.state.SyncSuccess import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.atomic.AtomicBoolean -import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock @@ -25,14 +23,17 @@ sealed interface DestinationWriteTask : Task interface SyncTask : DestinationWriteTask -interface StreamTask : DestinationWriteTask +interface StreamTask : DestinationWriteTask { + val stream: DestinationStream +} interface DestinationTaskLauncher : TaskLauncher { suspend fun handleSetupComplete() suspend fun handleStreamStarted(stream: DestinationStream) suspend fun handleNewSpilledFile( stream: DestinationStream, - wrapped: BatchEnvelope + wrapped: BatchEnvelope, + endOfStream: Boolean ) suspend fun handleNewBatch(stream: DestinationStream, wrapped: BatchEnvelope<*>) suspend fun handleStreamClosed(stream: DestinationStream) @@ -42,7 +43,8 @@ interface DestinationTaskLauncher : TaskLauncher { interface DestinationTaskLauncherExceptionHandler : TaskLauncherExceptionHandler { suspend fun handleSyncFailure(e: Exception) - suspend fun handleStreamFailure(e: Exception) + suspend fun handleStreamFailure(stream: DestinationStream, e: Exception) + suspend fun stop() } /** @@ -76,6 +78,7 @@ interface DestinationTaskLauncherExceptionHandler : * // TODO: Capture failures, retry, and call into close(failure=true) if can't recover. */ @Singleton +@Secondary @SuppressFBWarnings( "NP_NONNULL_PARAM_VIOLATION", justification = "arguments are guaranteed to be non-null by Kotlin's type system" @@ -95,21 +98,12 @@ class DefaultDestinationTaskLauncher( ) : DestinationTaskLauncher { private val log = KotlinLogging.logger {} - private val runTeardownOnce = AtomicBoolean(false) private val batchUpdateLock = Mutex() private suspend fun enqueue(task: DestinationWriteTask) { taskRunner.enqueue(exceptionHandler.withExceptionHandling(task)) } - private val streamLoaders: - ConcurrentHashMap> = - ConcurrentHashMap() - - init { - catalog.streams.forEach { streamLoaders[it.descriptor] = CompletableDeferred() } - } - override suspend fun start() { log.info { "Starting startup task" } val setupTask = setupTaskFactory.make(this) @@ -139,11 +133,17 @@ class DefaultDestinationTaskLauncher( /** Called for each new spilled file. */ override suspend fun handleNewSpilledFile( stream: DestinationStream, - wrapped: BatchEnvelope + wrapped: BatchEnvelope, + endOfStream: Boolean ) { log.info { "Starting process records task for ${stream.descriptor}, file ${wrapped.batch}" } val task = processRecordsTaskFactory.make(this, stream, wrapped) enqueue(task) + if (!endOfStream) { + log.info { "End-of-stream not reached, restarting spill-to-disk task for $stream" } + val spillTask = spillToDiskTaskFactory.make(this, stream) + enqueue(spillTask) + } } /** @@ -188,47 +188,111 @@ class DefaultDestinationTaskLauncher( } } +/** + * The exception handler takes over the workflow in the event of an exception. Its contract is + * * provide a wrapper that directs exceptions to the correct handler (by task type) + * * close the task runner when the cleanup workflow is complete + * + * Handling works as follows: + * * a failure in a sync-level task (setup/teardown) triggers a fail sync task + * * a failure in a stream task triggers a fails stream task THEN a fail sync task + * * the wrappers will skip tasks if the sync/stream has already failed + */ @Singleton @Secondary -class DefaultDestinationTaskLauncherExceptionHandler : DestinationTaskLauncherExceptionHandler { +class DefaultDestinationTaskLauncherExceptionHandler( + private val taskRunner: TaskRunner, + private val syncManager: SyncManager, + private val failStreamTaskFactory: FailStreamTaskFactory, + private val failSyncTaskFactory: FailSyncTaskFactory, +) : DestinationTaskLauncherExceptionHandler { + class SyncTaskWrapper( private val exceptionHandler: DestinationTaskLauncherExceptionHandler, + private val syncManager: SyncManager, private val innerTask: SyncTask, ) : Task { + val log = KotlinLogging.logger {} + override suspend fun execute() { + if (!syncManager.isActive()) { + val result = syncManager.awaitSyncResult() + if (result is SyncSuccess) { + throw IllegalStateException( + "Task $innerTask run after sync has succeeded. This should not happen." + ) + } + log.info { "Sync terminated, skipping task $innerTask." } + return + } + try { innerTask.execute() } catch (e: Exception) { exceptionHandler.handleSyncFailure(e) } } + + override fun toString(): String { + return "SyncTaskWrapper(innerTask=$innerTask)" + } } class StreamTaskWrapper( private val exceptionHandler: DestinationTaskLauncherExceptionHandler, + private val syncManager: SyncManager, private val innerTask: StreamTask, ) : SyncTask { + val log = KotlinLogging.logger {} + override suspend fun execute() { + // Stop dispatching tasks if the stream has been killed by a failure elsewhere. + // Specifically fail if the stream was marked succeeded: we should not be in this state. + val streamManager = syncManager.getStreamManager(innerTask.stream.descriptor) + if (!streamManager.isActive()) { + val result = streamManager.awaitStreamResult() + if (result is StreamSucceeded) { + throw IllegalStateException( + "Task $innerTask run after its stream ${innerTask.stream.descriptor} has succeeded. This should not happen." + ) + } + log.info { + "Stream ${innerTask.stream.descriptor} terminated with $result, skipping task $innerTask." + } + return + } + try { innerTask.execute() } catch (e: Exception) { - exceptionHandler.handleStreamFailure(e) + exceptionHandler.handleStreamFailure(innerTask.stream, e) } } + + override fun toString(): String { + return "StreamTaskWrapper(innerTask=$innerTask)" + } } override fun withExceptionHandling(task: DestinationWriteTask): Task { return when (task) { - is SyncTask -> SyncTaskWrapper(this, task) - is StreamTask -> SyncTaskWrapper(this, StreamTaskWrapper(this, task)) + is SyncTask -> SyncTaskWrapper(this, syncManager, task) + is StreamTask -> + SyncTaskWrapper(this, syncManager, StreamTaskWrapper(this, syncManager, task)) } } override suspend fun handleSyncFailure(e: Exception) { - // TODO: Do stuff + val failSyncTask = failSyncTaskFactory.make(this, e) + taskRunner.enqueue(failSyncTask) + } + + override suspend fun handleStreamFailure(stream: DestinationStream, e: Exception) { + val failStreamTask = failStreamTaskFactory.make(this, e, stream) + taskRunner.enqueue(failStreamTask) } - override suspend fun handleStreamFailure(e: Exception) { - // TODO: Do stuff + override suspend fun stop() { + taskRunner.close() } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailStreamTask.kt new file mode 100644 index 0000000000000..411a3d0c24315 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailStreamTask.kt @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.state.StreamIncompleteResult +import io.airbyte.cdk.state.SyncManager +import io.github.oshai.kotlinlogging.KotlinLogging +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton + +interface FailStreamTask : Task + +/** + * FailStreamTask is a task that is executed when a stream fails. It is responsible for cleaning up + * resources and reporting the failure. + */ +class DefaultFailStreamTask( + private val exceptionHandler: DestinationTaskLauncherExceptionHandler, + private val exception: Exception, + private val syncManager: SyncManager, + private val stream: DestinationStream +) : FailStreamTask { + val log = KotlinLogging.logger {} + + override suspend fun execute() { + val streamManager = syncManager.getStreamManager(stream.descriptor) + streamManager.markFailed(exception) + val streamResult = streamManager.awaitStreamResult() + val incompleteResult = + if (streamResult is StreamIncompleteResult) { + streamResult + } else { + null + } + // TODO: Bit of smell here, suggests we should be fetching the StreamLoader + // lazily+unconditionally + // through the DestinationWriter (via an injected wrapper?) + syncManager.getStreamLoaderOrNull(stream.descriptor)?.close(incompleteResult) + ?: log.warn { + "StreamLoader not found for stream ${stream.descriptor}, cannot call close." + } + exceptionHandler.handleSyncFailure(exception) + } +} + +interface FailStreamTaskFactory { + fun make( + exceptionHandler: DestinationTaskLauncherExceptionHandler, + exception: Exception, + stream: DestinationStream + ): FailStreamTask +} + +@Singleton +@Secondary +class DefaultFailStreamTaskFactory(private val syncManager: SyncManager) : FailStreamTaskFactory { + override fun make( + exceptionHandler: DestinationTaskLauncherExceptionHandler, + exception: Exception, + stream: DestinationStream + ): FailStreamTask { + return DefaultFailStreamTask(exceptionHandler, exception, syncManager, stream) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailSyncTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailSyncTask.kt new file mode 100644 index 0000000000000..f406706524620 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailSyncTask.kt @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.write.DestinationWriter +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton + +interface FailSyncTask : Task + +/** + * FailSyncTask is a task that is executed when a sync fails. It is responsible for cleaning up + * resources and reporting the failure. + */ +class DefaultFailSyncTask( + private val exceptionHandler: DestinationTaskLauncherExceptionHandler, + private val destinationWriter: DestinationWriter, + private val exception: Exception, + private val syncManager: SyncManager +) : FailSyncTask { + override suspend fun execute() { + val result = syncManager.markFailed(exception) + destinationWriter.teardown(result) + exceptionHandler.stop() + } +} + +interface FailSyncTaskFactory { + fun make( + exceptionHandler: DestinationTaskLauncherExceptionHandler, + exception: Exception + ): FailSyncTask +} + +@Singleton +@Secondary +class DefaultFailSyncTaskFactory( + private val syncManager: SyncManager, + private val destinationWriter: DestinationWriter +) : FailSyncTaskFactory { + override fun make( + exceptionHandler: DestinationTaskLauncherExceptionHandler, + exception: Exception + ): FailSyncTask { + return DefaultFailSyncTask(exceptionHandler, destinationWriter, exception, syncManager) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/OpenStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/OpenStreamTask.kt index 5c55464507306..f11ff0df3066f 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/OpenStreamTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/OpenStreamTask.kt @@ -21,7 +21,7 @@ interface OpenStreamTask : StreamTask class DefaultOpenStreamTask( private val destinationWriter: DestinationWriter, private val syncManager: SyncManager, - private val stream: DestinationStream, + override val stream: DestinationStream, private val taskLauncher: DestinationTaskLauncher ) : OpenStreamTask { override suspend fun execute() { diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessBatchTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessBatchTask.kt index 370de18e97b2f..feb4baf6336e3 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessBatchTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessBatchTask.kt @@ -17,7 +17,7 @@ interface ProcessBatchTask : StreamTask class DefaultProcessBatchTask( private val syncManager: SyncManager, private val batchEnvelope: BatchEnvelope<*>, - private val stream: DestinationStream, + override val stream: DestinationStream, private val taskLauncher: DestinationTaskLauncher ) : ProcessBatchTask { override suspend fun execute() { diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessRecordsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessRecordsTask.kt index 86e03a0a51042..f1670df3de1da 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessRecordsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessRecordsTask.kt @@ -32,7 +32,7 @@ interface ProcessRecordsTask : StreamTask * moved to the task launcher. */ class DefaultProcessRecordsTask( - private val stream: DestinationStream, + override val stream: DestinationStream, private val taskLauncher: DestinationTaskLauncher, private val fileEnvelope: BatchEnvelope, private val deserializer: Deserializer, diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt index acc8ecbac7ca5..5a4bbbf0a5ef4 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt @@ -21,7 +21,6 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.runningFold import kotlinx.coroutines.flow.toList import kotlinx.coroutines.withContext -import kotlinx.coroutines.yield interface SpillToDiskTask : StreamTask @@ -36,7 +35,7 @@ class DefaultSpillToDiskTask( private val tmpFileProvider: TempFileProvider, private val queueReader: MessageQueueReader, - private val stream: DestinationStream, + override val stream: DestinationStream, private val launcher: DestinationTaskLauncher ) : SpillToDiskTask { private val log = KotlinLogging.logger {} @@ -59,60 +58,52 @@ class DefaultSpillToDiskTask( } override suspend fun execute() { - do { - val (path, result) = - withContext(Dispatchers.IO) { - val tmpFile = - tmpFileProvider.createTempFile( - config.tmpFileDirectory, - config.firstStageTmpFilePrefix, - config.firstStageTmpFileSuffix - ) - val result = - tmpFile.toFileWriter().use { - queueReader - .readChunk(stream.descriptor, config.recordBatchSizeBytes) - .runningFold(ReadResult()) { (range, sizeBytes, _), wrapped -> - when (wrapped) { - is StreamRecordWrapped -> { - val nextRange = withIndex(range, wrapped.index) - it.write(wrapped.record.serialized) - it.write("\n") - ReadResult(nextRange, sizeBytes + wrapped.sizeBytes) - } - is StreamCompleteWrapped -> { - val nextRange = withIndex(range, wrapped.index) - return@runningFold ReadResult( - nextRange, - sizeBytes, - true - ) - } + val (path, result) = + withContext(Dispatchers.IO) { + val tmpFile = + tmpFileProvider.createTempFile( + config.tmpFileDirectory, + config.firstStageTmpFilePrefix, + config.firstStageTmpFileSuffix + ) + val result = + tmpFile.toFileWriter().use { + queueReader + .readChunk(stream.descriptor, config.recordBatchSizeBytes) + .runningFold(ReadResult()) { (range, sizeBytes, _), wrapped -> + when (wrapped) { + is StreamRecordWrapped -> { + val nextRange = withIndex(range, wrapped.index) + it.write(wrapped.record.serialized) + it.write("\n") + ReadResult(nextRange, sizeBytes + wrapped.sizeBytes) + } + is StreamCompleteWrapped -> { + val nextRange = withIndex(range, wrapped.index) + return@runningFold ReadResult(nextRange, sizeBytes, true) } } - .flowOn(Dispatchers.IO) - .toList() - } - Pair(tmpFile, result.last()) - } + } + .flowOn(Dispatchers.IO) + .toList() + } + Pair(tmpFile, result.last()) + } - /** Handle the result */ - val (range, sizeBytes, endOfStream) = result + /** Handle the result */ + val (range, sizeBytes, endOfStream) = result - log.info { "Finished writing $range records (${sizeBytes}b) to $path" } + log.info { "Finished writing $range records (${sizeBytes}b) to $path" } - // This could happen if the chunk only contained end-of-stream - if (range == null) { - // We read 0 records, do nothing - return - } - - val batch = SpilledRawMessagesLocalFile(path, sizeBytes) - val wrapped = BatchEnvelope(batch, range) - launcher.handleNewSpilledFile(stream, wrapped) + // This could happen if the chunk only contained end-of-stream + if (range == null) { + // We read 0 records, do nothing + return + } - yield() - } while (!endOfStream) + val batch = SpilledRawMessagesLocalFile(path, sizeBytes) + val wrapped = BatchEnvelope(batch, range) + launcher.handleNewSpilledFile(stream, wrapped, endOfStream) } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt index 5c93a1447085d..8ae2c9376a5eb 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt @@ -35,6 +35,7 @@ class TaskRunner { launch { log.info { "Executing task: $task" } task.execute() + log.info { "Task completed: $task" } } } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TeardownTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TeardownTask.kt index 83f9fbf65af38..7e1e0dfcbe666 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TeardownTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TeardownTask.kt @@ -35,11 +35,17 @@ class DefaultTeardownTask( // Run the task exactly once, and only after all streams have closed. if (teardownHasRun.compareAndSet(false, true)) { - syncManager.awaitAllStreamsClosed() - log.info { "Starting teardown task" } + log.info { "Teardown task awaiting stream completion" } + if (!syncManager.awaitAllStreamsCompletedSuccessfully()) { + log.info { "Streams failed to complete successfully, doing nothing." } + return + } + log.info { "Starting teardown task" } destination.teardown() - taskLauncher.handleTeardownComplete() + log.info { "Teardown task complete, marking sync succeeded." } + syncManager.markSucceeded() + taskLauncher.stop() } } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/DestinationWriter.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/DestinationWriter.kt index 5d8f9c737e59b..50018395d580f 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/DestinationWriter.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/DestinationWriter.kt @@ -5,6 +5,7 @@ package io.airbyte.cdk.write import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.state.SyncFailure import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton @@ -20,7 +21,8 @@ interface DestinationWriter { fun createStreamLoader(stream: DestinationStream): StreamLoader // Called once at the end of the job, unconditionally. - suspend fun teardown(succeeded: Boolean = true) {} + // NOTE: we don't pass Success here, because it depends on this completing successfully. + suspend fun teardown(syncFailure: SyncFailure? = null) {} } @Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/StreamLoader.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/StreamLoader.kt index 6e35c0cea99f1..ed28623a3dd8d 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/StreamLoader.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/StreamLoader.kt @@ -8,6 +8,7 @@ import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.DestinationRecord import io.airbyte.cdk.message.SimpleBatch +import io.airbyte.cdk.state.StreamIncompleteResult /** * Implementor interface. The framework calls open and close once per stream at the beginning and @@ -36,7 +37,5 @@ interface StreamLoader { suspend fun start() {} suspend fun processRecords(records: Iterator, totalSizeBytes: Long): Batch suspend fun processBatch(batch: Batch): Batch = SimpleBatch(Batch.State.COMPLETE) - suspend fun finalize() {} - - suspend fun close(failedBatches: List = emptyList()) {} + suspend fun close(streamFailure: StreamIncompleteResult? = null) {} } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt index 5c17e796004c5..969bca6ba0df1 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt @@ -6,13 +6,20 @@ package io.airbyte.cdk.write import io.airbyte.cdk.Operation import io.airbyte.cdk.message.DestinationMessage +import io.airbyte.cdk.output.ExceptionHandler +import io.airbyte.cdk.output.OutputConsumer +import io.airbyte.cdk.state.SyncFailure +import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.state.SyncSuccess import io.airbyte.cdk.task.TaskLauncher import io.airbyte.cdk.task.TaskRunner +import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Factory import io.micronaut.context.annotation.Requires import io.micronaut.context.annotation.Secondary import java.io.InputStream import javax.inject.Singleton +import kotlin.system.exitProcess import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking @@ -26,15 +33,38 @@ class WriteOperation( private val inputConsumer: InputConsumer, private val taskLauncher: TaskLauncher, private val taskRunner: TaskRunner, + private val syncManager: SyncManager, + private val exceptionHandler: ExceptionHandler, + private val outputConsumer: OutputConsumer ) : Operation { + val log = KotlinLogging.logger {} + override fun execute() { - runBlocking { - launch { inputConsumer.run() } + runCatching { + runBlocking { + launch { inputConsumer.run() } + + launch { taskLauncher.start() } - launch { taskLauncher.start() } + launch { taskRunner.run() } - launch { taskRunner.run() } - } + when (val result = syncManager.awaitSyncResult()) { + is SyncSuccess -> exitProcess(0) + is SyncFailure -> { + log.error { "Caught exception during sync: ${result.syncFailure}" } + val errorMessage = exceptionHandler.handle(result.syncFailure) + outputConsumer.accept(errorMessage) + exitProcess(1) + } + } + } + } + .onFailure { + log.error { "Uncaught exception during sync: $it" } + val errorMessage = exceptionHandler.handle(it) + outputConsumer.accept(errorMessage) + exitProcess(1) + } } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt index 5e06de417b506..d4d175661bb3a 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt @@ -11,30 +11,29 @@ import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 import io.airbyte.cdk.data.NullValue import io.airbyte.cdk.state.CheckpointManager -import io.airbyte.cdk.state.MockStreamManager -import io.airbyte.cdk.state.MockSyncManager +import io.airbyte.cdk.state.SyncManager import io.micronaut.context.annotation.Prototype import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject +import jakarta.inject.Singleton import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test @MicronautTest( rebuildContext = true, - environments = - ["DestinationMessageQueueWriterTest", "MockSyncManager", "MockDestinationCatalog"] + environments = ["DestinationMessageQueueWriterTest", "MockDestinationCatalog"] ) class DestinationMessageQueueWriterTest { @Inject lateinit var queueWriterFactory: TestDestinationMessageQueueWriterFactory - @Prototype + @Singleton @Requires(env = ["DestinationMessageQueueWriterTest"]) class TestDestinationMessageQueueWriterFactory( private val catalog: DestinationCatalog, val messageQueue: MockMessageQueue, - val streamsManager: MockSyncManager, + val streamsManager: SyncManager, val checkpointManager: MockCheckpointManager ) { fun make(): DestinationMessageQueueWriter { @@ -161,12 +160,8 @@ class DestinationMessageQueueWriterTest { val channel2 = queueWriterFactory.messageQueue.getChannel(stream2.descriptor) as MockQueueChannel - val manager1 = - queueWriterFactory.streamsManager.getStreamManager(stream1.descriptor) - as MockStreamManager - val manager2 = - queueWriterFactory.streamsManager.getStreamManager(stream2.descriptor) - as MockStreamManager + val manager1 = queueWriterFactory.streamsManager.getStreamManager(stream1.descriptor) + val manager2 = queueWriterFactory.streamsManager.getStreamManager(stream2.descriptor) (0 until 10).forEach { writer.publish(makeRecord(stream1, "test${it}"), it * 2L) } Assertions.assertEquals(10, channel1.messages.size) @@ -176,10 +171,10 @@ class DestinationMessageQueueWriterTest { } Assertions.assertEquals(expectedRecords, channel1.messages) - Assertions.assertEquals(10L, manager1.countedRecords) + Assertions.assertEquals(10L, manager1.recordCount()) Assertions.assertEquals(emptyList(), channel2.messages) - Assertions.assertEquals(0L, manager2.countedRecords) + Assertions.assertEquals(0L, manager2.recordCount()) writer.publish(makeRecord(stream2, "test"), 1L) writer.publish(makeStreamComplete(stream1), 0L) @@ -187,10 +182,10 @@ class DestinationMessageQueueWriterTest { listOf(StreamRecordWrapped(0, 1L, makeRecord(stream2, "test"))), channel2.messages ) - Assertions.assertEquals(1L, manager2.countedRecords) + Assertions.assertEquals(1L, manager2.recordCount()) - Assertions.assertEquals(manager2.countedEndOfStream, 0L) - Assertions.assertEquals(manager1.countedEndOfStream, 1L) + Assertions.assertEquals(manager2.endOfStreamRead(), false) + Assertions.assertEquals(manager1.endOfStreamRead(), true) Assertions.assertEquals(11, channel1.messages.size) Assertions.assertEquals(channel1.messages[10], StreamCompleteWrapped(10)) } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt index a192257bc9a41..e295a1f7cc4ed 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt @@ -5,11 +5,15 @@ package io.airbyte.cdk.state import com.google.common.collect.Range +import com.google.common.collect.TreeRangeSet import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.message.Batch +import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.MessageConverter +import io.airbyte.cdk.message.SimpleBatch import io.micronaut.context.annotation.Prototype import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject @@ -28,7 +32,6 @@ import org.junit.jupiter.params.provider.ArgumentsSource environments = [ "CheckpointManagerTest", - "MockSyncManager", "MockDestinationCatalog", ] ) @@ -77,7 +80,7 @@ class CheckpointManagerTest { @Prototype class TestCheckpointManager( override val catalog: DestinationCatalog, - override val syncManager: MockSyncManager, + override val syncManager: SyncManager, override val outputFactory: MessageConverter, override val outputConsumer: MockOutputConsumer ) : StreamsCheckpointManager() @@ -436,8 +439,14 @@ class CheckpointManagerTest { checkpointManager.addGlobalCheckpoint(it.streamIndexes, it.toMockCheckpointIn()) } is FlushPoint -> { + // Mock the persisted ranges by updating the state of the stream managers it.persistedRanges.forEach { (stream, ranges) -> - checkpointManager.syncManager.addPersistedRanges(stream, ranges) + val mockBatch = SimpleBatch(state = Batch.State.PERSISTED) + val rangeSet = TreeRangeSet.create(ranges) + val mockBatchEnvelope = BatchEnvelope(batch = mockBatch, ranges = rangeSet) + checkpointManager.syncManager + .getStreamManager(stream.descriptor) + .updateBatchState(mockBatchEnvelope) } checkpointManager.flushReadyCheckpointMessages() } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockSyncManager.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockSyncManager.kt deleted file mode 100644 index dafe1ce66cf3c..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockSyncManager.kt +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.state - -import com.google.common.collect.Range -import com.google.common.collect.RangeSet -import com.google.common.collect.TreeRangeSet -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.write.StreamLoader -import io.micronaut.context.annotation.Requires -import jakarta.inject.Singleton -import java.util.concurrent.atomic.AtomicBoolean -import kotlinx.coroutines.CompletableDeferred - -@Singleton -@Requires(env = ["MockSyncManager", "MockDestinationCatalog"]) -class MockSyncManager(catalog: DestinationCatalog) : SyncManager { - private val mockManagers = catalog.streams.associate { it.descriptor to MockStreamManager() } - private val streamLoaders = mutableMapOf() - - fun addPersistedRanges(stream: DestinationStream, ranges: List>) { - mockManagers[stream.descriptor]!!.persistedRanges.addAll(ranges) - } - - override fun getStreamManager(stream: DestinationStream.Descriptor): StreamManager { - return mockManagers[stream] ?: throw IllegalArgumentException("Stream not found: $stream") - } - - override suspend fun awaitAllStreamsClosed() { - mockManagers.forEach { (_, manager) -> manager.awaitStreamClosed() } - } - - override fun registerStartedStreamLoader(streamLoader: StreamLoader) { - throw NotImplementedError() - } - - override suspend fun getOrAwaitStreamLoader( - stream: DestinationStream.Descriptor - ): StreamLoader { - return streamLoaders[stream] ?: throw IllegalArgumentException("Stream not found: $stream") - } - - fun mockGetOrAwaitStreamLoader(streamLoader: StreamLoader) { - streamLoaders[streamLoader.stream.descriptor] = streamLoader - } -} - -/** - * The only thing we really need is `areRecordsPersistedUntil`. (Technically we're emulating the @ - * [StreamManager] behavior here, since the state manager doesn't actually know what ranges are - * closed, but less than that would make the test unrealistic.) - */ -class MockStreamManager : StreamManager { - var persistedRanges: RangeSet = TreeRangeSet.create() - private var batchProcessingComplete: AtomicBoolean = AtomicBoolean(false) - val streamLatch = CompletableDeferred() - var countedRecords: Long = 0 - var countedEndOfStream: Long = 0 - var lastCheckpoint: Long = 0 - - fun mockBatchProcessingComplete(value: Boolean = true) { - return batchProcessingComplete.set(value) - } - - override fun countRecordIn(): Long { - return (countedRecords++) - } - - override fun countEndOfStream(): Long { - countedEndOfStream++ - return countedRecords - } - - override fun markCheckpoint(): Pair { - val checkpoint = countedRecords - val count = checkpoint - lastCheckpoint - lastCheckpoint = checkpoint - - return Pair(checkpoint, count) - } - - override fun updateBatchState(batch: BatchEnvelope) { - batch.ranges.asRanges().forEach { persistedRanges.add(it) } - } - - override fun isBatchProcessingComplete(): Boolean { - return batchProcessingComplete.get() - } - - override fun areRecordsPersistedUntil(index: Long): Boolean { - return persistedRanges.encloses(Range.closedOpen(0, index)) - } - - override fun markClosed() { - streamLatch.complete(Unit) - } - - override fun streamIsClosed(): Boolean { - throw NotImplementedError() - } - - override suspend fun awaitStreamClosed() { - streamLatch.await() - } -} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt new file mode 100644 index 0000000000000..335d9d50688af --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.state + +import com.google.common.collect.Range +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 +import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.message.Batch +import io.airbyte.cdk.message.BatchEnvelope +import io.airbyte.cdk.message.SimpleBatch +import java.util.stream.Stream +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtensionContext +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.ArgumentsProvider +import org.junit.jupiter.params.provider.ArgumentsSource + +class StreamManagerTest { + @Test + fun testCountRecordsAndCheckpoint() { + val manager1 = DefaultStreamManager(stream1) + val manager2 = DefaultStreamManager(stream2) + + // Incrementing once yields (n, n) + repeat(10) { manager1.countRecordIn() } + val (index, count) = manager1.markCheckpoint() + + Assertions.assertEquals(10, index) + Assertions.assertEquals(10, count) + + // Incrementing a second time yields (n + m, m) + repeat(5) { manager1.countRecordIn() } + val (index2, count2) = manager1.markCheckpoint() + + Assertions.assertEquals(15, index2) + Assertions.assertEquals(5, count2) + + // Never incrementing yields (0, 0) + val (index3, count3) = manager2.markCheckpoint() + + Assertions.assertEquals(0, index3) + Assertions.assertEquals(0, count3) + + // Incrementing twice in a row yields (n + m + 0, 0) + val (index4, count4) = manager1.markCheckpoint() + + Assertions.assertEquals(15, index4) + Assertions.assertEquals(0, count4) + } + + @Test + fun testMarkSucceeded() = runTest { + val manager = DefaultStreamManager(stream1) + val channel = Channel(Channel.UNLIMITED) + + launch { channel.send(manager.awaitStreamResult() is StreamSucceeded) } + + delay(500) + Assertions.assertTrue(channel.tryReceive().isFailure) + Assertions.assertThrows(IllegalStateException::class.java) { manager.markSucceeded() } + manager.markEndOfStream() + manager.markSucceeded() + Assertions.assertTrue(channel.receive()) + + Assertions.assertEquals(StreamSucceeded, manager.awaitStreamResult()) + } + + @Test + fun testMarkFailure() = runTest { + val manager = DefaultStreamManager(stream1) + val channel = Channel(Channel.UNLIMITED) + + launch { channel.send(manager.awaitStreamResult() is StreamSucceeded) } + + delay(500) + Assertions.assertTrue(channel.tryReceive().isFailure) + manager.markFailed(Exception("test")) + Assertions.assertFalse(channel.receive()) + + Assertions.assertTrue(manager.awaitStreamResult() is StreamFailed) + } + + @Test + fun testMarkKilled() = runTest { + val manager = DefaultStreamManager(stream1) + val channel = Channel(Channel.UNLIMITED) + + launch { channel.send(manager.awaitStreamResult() is StreamSucceeded) } + + delay(500) + Assertions.assertTrue(channel.tryReceive().isFailure) + manager.markKilled(Exception("test")) + Assertions.assertFalse(channel.receive()) + + Assertions.assertTrue(manager.awaitStreamResult() is StreamKilled) + } + + class TestUpdateBatchStateProvider : ArgumentsProvider { + override fun provideArguments(context: ExtensionContext): Stream { + return listOf( + TestCase( + "Single stream, single batch", + listOf( + Pair(stream1, SetRecordCount(10)), + Pair(stream1, AddPersisted(0, 9)), + Pair(stream1, ExpectPersistedUntil(9)), + Pair(stream1, ExpectPersistedUntil(10)), + Pair(stream1, ExpectComplete(false)), + Pair(stream1, ExpectPersistedUntil(11, false)), + Pair(stream2, ExpectPersistedUntil(10, false)), + ) + ), + TestCase( + "Single stream, multiple batches", + listOf( + Pair(stream1, SetRecordCount(10)), + Pair(stream1, AddPersisted(0, 4)), + Pair(stream1, ExpectPersistedUntil(4)), + Pair(stream1, AddPersisted(5, 9)), + Pair(stream1, ExpectPersistedUntil(9)), + Pair(stream1, ExpectPersistedUntil(10)), + Pair(stream1, ExpectComplete(false)), + Pair(stream1, AddComplete(0, 9)), + Pair(stream1, ExpectComplete(false)), + Pair(stream1, SetEndOfStream), + Pair(stream1, ExpectComplete(true)), + Pair(stream1, ExpectPersistedUntil(11, false)), + Pair(stream2, ExpectPersistedUntil(10, false)), + ) + ), + TestCase( + "Single stream, multiple batches, out of order", + listOf( + Pair(stream1, SetRecordCount(10)), + Pair(stream1, AddPersisted(5, 9)), + Pair(stream1, ExpectPersistedUntil(10, false)), + Pair(stream1, AddPersisted(0, 4)), + Pair(stream1, ExpectPersistedUntil(10)), + Pair(stream1, ExpectComplete(false)), + Pair(stream1, SetEndOfStream), + Pair(stream1, AddComplete(5, 9)), + Pair(stream1, ExpectComplete(false)), + Pair(stream1, AddComplete(0, 4)), + Pair(stream1, ExpectComplete(true)), + ) + ), + TestCase( + "multiple streams", + listOf( + Pair(stream1, SetRecordCount(10)), + Pair(stream2, SetRecordCount(20)), + Pair(stream2, AddPersisted(0, 9)), + Pair(stream2, ExpectPersistedUntil(10, true)), + Pair(stream1, ExpectPersistedUntil(10, false)), + Pair(stream2, SetEndOfStream), + Pair(stream2, ExpectComplete(false)), + Pair(stream1, AddPersisted(0, 9)), + Pair(stream1, ExpectPersistedUntil(10)), + Pair(stream1, ExpectComplete(false)), + Pair(stream2, AddComplete(10, 20)), + Pair(stream2, ExpectComplete(false)), + Pair(stream1, SetEndOfStream), + Pair(stream1, ExpectComplete(false)), + Pair(stream1, AddComplete(0, 9)), + Pair(stream1, ExpectComplete(true)), + Pair(stream2, AddComplete(0, 9)), + Pair(stream2, ExpectPersistedUntil(20, true)), + Pair(stream2, ExpectComplete(true)), + ) + ) + ) + .map { Arguments.of(it) } + .stream() + } + } + + // TODO: break these out into non-parameterized tests, factor out mixing streams. + // (It's irrelevant if testing at the single manager level.) + sealed class TestEvent + data class SetRecordCount(val count: Long) : TestEvent() + data object SetEndOfStream : TestEvent() + data class AddPersisted(val firstIndex: Long, val lastIndex: Long) : TestEvent() + data class AddComplete(val firstIndex: Long, val lastIndex: Long) : TestEvent() + data class ExpectPersistedUntil(val end: Long, val expectation: Boolean = true) : TestEvent() + data class ExpectComplete(val expectation: Boolean = true) : TestEvent() + + data class TestCase( + val name: String, + val events: List>, + ) + @ParameterizedTest + @ArgumentsSource(TestUpdateBatchStateProvider::class) + fun testUpdateBatchState(testCase: TestCase) { + val managers = + mapOf( + stream1.descriptor to DefaultStreamManager(stream1), + stream2.descriptor to DefaultStreamManager(stream2) + ) + testCase.events.forEach { (stream, event) -> + val manager = managers[stream.descriptor]!! + when (event) { + is SetRecordCount -> repeat(event.count.toInt()) { manager.countRecordIn() } + is SetEndOfStream -> manager.markEndOfStream() + is AddPersisted -> + manager.updateBatchState( + BatchEnvelope( + SimpleBatch(Batch.State.PERSISTED), + Range.closed(event.firstIndex, event.lastIndex) + ) + ) + is AddComplete -> + manager.updateBatchState( + BatchEnvelope( + SimpleBatch(Batch.State.COMPLETE), + Range.closed(event.firstIndex, event.lastIndex) + ) + ) + is ExpectPersistedUntil -> + Assertions.assertEquals( + event.expectation, + manager.areRecordsPersistedUntil(event.end), + "$stream: ${testCase.name}: ${event.end}" + ) + is ExpectComplete -> + Assertions.assertEquals( + event.expectation, + manager.isBatchProcessingComplete(), + "$stream: ${testCase.name}" + ) + } + } + } + + @Test + fun testCannotUpdateOrCloseReadClosedStream() { + val manager = DefaultStreamManager(stream1) + + // Can't mark success before end-of-stream + Assertions.assertThrows(IllegalStateException::class.java) { manager.markSucceeded() } + + manager.countRecordIn() + manager.markEndOfStream() + + // Can't update after end-of-stream + Assertions.assertThrows(IllegalStateException::class.java) { manager.countRecordIn() } + Assertions.assertThrows(IllegalStateException::class.java) { manager.markEndOfStream() } + + // Can close now + Assertions.assertDoesNotThrow(manager::markSucceeded) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerTest.kt index 67afaa92a4387..ea017a0f934e2 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerTest.kt @@ -4,310 +4,125 @@ package io.airbyte.cdk.state -import com.google.common.collect.Range -import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.SimpleBatch -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.test.util.CoroutineTestUtils import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject -import java.util.concurrent.atomic.AtomicBoolean -import java.util.stream.Stream import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.test.runTest -import kotlinx.coroutines.withTimeout import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtensionContext -import org.junit.jupiter.params.ParameterizedTest -import org.junit.jupiter.params.provider.Arguments -import org.junit.jupiter.params.provider.ArgumentsProvider -import org.junit.jupiter.params.provider.ArgumentsSource -@MicronautTest(environments = ["SyncManagerTest", "MockDestinationCatalog"]) +@MicronautTest( + rebuildContext = true, + environments = + [ + "SyncManagerTest", + "MockDestinationCatalog", + ] +) class SyncManagerTest { - @Inject lateinit var catalog: DestinationCatalog - - @Test - fun testCountRecordsAndCheckpoint() { - val streamsManager = SyncManagerFactory(catalog).make() - val manager1 = streamsManager.getStreamManager(stream1.descriptor) - val manager2 = streamsManager.getStreamManager(stream2.descriptor) - - // Incrementing once yields (n, n) - repeat(10) { manager1.countRecordIn() } - val (index, count) = manager1.markCheckpoint() - - Assertions.assertEquals(10, index) - Assertions.assertEquals(10, count) - - // Incrementing a second time yields (n + m, m) - repeat(5) { manager1.countRecordIn() } - val (index2, count2) = manager1.markCheckpoint() - - Assertions.assertEquals(15, index2) - Assertions.assertEquals(5, count2) - - // Never incrementing yields (0, 0) - val (index3, count3) = manager2.markCheckpoint() - - Assertions.assertEquals(0, index3) - Assertions.assertEquals(0, count3) - - // Incrementing twice in a row yields (n + m + 0, 0) - val (index4, count4) = manager1.markCheckpoint() - - Assertions.assertEquals(15, index4) - Assertions.assertEquals(0, count4) - } + @Inject lateinit var syncManager: SyncManager @Test fun testGettingNonexistentManagerFails() { - val streamsManager = SyncManagerFactory(catalog).make() Assertions.assertThrows(IllegalArgumentException::class.java) { - streamsManager.getStreamManager(DestinationStream.Descriptor("test", "non-existent")) + syncManager.getStreamManager(DestinationStream.Descriptor("test", "non-existent")) } } - sealed class TestEvent - data class SetRecordCount(val count: Long) : TestEvent() - data object SetEndOfStream : TestEvent() - data class AddPersisted(val firstIndex: Long, val lastIndex: Long) : TestEvent() - data class AddComplete(val firstIndex: Long, val lastIndex: Long) : TestEvent() - data class ExpectPersistedUntil(val end: Long, val expectation: Boolean = true) : TestEvent() - data class ExpectComplete(val expectation: Boolean = true) : TestEvent() + // TODO: Don't test getting the stream loader here; A) it's basically just wrapping completable + // deferred; B) It should probably move into a writer wrapper. - data class TestCase( - val name: String, - val events: List>, - ) + @Test + fun testAwaitAllStreamsCompletedSuccessfully() = runTest { + val manager1 = syncManager.getStreamManager(stream1.descriptor) + val manager2 = syncManager.getStreamManager(stream2.descriptor) + val completionChannel = Channel(Channel.UNLIMITED) - class TestUpdateBatchStateProvider : ArgumentsProvider { - override fun provideArguments(context: ExtensionContext): Stream { - return listOf( - TestCase( - "Single stream, single batch", - listOf( - Pair(stream1, SetRecordCount(10)), - Pair(stream1, AddPersisted(0, 9)), - Pair(stream1, ExpectPersistedUntil(9)), - Pair(stream1, ExpectPersistedUntil(10)), - Pair(stream1, ExpectComplete(false)), - Pair(stream1, ExpectPersistedUntil(11, false)), - Pair(stream2, ExpectPersistedUntil(10, false)), - ) - ), - TestCase( - "Single stream, multiple batches", - listOf( - Pair(stream1, SetRecordCount(10)), - Pair(stream1, AddPersisted(0, 4)), - Pair(stream1, ExpectPersistedUntil(4)), - Pair(stream1, AddPersisted(5, 9)), - Pair(stream1, ExpectPersistedUntil(9)), - Pair(stream1, ExpectPersistedUntil(10)), - Pair(stream1, ExpectComplete(false)), - Pair(stream1, AddComplete(0, 9)), - Pair(stream1, ExpectComplete(false)), - Pair(stream1, SetEndOfStream), - Pair(stream1, ExpectComplete(true)), - Pair(stream1, ExpectPersistedUntil(11, false)), - Pair(stream2, ExpectPersistedUntil(10, false)), - ) - ), - TestCase( - "Single stream, multiple batches, out of order", - listOf( - Pair(stream1, SetRecordCount(10)), - Pair(stream1, AddPersisted(5, 9)), - Pair(stream1, ExpectPersistedUntil(10, false)), - Pair(stream1, AddPersisted(0, 4)), - Pair(stream1, ExpectPersistedUntil(10)), - Pair(stream1, ExpectComplete(false)), - Pair(stream1, SetEndOfStream), - Pair(stream1, AddComplete(5, 9)), - Pair(stream1, ExpectComplete(false)), - Pair(stream1, AddComplete(0, 4)), - Pair(stream1, ExpectComplete(true)), - ) - ), - TestCase( - "multiple streams", - listOf( - Pair(stream1, SetRecordCount(10)), - Pair(stream2, SetRecordCount(20)), - Pair(stream2, AddPersisted(0, 9)), - Pair(stream2, ExpectPersistedUntil(10, true)), - Pair(stream1, ExpectPersistedUntil(10, false)), - Pair(stream2, SetEndOfStream), - Pair(stream2, ExpectComplete(false)), - Pair(stream1, AddPersisted(0, 9)), - Pair(stream1, ExpectPersistedUntil(10)), - Pair(stream1, ExpectComplete(false)), - Pair(stream2, AddComplete(10, 20)), - Pair(stream2, ExpectComplete(false)), - Pair(stream1, SetEndOfStream), - Pair(stream1, ExpectComplete(false)), - Pair(stream1, AddComplete(0, 9)), - Pair(stream1, ExpectComplete(true)), - Pair(stream2, AddComplete(0, 9)), - Pair(stream2, ExpectPersistedUntil(20, true)), - Pair(stream2, ExpectComplete(true)), - ) - ) - ) - .map { Arguments.of(it) } - .stream() - } - } + manager1.markEndOfStream() + manager2.markEndOfStream() - @ParameterizedTest - @ArgumentsSource(TestUpdateBatchStateProvider::class) - fun testUpdateBatchState(testCase: TestCase) { - val streamsManager = SyncManagerFactory(catalog).make() - testCase.events.forEach { (stream, event) -> - val manager = streamsManager.getStreamManager(stream.descriptor) - when (event) { - is SetRecordCount -> repeat(event.count.toInt()) { manager.countRecordIn() } - is SetEndOfStream -> manager.countEndOfStream() - is AddPersisted -> - manager.updateBatchState( - BatchEnvelope( - SimpleBatch(Batch.State.PERSISTED), - Range.closed(event.firstIndex, event.lastIndex) - ) - ) - is AddComplete -> - manager.updateBatchState( - BatchEnvelope( - SimpleBatch(Batch.State.COMPLETE), - Range.closed(event.firstIndex, event.lastIndex) - ) - ) - is ExpectPersistedUntil -> - Assertions.assertEquals( - event.expectation, - manager.areRecordsPersistedUntil(event.end), - "$stream: ${testCase.name}: ${event.end}" - ) - is ExpectComplete -> - Assertions.assertEquals( - event.expectation, - manager.isBatchProcessingComplete(), - "$stream: ${testCase.name}" - ) - } - } + launch { completionChannel.send(syncManager.awaitAllStreamsCompletedSuccessfully()) } + + delay(500) + Assertions.assertTrue(completionChannel.tryReceive().isFailure) + manager1.markSucceeded() + delay(500) + Assertions.assertTrue(completionChannel.tryReceive().isFailure) + manager2.markSucceeded() + Assertions.assertTrue(completionChannel.receive()) } @Test - fun testCannotUpdateOrCloseReadClosedStream() { - val streamsManager = SyncManagerFactory(catalog).make() - val manager = streamsManager.getStreamManager(stream1.descriptor) + fun testAwaitAllStreamsCompletedSuccessfullyWithFailure() = runTest { + val manager1 = syncManager.getStreamManager(stream1.descriptor) + val manager2 = syncManager.getStreamManager(stream2.descriptor) - // Can't close before end-of-stream - Assertions.assertThrows(IllegalStateException::class.java) { manager.markClosed() } + val completionChannel = Channel(Channel.UNLIMITED) - manager.countEndOfStream() + launch { completionChannel.send(syncManager.awaitAllStreamsCompletedSuccessfully()) } - // Can't update after end-of-stream - Assertions.assertThrows(IllegalStateException::class.java) { manager.countRecordIn() } + manager1.markEndOfStream() + manager2.markEndOfStream() - Assertions.assertThrows(IllegalStateException::class.java) { manager.countEndOfStream() } - - // Can close now - Assertions.assertDoesNotThrow(manager::markClosed) + delay(500) + Assertions.assertTrue(completionChannel.tryReceive().isFailure) + manager1.markSucceeded() + delay(500) + Assertions.assertTrue(completionChannel.tryReceive().isFailure) + manager2.markFailed(RuntimeException()) + Assertions.assertFalse(completionChannel.receive()) } @Test - fun testAwaitStreamClosed() = runTest { - val streamsManager = SyncManagerFactory(catalog).make() - val manager = streamsManager.getStreamManager(stream1.descriptor) - val hasClosed = AtomicBoolean(false) - - val job = launch { - manager.awaitStreamClosed() - hasClosed.set(true) - } - - Assertions.assertFalse(hasClosed.get()) - manager.countEndOfStream() - manager.markClosed() - try { - withTimeout(5000) { job.join() } - } catch (e: Exception) { - Assertions.fail("Stream did not close in time") - } - Assertions.assertTrue(hasClosed.get()) + fun testIsActive() = runTest { + val manager1 = syncManager.getStreamManager(stream1.descriptor) + val manager2 = syncManager.getStreamManager(stream2.descriptor) + + manager1.markEndOfStream() + manager2.markEndOfStream() + + Assertions.assertTrue(syncManager.isActive()) + manager1.markSucceeded() + Assertions.assertTrue(syncManager.isActive()) + manager2.markSucceeded() + Assertions.assertTrue(syncManager.isActive()) + syncManager.markSucceeded() + Assertions.assertFalse(syncManager.isActive()) } @Test - fun testAwaitAllStreamsClosed() = runTest { - val streamsManager = SyncManagerFactory(catalog).make() - val manager1 = streamsManager.getStreamManager(stream1.descriptor) - val manager2 = streamsManager.getStreamManager(stream2.descriptor) - val allHaveClosed = AtomicBoolean(false) + fun testAwaitSyncResult() = runTest { + val manager1 = syncManager.getStreamManager(stream1.descriptor) + val manager2 = syncManager.getStreamManager(stream2.descriptor) - val awaitStream1 = launch { manager1.awaitStreamClosed() } + manager1.markEndOfStream() + manager2.markEndOfStream() - val awaitAllStreams = launch { - streamsManager.awaitAllStreamsClosed() - allHaveClosed.set(true) - } + val completionChannel = Channel(Channel.UNLIMITED) - Assertions.assertFalse(allHaveClosed.get()) - manager1.countEndOfStream() - manager1.markClosed() - try { - withTimeout(5000) { awaitStream1.join() } - } catch (e: Exception) { - Assertions.fail("Stream1 did not close in time") - } - Assertions.assertFalse(allHaveClosed.get()) - manager2.countEndOfStream() - manager2.markClosed() - try { - withTimeout(5000) { awaitAllStreams.join() } - } catch (e: Exception) { - Assertions.fail("Streams did not close in time") - } - Assertions.assertTrue(allHaveClosed.get()) - } + launch { completionChannel.send(syncManager.awaitSyncResult()) } - class MockStreamLoader(override val stream: DestinationStream) : StreamLoader { - override suspend fun processRecords( - records: Iterator, - totalSizeBytes: Long - ): Batch { - throw NotImplementedError() + CoroutineTestUtils.assertThrows(IllegalStateException::class) { + syncManager.markSucceeded() } - } - - @Test - fun testAwaitingStreamLoader() = runTest { - val syncManager = SyncManagerFactory(catalog).make() - val completion = Channel() + Assertions.assertTrue(completionChannel.tryReceive().isFailure) - launch { - syncManager.getOrAwaitStreamLoader(stream1.descriptor) - completion.send(true) + manager1.markSucceeded() + CoroutineTestUtils.assertThrows(IllegalStateException::class) { + syncManager.markSucceeded() } + Assertions.assertTrue(completionChannel.tryReceive().isFailure) - delay(500) - Assertions.assertTrue(completion.tryReceive().isFailure) - - syncManager.registerStartedStreamLoader(MockStreamLoader(stream2)) - delay(500) - Assertions.assertTrue(completion.tryReceive().isFailure) + manager2.markSucceeded() + Assertions.assertTrue(completionChannel.tryReceive().isFailure) - syncManager.registerStartedStreamLoader(MockStreamLoader(stream1)) - Assertions.assertTrue(completion.receive()) + syncManager.markSucceeded() + Assertions.assertEquals(SyncSuccess, completionChannel.receive()) } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherExceptionHandlerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherExceptionHandlerTest.kt new file mode 100644 index 0000000000000..4b59d304585ae --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherExceptionHandlerTest.kt @@ -0,0 +1,226 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.command.DestinationCatalog +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 +import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.test.util.CoroutineTestUtils +import io.micronaut.context.annotation.Primary +import io.micronaut.context.annotation.Requires +import io.micronaut.test.extensions.junit5.annotation.MicronautTest +import jakarta.inject.Inject +import jakarta.inject.Singleton +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test + +@MicronautTest( + rebuildContext = true, + environments = + [ + "DestinationTaskLauncherExceptionHandlerTest", + "MockDestinationCatalog", + ] +) +class DestinationTaskLauncherExceptionHandlerTest { + @Inject lateinit var taskRunner: TaskRunner + @Inject lateinit var exceptionHandler: DestinationTaskLauncherExceptionHandler + + @Singleton + @Primary + @Requires(env = ["DestinationTaskLauncherExceptionHandlerTest"]) + class MockFailStreamTaskFactory : FailStreamTaskFactory { + val didRunFor = Channel>() + + override fun make( + exceptionHandler: DestinationTaskLauncherExceptionHandler, + exception: Exception, + stream: DestinationStream + ): FailStreamTask { + return object : FailStreamTask { + override suspend fun execute() { + didRunFor.send(Pair(stream, exception)) + } + } + } + } + + @Singleton + @Primary + @Requires(env = ["DestinationTaskLauncherExceptionHandlerTest"]) + class MockFailSyncTaskFactory : FailSyncTaskFactory { + val didRunWith = Channel() + + override fun make( + exceptionHandler: DestinationTaskLauncherExceptionHandler, + exception: Exception + ): FailSyncTask { + return object : FailSyncTask { + override suspend fun execute() { + didRunWith.send(exception) + } + } + } + } + + /** + * test surface: validate that the wrapper directs failures in + * - StreamTask(s) to handleStreamFailure (and to an injected Mock FailStreamTask) + * - SyncTask(s) to handleSyncFailure (and to an injected Mock FailSyncTask) + */ + @Test + fun testHandleStreamFailure(mockFailStreamTaskFactory: MockFailStreamTaskFactory) = runTest { + launch { taskRunner.run() } + + val mockTask = + object : StreamTask { + override val stream: DestinationStream = stream1 + + override suspend fun execute() { + throw RuntimeException("StreamTask failure") + } + } + + val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) + launch { wrappedTask.execute() } + val (stream, exception) = mockFailStreamTaskFactory.didRunFor.receive() + Assertions.assertEquals(stream1, stream) + Assertions.assertTrue(exception is RuntimeException) + + taskRunner.close() + } + + @Test + fun testHandleSyncFailure(mockFailSyncTaskFactory: MockFailSyncTaskFactory) = runTest { + launch { taskRunner.run() } + + val mockTask = + object : SyncTask { + override suspend fun execute() { + throw RuntimeException("SyncTask failure") + } + } + + val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) + launch { wrappedTask.execute() } + val exception = mockFailSyncTaskFactory.didRunWith.receive() + Assertions.assertTrue(exception is RuntimeException) + + taskRunner.close() + } + + @Test + fun testSyncFailureBlocksSyncTasks( + mockFailSyncTaskFactory: MockFailSyncTaskFactory, + syncManager: SyncManager + ) = runTest { + launch { taskRunner.run() } + + val innerTaskRan = Channel(Channel.UNLIMITED) + val mockTask = + object : SyncTask { + override suspend fun execute() { + innerTaskRan.send(true) + } + } + + val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) + syncManager.markFailed(RuntimeException("dummy failure")) + launch { wrappedTask.execute() } + delay(1000) + Assertions.assertTrue(mockFailSyncTaskFactory.didRunWith.tryReceive().isFailure) + Assertions.assertTrue(innerTaskRan.tryReceive().isFailure) + + taskRunner.close() + } + + @Test + fun testSyncFailureAfterSuccessThrows(syncManager: SyncManager, catalog: DestinationCatalog) = + runTest { + launch { taskRunner.run() } + + val mockTask = + object : SyncTask { + override suspend fun execute() { + // do nothing + } + } + + val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) + + for (stream in catalog.streams) { + val manager = syncManager.getStreamManager(stream.descriptor) + manager.markEndOfStream() + manager.markSucceeded() + } + syncManager.markSucceeded() + CoroutineTestUtils.assertThrows(IllegalStateException::class) { wrappedTask.execute() } + + taskRunner.close() + } + + @Test + fun testStreamFailureBlocksStreamTasks( + mockFailStreamTaskFactory: MockFailStreamTaskFactory, + syncManager: SyncManager + ) = runTest { + launch { taskRunner.run() } + + val innerTaskRan = Channel(Channel.UNLIMITED) + val mockTask = + object : StreamTask { + override val stream: DestinationStream = stream1 + + override suspend fun execute() { + innerTaskRan.send(true) + } + } + + val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) + val manager = syncManager.getStreamManager(stream1.descriptor) + manager.markEndOfStream() + manager.markFailed(RuntimeException("dummy failure")) + launch { wrappedTask.execute() } + delay(1000) + Assertions.assertTrue(mockFailStreamTaskFactory.didRunFor.tryReceive().isFailure) + Assertions.assertTrue(innerTaskRan.tryReceive().isFailure) + + taskRunner.close() + } + + @Test + fun testStreamFailureAfterSuccessThrows( + mockFailSyncTaskFactory: MockFailSyncTaskFactory, + syncManager: SyncManager + ) = runTest { + launch { taskRunner.run() } + + val mockTask = + object : StreamTask { + override val stream: DestinationStream = stream1 + + override suspend fun execute() { + // do nothing + } + } + + val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) + + val manager = syncManager.getStreamManager(stream1.descriptor) + manager.markEndOfStream() + manager.markSucceeded() + + // This won't throw, because the sync wrapper will catch it and call it a sync error + CoroutineTestUtils.assertDoesNotThrow { wrappedTask.execute() } + Assertions.assertTrue(mockFailSyncTaskFactory.didRunWith.receive() is IllegalStateException) + + taskRunner.close() + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt index 5e1bb34093cd4..a5ea8b7f15d89 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt @@ -13,8 +13,7 @@ import io.airbyte.cdk.file.DefaultLocalFile import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.SpilledRawMessagesLocalFile -import io.airbyte.cdk.state.MockStreamManager -import io.airbyte.cdk.state.MockSyncManager +import io.airbyte.cdk.state.SyncManager import io.micronaut.context.annotation.Replaces import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -37,13 +36,12 @@ import org.junit.jupiter.api.Test [ "DestinationTaskLauncherTest", "MockDestinationCatalog", - "MockSyncManager", ] ) class DestinationTaskLauncherTest { @Inject lateinit var taskRunner: TaskRunner @Inject lateinit var taskLauncher: DestinationTaskLauncher - @Inject lateinit var syncManager: MockSyncManager + @Inject lateinit var syncManager: SyncManager @Inject lateinit var mockExceptionHandler: MockExceptionHandler @Inject lateinit var mockSetupTaskFactory: MockSetupTaskFactory @@ -86,6 +84,7 @@ class DestinationTaskLauncherTest { stream: DestinationStream ): SpillToDiskTask { return object : SpillToDiskTask { + override val stream: DestinationStream = stream override suspend fun execute() { streamHasRun[stream.descriptor]?.send(Unit) } @@ -108,6 +107,7 @@ class DestinationTaskLauncherTest { stream: DestinationStream ): OpenStreamTask { return object : OpenStreamTask { + override val stream: DestinationStream = stream override suspend fun execute() { streamHasRun[stream]?.send(Unit) } @@ -127,6 +127,7 @@ class DestinationTaskLauncherTest { fileEnvelope: BatchEnvelope ): ProcessRecordsTask { return object : ProcessRecordsTask { + override val stream: DestinationStream = stream override suspend fun execute() { hasRun.send(Unit) } @@ -146,6 +147,7 @@ class DestinationTaskLauncherTest { batchEnvelope: BatchEnvelope<*> ): ProcessBatchTask { return object : ProcessBatchTask { + override val stream: DestinationStream = stream override suspend fun execute() { hasRun.send(batchEnvelope) } @@ -164,6 +166,7 @@ class DestinationTaskLauncherTest { stream: DestinationStream, ): CloseStreamTask { return object : CloseStreamTask { + override val stream: DestinationStream = stream override suspend fun execute() { hasRun.send(Unit) } @@ -245,7 +248,7 @@ class DestinationTaskLauncherTest { } @Test - fun testHandleSpilledFileComplete() = runTest { + fun testHandleSpilledFileCompleteNotEndOfStream() = runTest { launch { taskRunner.run() } launch { @@ -253,11 +256,37 @@ class DestinationTaskLauncherTest { stream1, BatchEnvelope( SpilledRawMessagesLocalFile(DefaultLocalFile(Path("not/a/real/file")), 100L) - ) + ), + false ) } processRecordsTaskFactory.hasRun.receive() + mockSpillToDiskTaskFactory.streamHasRun[stream1.descriptor]?.receive() + ?: Assertions.fail("SpillToDiskTask not run") + taskLauncher.stop() + } + + @Test + fun testHandleSpilledFileCompleteEndOfStream() = runTest { + launch { taskRunner.run() } + + launch { + taskLauncher.handleNewSpilledFile( + stream1, + BatchEnvelope( + SpilledRawMessagesLocalFile(DefaultLocalFile(Path("not/a/real/file")), 100L) + ), + true + ) + } + + processRecordsTaskFactory.hasRun.receive() + delay(500) + Assertions.assertTrue( + mockSpillToDiskTaskFactory.streamHasRun[stream1.descriptor]?.tryReceive()?.isFailure != + false + ) taskLauncher.stop() } @@ -266,28 +295,28 @@ class DestinationTaskLauncherTest { launch { taskRunner.run() } val range = TreeRangeSet.create(listOf(Range.closed(0L, 100L))) - - taskLauncher.handleStreamStarted(stream1) + val streamManager = syncManager.getStreamManager(stream1.descriptor) + repeat(100) { streamManager.countRecordIn() } + streamManager.markEndOfStream() // Verify incomplete batch triggers process batch val incompleteBatch = BatchEnvelope(MockBatch(Batch.State.PERSISTED), range) taskLauncher.handleNewBatch(stream1, incompleteBatch) - Assertions.assertTrue( - syncManager.getStreamManager(stream1.descriptor).areRecordsPersistedUntil(100L) - ) + Assertions.assertTrue(streamManager.areRecordsPersistedUntil(100L)) val batchReceived = processBatchTaskFactory.hasRun.receive() Assertions.assertEquals(incompleteBatch, batchReceived) // Verify complete batch w/o batch processing complete does nothing - val completeBatch = BatchEnvelope(MockBatch(Batch.State.COMPLETE)) - taskLauncher.handleNewBatch(stream1, completeBatch) + val halfRange = TreeRangeSet.create(listOf(Range.closed(0L, 50L))) + val completeBatchHalf = BatchEnvelope(MockBatch(Batch.State.COMPLETE), halfRange) + taskLauncher.handleNewBatch(stream1, completeBatchHalf) delay(1000) Assertions.assertTrue(closeStreamTaskFactory.hasRun.tryReceive().isFailure) - (syncManager.getStreamManager(stream1.descriptor) as MockStreamManager) - .mockBatchProcessingComplete(true) // Verify complete batch w/ batch processing complete triggers close stream - taskLauncher.handleNewBatch(stream1, completeBatch) + val secondHalf = TreeRangeSet.create(listOf(Range.closed(51L, 100L))) + val completingBatch = BatchEnvelope(MockBatch(Batch.State.COMPLETE), secondHalf) + taskLauncher.handleNewBatch(stream1, completingBatch) closeStreamTaskFactory.hasRun.receive() Assertions.assertTrue(true) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt index 3d9be479a4bb7..220bde8e4389c 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt @@ -28,7 +28,8 @@ class MockTaskLauncher(override val taskRunner: TaskRunner) : DestinationTaskLau override suspend fun handleNewSpilledFile( stream: DestinationStream, - wrapped: BatchEnvelope + wrapped: BatchEnvelope, + endOfStream: Boolean ) { spilledFiles.add(wrapped) } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ProcessRecordsTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ProcessRecordsTaskTest.kt index d5df884d0e846..d58c2186c8466 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ProcessRecordsTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ProcessRecordsTaskTest.kt @@ -15,7 +15,7 @@ import io.airbyte.cdk.message.Deserializer import io.airbyte.cdk.message.DestinationMessage import io.airbyte.cdk.message.DestinationRecord import io.airbyte.cdk.message.SpilledRawMessagesLocalFile -import io.airbyte.cdk.state.MockSyncManager +import io.airbyte.cdk.state.SyncManager import io.airbyte.cdk.write.StreamLoader import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires @@ -32,14 +32,13 @@ import org.junit.jupiter.api.Test [ "ProcessRecordsTaskTest", "MockDestinationCatalog", - "MockSyncManager", "MockTaskLauncher", ] ) class ProcessRecordsTaskTest { @Inject lateinit var processRecordsTaskFactory: DefaultProcessRecordsTaskFactory @Inject lateinit var launcher: MockTaskLauncher - @Inject lateinit var syncManager: MockSyncManager + @Inject lateinit var syncManager: SyncManager class MockBatch( override val state: Batch.State, @@ -109,7 +108,7 @@ class ProcessRecordsTaskTest { ) mockFile.linesToRead = (0 until recordCount).map { "$it" }.toMutableList() - syncManager.mockGetOrAwaitStreamLoader(MockStreamLoader()) + syncManager.registerStartedStreamLoader(MockStreamLoader()) task.execute() Assertions.assertEquals(1, launcher.batchEnvelopes.size) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt index c3f0aad7213f0..ad801e2ee3b0a 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt @@ -91,7 +91,10 @@ class SpillToDiskTaskTest { fun testSpillToDiskTask() = runTest { val mockTaskLauncher = MockTaskLauncher(taskRunner) spillToDiskTaskFactory.make(mockTaskLauncher, stream1).execute() + Assertions.assertEquals(1, mockTaskLauncher.spilledFiles.size) + spillToDiskTaskFactory.make(mockTaskLauncher, stream1).execute() Assertions.assertEquals(2, mockTaskLauncher.spilledFiles.size) + Assertions.assertEquals(1024, mockTaskLauncher.spilledFiles[0].batch.totalSizeBytes) Assertions.assertEquals(512, mockTaskLauncher.spilledFiles[1].batch.totalSizeBytes) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/CoroutineTestUtils.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/CoroutineTestUtils.kt new file mode 100644 index 0000000000000..18e654caf0369 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/CoroutineTestUtils.kt @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.test.util + +import kotlin.reflect.KClass + +class CoroutineTestUtils { + companion object { + suspend fun assertThrows(clazz: KClass, block: suspend () -> Unit) { + try { + block() + } catch (t: Throwable) { + if (t::class == clazz) { + return + } + throw AssertionError("Expected block to throw $clazz, but it threw ${t::class}.") + } + throw AssertionError("Expected block to throw $clazz, but it completed successfully.") + } + + suspend fun assertDoesNotThrow(block: suspend () -> Unit) { + try { + block() + } catch (t: Throwable) { + throw AssertionError("Expected block to not throw, but it threw ${t::class}.") + } + } + } +} From b38057bebc4b19d92bde0d0a5ee48ae3c3563ece Mon Sep 17 00:00:00 2001 From: Maxime Carbonneau-Leclerc <3360483+maxi297@users.noreply.github.com> Date: Thu, 3 Oct 2024 17:13:51 -0400 Subject: [PATCH 019/379] Revert async component release release (#46357) --- airbyte-integrations/connectors/source-salesforce/metadata.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/airbyte-integrations/connectors/source-salesforce/metadata.yaml b/airbyte-integrations/connectors/source-salesforce/metadata.yaml index c8b5d0aab2253..cb2cd888407fc 100644 --- a/airbyte-integrations/connectors/source-salesforce/metadata.yaml +++ b/airbyte-integrations/connectors/source-salesforce/metadata.yaml @@ -25,6 +25,7 @@ data: registryOverrides: cloud: enabled: true + dockerImageTag: 2.5.34 oss: enabled: true releaseStage: generally_available From d8f67994bcc9247aeeb765f266c9916451d7fabc Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Thu, 3 Oct 2024 14:48:54 -0700 Subject: [PATCH 020/379] Bulk Load CDK: Add a dedicated flush checkpoints task (#46318) --- .../kotlin/io/airbyte/cdk/message/Batch.kt | 7 ++++ .../io/airbyte/cdk/state/CheckpointManager.kt | 18 +++++++--- .../io/airbyte/cdk/state/StreamManager.kt | 1 + .../cdk/task/DestinationTaskLauncher.kt | 6 ++++ .../airbyte/cdk/task/FlushCheckpointsTask.kt | 33 +++++++++++++++++++ .../cdk/task/DestinationTaskLauncherTest.kt | 19 +++++++++++ 6 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FlushCheckpointsTask.kt diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/Batch.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/Batch.kt index b3f87e19054e6..a99b2ad5c3d9c 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/Batch.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/Batch.kt @@ -53,6 +53,13 @@ interface Batch { COMPLETE } + fun isPersisted(): Boolean = + when (state) { + State.PERSISTED, + State.COMPLETE -> true + else -> false + } + val state: State } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt index a038317ae4ea0..80021c42b4487 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt @@ -17,6 +17,7 @@ import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.atomic.AtomicReference import java.util.function.Consumer +import kotlinx.coroutines.sync.Mutex /** * Interface for checkpoint management. Should accept stream and global checkpoints, as well as @@ -43,6 +44,7 @@ interface CheckpointManager { abstract class StreamsCheckpointManager() : CheckpointManager { private val log = KotlinLogging.logger {} + private val flushLock = Mutex() abstract val catalog: DestinationCatalog abstract val syncManager: SyncManager @@ -123,16 +125,24 @@ abstract class StreamsCheckpointManager() : } override suspend fun flushReadyCheckpointMessages() { + if (!flushLock.tryLock()) { + log.info { "Flush already in progress, skipping" } + return + } /* Iterate over the checkpoints in order, evicting each that passes the persistence check. If a checkpoint is not persisted, then we can break the loop since the checkpoints are ordered. For global checkpoints, all streams must be persisted up to the checkpoint. */ - when (checkpointsAreGlobal.get()) { - null -> log.info { "No checkpoints to flush" } - true -> flushGlobalCheckpoints() - false -> flushStreamCheckpoints() + try { + when (checkpointsAreGlobal.get()) { + null -> log.info { "No checkpoints to flush" } + true -> flushGlobalCheckpoints() + false -> flushStreamCheckpoints() + } + } finally { + flushLock.unlock() } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt index 8dce8fb1bfe3a..549336e822f65 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt @@ -156,6 +156,7 @@ class DefaultStreamManager( /** True if all records in `[0, index)` have reached the given state. */ private fun isProcessingCompleteForState(index: Long, state: Batch.State): Boolean { val completeRanges = rangesState[state]!! + return completeRanges.encloses(Range.closedOpen(0L, index)) } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt index 60cfb8d4b6f35..3227ae171c2dd 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt @@ -94,6 +94,7 @@ class DefaultDestinationTaskLauncher( private val processBatchTaskFactory: ProcessBatchTaskFactory, private val closeStreamTaskFactory: CloseStreamTaskFactory, private val teardownTaskFactory: TeardownTaskFactory, + private val flushCheckpointsTaskFactory: FlushCheckpointsTaskFactory, private val exceptionHandler: TaskLauncherExceptionHandler ) : DestinationTaskLauncher { private val log = KotlinLogging.logger {} @@ -155,6 +156,10 @@ class DefaultDestinationTaskLauncher( val streamManager = syncManager.getStreamManager(stream.descriptor) streamManager.updateBatchState(wrapped) + if (wrapped.batch.isPersisted()) { + enqueue(flushCheckpointsTaskFactory.make()) + } + if (wrapped.batch.state != Batch.State.COMPLETE) { log.info { "Batch not complete: Starting process batch task for ${stream.descriptor}, batch $wrapped" @@ -223,6 +228,7 @@ class DefaultDestinationTaskLauncherExceptionHandler( ) } log.info { "Sync terminated, skipping task $innerTask." } + return } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FlushCheckpointsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FlushCheckpointsTask.kt new file mode 100644 index 0000000000000..50f7cc63ec9f1 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FlushCheckpointsTask.kt @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.state.CheckpointManager +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton + +interface FlushCheckpointsTask : SyncTask + +class DefaultFlushCheckpointsTask( + private val checkpointManager: CheckpointManager<*, *>, +) : FlushCheckpointsTask { + override suspend fun execute() { + checkpointManager.flushReadyCheckpointMessages() + } +} + +interface FlushCheckpointsTaskFactory { + fun make(): FlushCheckpointsTask +} + +@Singleton +@Secondary +class DefaultFlushCheckpointsTaskFactory( + private val checkpointManager: CheckpointManager<*, *>, +) : FlushCheckpointsTaskFactory { + override fun make(): FlushCheckpointsTask { + return DefaultFlushCheckpointsTask(checkpointManager) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt index a5ea8b7f15d89..aa114ca909509 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt @@ -14,6 +14,7 @@ import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.SpilledRawMessagesLocalFile import io.airbyte.cdk.state.SyncManager +import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Replaces import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -51,6 +52,7 @@ class DestinationTaskLauncherTest { @Inject lateinit var processBatchTaskFactory: MockProcessBatchTaskFactory @Inject lateinit var closeStreamTaskFactory: MockCloseStreamTaskFactory @Inject lateinit var teardownTaskFactory: MockTeardownTaskFactory + @Inject lateinit var flushCheckpointsTaskFactory: MockFlushCheckpointsTaskFactory @Singleton @Replaces(DefaultSetupTaskFactory::class) @@ -189,6 +191,21 @@ class DestinationTaskLauncherTest { } } + @Singleton + @Primary + @Requires(env = ["DestinationTaskLauncherTest"]) + class MockFlushCheckpointsTaskFactory : FlushCheckpointsTaskFactory { + val hasRun: Channel = Channel(Channel.UNLIMITED) + + override fun make(): FlushCheckpointsTask { + return object : FlushCheckpointsTask { + override suspend fun execute() { + hasRun.send(true) + } + } + } + } + class MockBatch(override val state: Batch.State) : Batch @Singleton @@ -297,6 +314,7 @@ class DestinationTaskLauncherTest { val range = TreeRangeSet.create(listOf(Range.closed(0L, 100L))) val streamManager = syncManager.getStreamManager(stream1.descriptor) repeat(100) { streamManager.countRecordIn() } + streamManager.markEndOfStream() // Verify incomplete batch triggers process batch @@ -305,6 +323,7 @@ class DestinationTaskLauncherTest { Assertions.assertTrue(streamManager.areRecordsPersistedUntil(100L)) val batchReceived = processBatchTaskFactory.hasRun.receive() Assertions.assertEquals(incompleteBatch, batchReceived) + Assertions.assertTrue(flushCheckpointsTaskFactory.hasRun.receive()) // Verify complete batch w/o batch processing complete does nothing val halfRange = TreeRangeSet.create(listOf(Range.closed(0L, 50L))) From 45cf6156a07bbdc421ecff378e583853237ce70c Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Thu, 3 Oct 2024 15:12:04 -0700 Subject: [PATCH 021/379] Bulk Load CDK: Restore CheckpointManager Test (#46321) --- .../DestinationMessageQueueWriterTest.kt | 1 + .../cdk/state/CheckpointManagerTest.kt | 40 +++++++++++++------ .../io/airbyte/cdk/state/StreamManagerTest.kt | 1 + .../cdk/task/DestinationTaskLauncherTest.kt | 10 ++++- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt index d4d175661bb3a..09ad533422fad 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt @@ -186,6 +186,7 @@ class DestinationMessageQueueWriterTest { Assertions.assertEquals(manager2.endOfStreamRead(), false) Assertions.assertEquals(manager1.endOfStreamRead(), true) + Assertions.assertEquals(11, channel1.messages.size) Assertions.assertEquals(channel1.messages[10], StreamCompleteWrapped(10)) } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt index e295a1f7cc4ed..b2667f3920229 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt @@ -14,7 +14,6 @@ import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.MessageConverter import io.airbyte.cdk.message.SimpleBatch -import io.micronaut.context.annotation.Prototype import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import jakarta.inject.Singleton @@ -29,6 +28,7 @@ import org.junit.jupiter.params.provider.ArgumentsProvider import org.junit.jupiter.params.provider.ArgumentsSource @MicronautTest( + rebuildContext = true, environments = [ "CheckpointManagerTest", @@ -37,6 +37,7 @@ import org.junit.jupiter.params.provider.ArgumentsSource ) class CheckpointManagerTest { @Inject lateinit var checkpointManager: TestCheckpointManager + @Inject lateinit var syncManager: SyncManager /** * Test state messages. * @@ -64,20 +65,23 @@ class CheckpointManagerTest { } } - @Prototype + @Singleton class MockOutputConsumer : Consumer { - val collectedStreamOutput = mutableMapOf>() + val collectedStreamOutput = + mutableMapOf>() val collectedGlobalOutput = mutableListOf() override fun accept(t: MockCheckpointOut) { when (t) { is MockStreamCheckpointOut -> - collectedStreamOutput.getOrPut(t.stream) { mutableListOf() }.add(t.payload) + collectedStreamOutput + .getOrPut(t.stream.descriptor) { mutableListOf() } + .add(t.payload) is MockGlobalCheckpointOut -> collectedGlobalOutput.add(t.payload) } } } - @Prototype + @Singleton class TestCheckpointManager( override val catalog: DestinationCatalog, override val syncManager: SyncManager, @@ -104,7 +108,7 @@ class CheckpointManagerTest { val name: String, val events: List, // Order matters, but only per stream - val expectedStreamOutput: Map> = mapOf(), + val expectedStreamOutput: Map> = mapOf(), val expectedGlobalOutput: List = listOf(), val expectedException: Class? = null ) @@ -124,7 +128,7 @@ class CheckpointManagerTest { mapOf(stream1 to listOf(Range.closed(0L, 20L))) ) ), - expectedStreamOutput = mapOf(stream1 to listOf("1", "2")) + expectedStreamOutput = mapOf(stream1.descriptor to listOf("1", "2")) ), TestCase( name = "One stream, two messages, flush only the first", @@ -137,7 +141,7 @@ class CheckpointManagerTest { mapOf(stream1 to listOf(Range.closed(0L, 10L))) ) ), - expectedStreamOutput = mapOf(stream1 to listOf("1")) + expectedStreamOutput = mapOf(stream1.descriptor to listOf("1")) ), TestCase( name = "Two streams, two messages each, flush all", @@ -156,7 +160,10 @@ class CheckpointManagerTest { ) ), expectedStreamOutput = - mapOf(stream1 to listOf("11", "12"), stream2 to listOf("22", "21")) + mapOf( + stream1.descriptor to listOf("11", "12"), + stream2.descriptor to listOf("22", "21") + ) ), TestCase( name = "One stream, only later range persisted", @@ -335,7 +342,7 @@ class CheckpointManagerTest { TestStreamMessage(stream1, 30L, 3), FlushPoint(mapOf(stream1 to listOf(Range.closed(10L, 30L)))) ), - expectedStreamOutput = mapOf(stream1 to listOf("1", "2", "3")) + expectedStreamOutput = mapOf(stream1.descriptor to listOf("1", "2", "3")) ), TestCase( name = "Global checkpoint, multiple flush points, no output", @@ -402,7 +409,7 @@ class CheckpointManagerTest { @ParameterizedTest @ArgumentsSource(CheckpointManagerTestArgumentsProvider::class) - suspend fun testAddingAndFlushingCheckpoints(testCase: TestCase) = runTest { + fun testAddingAndFlushingCheckpoints(testCase: TestCase) = runTest { if (testCase.expectedException != null) { try { runTestCase(testCase) @@ -429,6 +436,15 @@ class CheckpointManagerTest { testCase.events.forEach { when (it) { is TestStreamMessage -> { + /** + * Mock the correct state of the stream manager by advancing the record count to + * the index of the message. + */ + val streamManager = syncManager.getStreamManager(it.stream.descriptor) + val recordCount = streamManager.recordCount() + (recordCount until it.index).forEach { _ -> + syncManager.getStreamManager(it.stream.descriptor).countRecordIn() + } checkpointManager.addStreamCheckpoint( it.stream.descriptor, it.index, @@ -444,7 +460,7 @@ class CheckpointManagerTest { val mockBatch = SimpleBatch(state = Batch.State.PERSISTED) val rangeSet = TreeRangeSet.create(ranges) val mockBatchEnvelope = BatchEnvelope(batch = mockBatch, ranges = rangeSet) - checkpointManager.syncManager + syncManager .getStreamManager(stream.descriptor) .updateBatchState(mockBatchEnvelope) } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt index 335d9d50688af..727041adbccd6 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt @@ -68,6 +68,7 @@ class StreamManagerTest { Assertions.assertTrue(channel.tryReceive().isFailure) Assertions.assertThrows(IllegalStateException::class.java) { manager.markSucceeded() } manager.markEndOfStream() + manager.markSucceeded() Assertions.assertTrue(channel.receive()) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt index aa114ca909509..be850fbc6186e 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt @@ -318,11 +318,17 @@ class DestinationTaskLauncherTest { streamManager.markEndOfStream() // Verify incomplete batch triggers process batch - val incompleteBatch = BatchEnvelope(MockBatch(Batch.State.PERSISTED), range) + val incompleteBatch = BatchEnvelope(MockBatch(Batch.State.LOCAL), range) taskLauncher.handleNewBatch(stream1, incompleteBatch) - Assertions.assertTrue(streamManager.areRecordsPersistedUntil(100L)) + Assertions.assertFalse(streamManager.areRecordsPersistedUntil(100L)) val batchReceived = processBatchTaskFactory.hasRun.receive() Assertions.assertEquals(incompleteBatch, batchReceived) + delay(500) + Assertions.assertTrue(flushCheckpointsTaskFactory.hasRun.tryReceive().isFailure) + + val persistedBatch = BatchEnvelope(MockBatch(Batch.State.PERSISTED), range) + taskLauncher.handleNewBatch(stream1, persistedBatch) + Assertions.assertTrue(streamManager.areRecordsPersistedUntil(100L)) Assertions.assertTrue(flushCheckpointsTaskFactory.hasRun.receive()) // Verify complete batch w/o batch processing complete does nothing From 4c680b49cd87c4e67289b825a5a6be1da1844bbc Mon Sep 17 00:00:00 2001 From: Edward Gao Date: Thu, 3 Oct 2024 16:58:24 -0700 Subject: [PATCH 022/379] Bulk Load CDK: Add integration test using in-memory mock destination (#45634) --- .github/workflows/publish-bulk-cdk.yml | 10 +++ airbyte-cdk/bulk/build.gradle | 6 ++ airbyte-cdk/bulk/core/load/build.gradle | 28 ++++++++ .../MockBasicFunctionalityIntegrationTest.kt | 19 +++++ .../MockDestinationBackend.kt | 33 +++++++++ .../MockDestinationChecker.kt | 13 ++++ .../MockDestinationConfiguration.kt | 34 +++++++++ .../MockDestinationWriter.kt | 69 +++++++++++++++++++ .../integrationTest/resources/metadata.yaml | 5 ++ .../airbyte/cdk/test/util/RecordDifferTest.kt | 4 +- .../io/airbyte/cdk/test/util/OutputRecord.kt | 22 ++++-- .../BasicFunctionalityIntegrationTest.kt | 23 ++++++- 12 files changed, 256 insertions(+), 10 deletions(-) create mode 100644 airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt create mode 100644 airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationBackend.kt create mode 100644 airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationChecker.kt create mode 100644 airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationConfiguration.kt create mode 100644 airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationWriter.kt create mode 100644 airbyte-cdk/bulk/core/load/src/integrationTest/resources/metadata.yaml diff --git a/.github/workflows/publish-bulk-cdk.yml b/.github/workflows/publish-bulk-cdk.yml index a1ef1e716c855..d0f0e4c91c33c 100644 --- a/.github/workflows/publish-bulk-cdk.yml +++ b/.github/workflows/publish-bulk-cdk.yml @@ -76,6 +76,16 @@ jobs: gradle-distribution-sha-256-sum-warning: false arguments: --scan :airbyte-cdk:bulk:bulkCdkBuild + - name: Integration test Bulk CDK + uses: burrunan/gradle-cache-action@v1 + env: + CI: true + with: + job-id: bulk-cdk-publish + concurrent: true + gradle-distribution-sha-256-sum-warning: false + arguments: --scan :airbyte-cdk:bulk:bulkCdkIntegrationTest + - name: Publish Poms and Jars to CloudRepo uses: burrunan/gradle-cache-action@v1 env: diff --git a/airbyte-cdk/bulk/build.gradle b/airbyte-cdk/bulk/build.gradle index b8474f81a5070..6f5cb2ee9a2ac 100644 --- a/airbyte-cdk/bulk/build.gradle +++ b/airbyte-cdk/bulk/build.gradle @@ -61,6 +61,12 @@ allprojects { } } +tasks.register('bulkCdkIntegrationTest').configure { + // findByName returns the task, or null if no such task exists. + // we need this because not all submodules have an integrationTest task. + dependsOn allprojects.collect {it.tasks.findByName('integrationTest')}.findAll {it != null} +} + if (buildNumberFile.exists()) { tasks.register('bulkCdkBuild').configure { dependsOn allprojects.collect {it.tasks.named('build')} diff --git a/airbyte-cdk/bulk/core/load/build.gradle b/airbyte-cdk/bulk/core/load/build.gradle index e670f0cbe3284..c593e6e9446ba 100644 --- a/airbyte-cdk/bulk/core/load/build.gradle +++ b/airbyte-cdk/bulk/core/load/build.gradle @@ -1,3 +1,16 @@ +// simply declaring the source sets is sufficient to populate them with +// src/integrationTest/java+resources + src/integrationTest/kotlin. +sourceSets { + integrationTest { + } +} +kotlin { + sourceSets { + testIntegration { + } + } +} + dependencies { implementation project(':airbyte-cdk:bulk:core:bulk-cdk-core-base') implementation 'org.apache.commons:commons-lang3:3.17.0' @@ -10,3 +23,18 @@ dependencies { testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1") implementation "org.jetbrains.kotlin:kotlin-reflect:2.0.20" } + +task integrationTest(type: Test) { + description = 'Runs the integration tests.' + group = 'verification' + testClassesDirs = sourceSets.integrationTest.output.classesDirs + classpath = sourceSets.integrationTest.runtimeClasspath + useJUnitPlatform() + mustRunAfter tasks.check +} +configurations { + integrationTestImplementation.extendsFrom testImplementation + integrationTestRuntimeOnly.extendsFrom testRuntimeOnly +} +// These tests are lightweight enough to run on every PR. +rootProject.check.dependsOn(integrationTest) diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt new file mode 100644 index 0000000000000..0513c31bdf093 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.mock_integration_test + +import io.airbyte.cdk.test.util.NoopDestinationCleaner +import io.airbyte.cdk.test.util.NoopExpectedRecordMapper +import io.airbyte.cdk.test.util.NoopNameMapper +import io.airbyte.cdk.test.write.BasicFunctionalityIntegrationTest + +class MockBasicFunctionalityIntegrationTest : + BasicFunctionalityIntegrationTest( + MockDestinationSpecification(), + MockDestinationDataDumper, + NoopDestinationCleaner, + NoopExpectedRecordMapper, + NoopNameMapper + ) diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationBackend.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationBackend.kt new file mode 100644 index 0000000000000..99353873200fe --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationBackend.kt @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.mock_integration_test + +import io.airbyte.cdk.test.util.DestinationDataDumper +import io.airbyte.cdk.test.util.OutputRecord +import java.util.concurrent.ConcurrentHashMap + +object MockDestinationBackend { + private val files: MutableMap> = ConcurrentHashMap() + + fun insert(filename: String, vararg records: OutputRecord) { + getFile(filename).addAll(records) + } + + fun readFile(filename: String): List { + return getFile(filename) + } + + private fun getFile(filename: String): MutableList { + return files.getOrPut(filename) { mutableListOf() } + } +} + +object MockDestinationDataDumper : DestinationDataDumper { + override fun dumpRecords(streamName: String, streamNamespace: String?): List { + return MockDestinationBackend.readFile( + MockStreamLoader.getFilename(streamNamespace, streamName) + ) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationChecker.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationChecker.kt new file mode 100644 index 0000000000000..824e880dc134f --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationChecker.kt @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.mock_integration_test + +import io.airbyte.cdk.check.DestinationChecker +import javax.inject.Singleton + +@Singleton +class MockDestinationChecker : DestinationChecker { + override fun check(config: MockDestinationConfiguration) {} +} diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationConfiguration.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationConfiguration.kt new file mode 100644 index 0000000000000..ac92cf54aba6d --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationConfiguration.kt @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.mock_integration_test + +import io.airbyte.cdk.command.ConfigurationSpecification +import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.command.DestinationConfigurationFactory +import io.micronaut.context.annotation.Factory +import jakarta.inject.Singleton + +class MockDestinationConfiguration : DestinationConfiguration() + +@Singleton class MockDestinationSpecification : ConfigurationSpecification() + +@Singleton +class MockDestinationConfigurationFactory : + DestinationConfigurationFactory { + + override fun makeWithoutExceptionHandling( + pojo: MockDestinationSpecification + ): MockDestinationConfiguration { + return MockDestinationConfiguration() + } +} + +@Factory +class MockDestinationConfigurationProvider(private val config: DestinationConfiguration) { + @Singleton + fun get(): MockDestinationConfiguration { + return config as MockDestinationConfiguration + } +} diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationWriter.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationWriter.kt new file mode 100644 index 0000000000000..7b8c5c4522f6c --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationWriter.kt @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.mock_integration_test + +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.data.ObjectValue +import io.airbyte.cdk.message.Batch +import io.airbyte.cdk.message.DestinationRecord +import io.airbyte.cdk.message.SimpleBatch +import io.airbyte.cdk.test.util.OutputRecord +import io.airbyte.cdk.write.DestinationWriter +import io.airbyte.cdk.write.StreamLoader +import java.time.Instant +import java.util.UUID +import javax.inject.Singleton + +@Singleton +class MockDestinationWriter : DestinationWriter { + override fun createStreamLoader(stream: DestinationStream): StreamLoader { + return MockStreamLoader(stream) + } +} + +class MockStreamLoader(override val stream: DestinationStream) : StreamLoader { + data class LocalBatch(val records: List) : Batch { + override val state = Batch.State.LOCAL + } + data class PersistedBatch(val records: List) : Batch { + override val state = Batch.State.PERSISTED + } + + override suspend fun processRecords( + records: Iterator, + totalSizeBytes: Long + ): Batch { + return LocalBatch(records.asSequence().toList()) + } + + override suspend fun processBatch(batch: Batch): Batch { + return when (batch) { + is LocalBatch -> { + batch.records.forEach { + MockDestinationBackend.insert( + getFilename(it.stream), + OutputRecord( + UUID.randomUUID(), + Instant.ofEpochMilli(it.emittedAtMs), + Instant.ofEpochMilli(System.currentTimeMillis()), + stream.generationId, + it.data as ObjectValue, + OutputRecord.Meta(changes = it.meta?.changes, syncId = stream.syncId), + ) + ) + } + PersistedBatch(batch.records) + } + is PersistedBatch -> SimpleBatch(state = Batch.State.COMPLETE) + else -> throw IllegalStateException("Unexpected batch type: $batch") + } + } + + companion object { + fun getFilename(stream: DestinationStream.Descriptor) = + getFilename(stream.namespace, stream.name) + fun getFilename(namespace: String?, name: String) = "(${namespace},${name})" + } +} diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/resources/metadata.yaml b/airbyte-cdk/bulk/core/load/src/integrationTest/resources/metadata.yaml new file mode 100644 index 0000000000000..3424155343d1d --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/resources/metadata.yaml @@ -0,0 +1,5 @@ +# This is a minimal metadata.yaml that allows a destination connector to run. +# A real metadata.yaml obviously contains much more stuff, but we don't strictly +# need any of it at runtime. +data: + dockerRepository: "airbyte/fake-destination" diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/RecordDifferTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/RecordDifferTest.kt index ae55eabb84a48..2c1183dfa0d0c 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/RecordDifferTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/RecordDifferTest.kt @@ -58,7 +58,7 @@ class RecordDifferTest { "phone" to "1234", "email" to "charlie@example.com" ), - airbyteMeta = """{"sync_id": 12}""", + airbyteMeta = OutputRecord.Meta(syncId = 42), ), ), actualRecords = @@ -109,7 +109,7 @@ class RecordDifferTest { Missing record (pk=[IntegerValue(value=1), IntegerValue(value=100)], cursor=TimestampValue(value=1970-01-01T00:00Z)): OutputRecord(rawId=null, extractedAt=1970-01-01T00:00:01.234Z, loadedAt=null, generationId=42, data=ObjectValue(values={id1=IntegerValue(value=1), id2=IntegerValue(value=100), updated_at=TimestampValue(value=1970-01-01T00:00Z), name=StringValue(value=alice), phone=StringValue(value=1234)}), airbyteMeta=null) Incorrect record (pk=[IntegerValue(value=1), IntegerValue(value=100)], cursor=TimestampValue(value=1970-01-01T00:00:02Z)): generationId: Expected 42, got 41 - airbyteMeta: Expected {"sync_id":12}, got null + airbyteMeta: Expected Meta(changes=null, syncId=42), got null phone: Expected StringValue(value=1234), but was StringValue(value=5678) email: Expected StringValue(value=charlie@example.com), but was address: Expected , but was StringValue(value=1234 charlie street) diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/OutputRecord.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/OutputRecord.kt index 89e8f1a0b2d0a..18ac7545d50bc 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/OutputRecord.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/OutputRecord.kt @@ -4,9 +4,8 @@ package io.airbyte.cdk.test.util -import com.fasterxml.jackson.databind.JsonNode -import com.fasterxml.jackson.databind.ObjectMapper import io.airbyte.cdk.data.ObjectValue +import io.airbyte.cdk.message.DestinationRecord.Change import java.time.Instant import java.util.UUID @@ -23,8 +22,17 @@ data class OutputRecord( * Destinations _must_ filter out the airbyte_* fields from this map. */ val data: ObjectValue, - val airbyteMeta: JsonNode?, + val airbyteMeta: Meta?, ) { + /** + * Much like [io.airbyte.cdk.message.DestinationRecord.Meta], but includes the [syncId] field + * that we write to the destination. + */ + data class Meta( + val changes: List? = null, + val syncId: Long? = null, + ) + /** Utility constructor with easier types to write by hand */ constructor( rawId: String, @@ -32,14 +40,14 @@ data class OutputRecord( loadedAt: Long?, generationId: Long?, data: Map, - airbyteMeta: String?, + airbyteMeta: Meta?, ) : this( UUID.fromString(rawId), Instant.ofEpochMilli(extractedAt), loadedAt?.let { Instant.ofEpochMilli(it) }, generationId, ObjectValue.from(data), - airbyteMeta?.let { ObjectMapper().readTree(it) }, + airbyteMeta, ) /** @@ -51,13 +59,13 @@ data class OutputRecord( extractedAt: Long, generationId: Long?, data: Map, - airbyteMeta: String?, + airbyteMeta: Meta?, ) : this( null, Instant.ofEpochMilli(extractedAt), loadedAt = null, generationId, ObjectValue.from(data), - airbyteMeta?.let { ObjectMapper().readTree(it) }, + airbyteMeta, ) } diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/write/BasicFunctionalityIntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/write/BasicFunctionalityIntegrationTest.kt index e06142bd34f28..7cd18ae8bda08 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/write/BasicFunctionalityIntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/write/BasicFunctionalityIntegrationTest.kt @@ -20,6 +20,8 @@ import io.airbyte.cdk.test.util.NoopNameMapper import io.airbyte.cdk.test.util.OutputRecord import io.airbyte.protocol.models.v0.AirbyteConnectionStatus import io.airbyte.protocol.models.v0.AirbyteMessage +import io.airbyte.protocol.models.v0.AirbyteRecordMessageMetaChange.Change +import io.airbyte.protocol.models.v0.AirbyteRecordMessageMetaChange.Reason import kotlin.test.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertAll @@ -73,6 +75,14 @@ abstract class BasicFunctionalityIntegrationTest( name = "test_stream", data = """{"id": 5678}""", emittedAtMs = 1234, + changes = + listOf( + DestinationRecord.Change( + field = "foo", + change = Change.NULLED, + reason = Reason.SOURCE_FIELD_SIZE_LIMITATION + ) + ) ), StreamCheckpoint( streamName = "test_stream", @@ -111,7 +121,18 @@ abstract class BasicFunctionalityIntegrationTest( extractedAt = 1234, generationId = 0, data = mapOf("id" to 5678), - airbyteMeta = """{"changes": [], "sync_id": 42}""" + airbyteMeta = + OutputRecord.Meta( + changes = + listOf( + DestinationRecord.Change( + field = "foo", + change = Change.NULLED, + reason = Reason.SOURCE_FIELD_SIZE_LIMITATION + ) + ), + syncId = 42 + ) ) ), "test_stream", From ba002939e9ee650e4aa55b0fb64d0152c9f46f25 Mon Sep 17 00:00:00 2001 From: Brian Lai <51336873+brianjlai@users.noreply.github.com> Date: Thu, 3 Oct 2024 20:04:24 -0400 Subject: [PATCH 023/379] =?UTF-8?q?[source-stripe]=20=F0=9F=90=9B=20bump?= =?UTF-8?q?=20cdk=20to=205.10.2=20to=20stop=20using=20PrintBuffer=20due=20?= =?UTF-8?q?to=20record=20count=20mismatches=20(#46327)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-stripe/acceptance-test-config.yml | 6 + .../integration_tests/expected_records.jsonl | 3 - .../connectors/source-stripe/metadata.yaml | 2 +- .../connectors/source-stripe/poetry.lock | 633 ++++++++++-------- .../connectors/source-stripe/pyproject.toml | 2 +- .../integrations/sources/stripe-migrations.md | 4 +- docs/integrations/sources/stripe.md | 1 + 7 files changed, 354 insertions(+), 297 deletions(-) diff --git a/airbyte-integrations/connectors/source-stripe/acceptance-test-config.yml b/airbyte-integrations/connectors/source-stripe/acceptance-test-config.yml index 41c0fbd785044..990c6081d931f 100644 --- a/airbyte-integrations/connectors/source-stripe/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-stripe/acceptance-test-config.yml @@ -47,6 +47,12 @@ acceptance_tests: bypass_reason: "This stream can't be seeded in our sandbox account" - name: "events" bypass_reason: "Data expires every 30 days." + - name: "subscriptions" + bypass_reason: "Data appears to have expired and since we can't access our test account we cannot re-seed or verify this" + - name: "subscription_items" + bypass_reason: "Since we don't have subscriptions anymore, we can't get child records of subscriptions" + - name: "usage_records" + bypass_reason: "Since we don't have subscriptions_items anymore which depend on subscriptions, we can't get child records for usage_records" expect_records: path: "integration_tests/expected_records.jsonl" incremental: diff --git a/airbyte-integrations/connectors/source-stripe/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-stripe/integration_tests/expected_records.jsonl index d9e4f800f283e..74b5b36fe2ee3 100644 --- a/airbyte-integrations/connectors/source-stripe/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-stripe/integration_tests/expected_records.jsonl @@ -49,7 +49,6 @@ {"stream": "products", "data": {"id": "prod_KouQ5ez86yREmB", "object": "product", "active": true, "attributes": [], "created": 1640124902, "default_price": "price_1K9GbqEcXtiJtvvhJ3lZe4i5", "description": null, "features": [], "images": [], "livemode": false, "metadata": {}, "name": "edgao-test-product", "package_dimensions": null, "shippable": null, "statement_descriptor": null, "tax_code": "txcd_10000000", "type": "service", "unit_label": null, "updated": 1696839715, "url": null}, "emitted_at": 1697627307635} {"stream": "products", "data": {"id": "prod_NHcKselSHfKdfc", "object": "product", "active": true, "attributes": [], "created": 1675345504, "default_price": "price_1MX364EcXtiJtvvhE3WgTl4O", "description": "Test Product 1 description", "features": [], "images": ["https://files.stripe.com/links/MDB8YWNjdF8xSndub2lFY1h0aUp0dnZofGZsX3Rlc3RfdjBOT09UaHRiNVl2WmJ6clNYRUlmcFFD00cCBRNHnV"], "livemode": false, "metadata": {}, "name": "Test Product 1", "package_dimensions": null, "shippable": null, "statement_descriptor": null, "tax_code": "txcd_10301000", "type": "service", "unit_label": null, "updated": 1696839789, "url": null}, "emitted_at": 1697627307877} {"stream": "products", "data": {"id": "prod_NCgx1XP2IFQyKF", "object": "product", "active": true, "attributes": [], "created": 1674209524, "default_price": null, "description": null, "features": [], "images": [], "livemode": false, "metadata": {}, "name": "tu", "package_dimensions": null, "shippable": null, "statement_descriptor": null, "tax_code": "txcd_10000000", "type": "service", "unit_label": null, "updated": 1696839225, "url": null}, "emitted_at": 1697627307879} -{"stream":"subscriptions","data":{"id":"sub_1POL30EcXtiJtvvh4UdCl3kj","object":"subscription","application":null,"application_fee_percent":null,"automatic_tax":{"enabled":false,"liability":null},"billing_cycle_anchor":1717598562.0,"billing_cycle_anchor_config":null,"billing_thresholds":null,"cancel_at":null,"cancel_at_period_end":false,"canceled_at":null,"cancellation_details":{"comment":null,"feedback":null,"reason":null},"collection_method":"send_invoice","created":1717598562,"currency":"usd","current_period_end":1720622562.0,"current_period_start":1720017762,"customer":"cus_Kou8knsO3qQOwU","days_until_due":30,"default_payment_method":null,"default_source":null,"default_tax_rates":[],"description":null,"discount":{"id":"di_1POL31EcXtiJtvvhc8sEBzwi","object":"discount","checkout_session":null,"coupon":{"id":"4SUEGKZg","object":"coupon","amount_off":200.0,"created":1674209030,"currency":"usd","duration":"repeating","duration_in_months":3.0,"livemode":false,"max_redemptions":null,"metadata":{},"name":"Іекшзу","percent_off":null,"redeem_by":null,"times_redeemed":2.0,"valid":true},"customer":"cus_Kou8knsO3qQOwU","end":1725547362,"invoice":null,"invoice_item":null,"promotion_code":null,"start":1717598562,"subscription":"sub_1POL30EcXtiJtvvh4UdCl3kj","subscription_item":null},"discounts":["di_1POL31EcXtiJtvvhc8sEBzwi"],"ended_at":null,"invoice_settings":{"account_tax_ids":null,"issuer":{"type":"self"}},"items":{"object":"list","data":[{"id":"si_QEogVBC6jV71Ti","object":"subscription_item","billing_thresholds":null,"created":1717598563,"discounts":[],"metadata":{},"plan":{"id":"price_1PDtzkEcXtiJtvvhY4aqjMSq","object":"plan","active":true,"aggregate_usage":null,"amount":null,"amount_decimal":null,"billing_scheme":"tiered","created":1715111292,"currency":"usd","interval":"week","interval_count":1,"livemode":false,"metadata":{},"meter":null,"nickname":null,"product":"prod_Q423JP7oX7TF5U","tiers_mode":"graduated","transform_usage":null,"trial_period_days":null,"usage_type":"licensed"},"price":{"id":"price_1PDtzkEcXtiJtvvhY4aqjMSq","object":"price","active":true,"billing_scheme":"tiered","created":1715111292,"currency":"usd","custom_unit_amount":null,"livemode":false,"lookup_key":null,"metadata":{},"nickname":null,"product":"prod_Q423JP7oX7TF5U","recurring":{"aggregate_usage":null,"interval":"week","interval_count":1,"meter":null,"trial_period_days":null,"usage_type":"licensed"},"tax_behavior":"exclusive","tiers_mode":"graduated","transform_quantity":null,"type":"recurring","unit_amount":null,"unit_amount_decimal":null},"quantity":1,"subscription":"sub_1POL30EcXtiJtvvh4UdCl3kj","tax_rates":[]}],"has_more":false,"total_count":1.0,"url":"/v1/subscription_items?subscription=sub_1POL30EcXtiJtvvh4UdCl3kj"},"latest_invoice":"in_1PYUP7EcXtiJtvvhSPc5z2FG","livemode":false,"metadata":{},"next_pending_invoice_item_invoice":null,"on_behalf_of":null,"pause_collection":null,"payment_settings":{"payment_method_options":null,"payment_method_types":null,"save_default_payment_method":"off"},"pending_invoice_item_interval":null,"pending_setup_intent":null,"pending_update":null,"plan":{"id":"price_1PDtzkEcXtiJtvvhY4aqjMSq","object":"plan","active":true,"aggregate_usage":null,"amount":null,"amount_decimal":null,"billing_scheme":"tiered","created":1715111292,"currency":"usd","interval":"week","interval_count":1,"livemode":false,"metadata":{},"meter":null,"nickname":null,"product":"prod_Q423JP7oX7TF5U","tiers_mode":"graduated","transform_usage":null,"trial_period_days":null,"usage_type":"licensed"},"quantity":1,"schedule":null,"start_date":1717598562,"status":"past_due","test_clock":null,"transfer_data":null,"trial_end":null,"trial_settings":{"end_behavior":{"missing_payment_method":"create_invoice"}},"trial_start":null,"updated":1717598562},"emitted_at":1720515564910} {"stream":"subscription_schedule","data":{"id":"sub_sched_1PVzF9EcXtiJtvvhbyFup9qG","object":"subscription_schedule","application":null,"canceled_at":null,"completed_at":null,"created":1719421371,"current_phase":null,"customer":"cus_OV79K86ov5FMFM","default_settings":{"application_fee_percent":null,"automatic_tax":{"enabled":false,"liability":null},"billing_cycle_anchor":"automatic","billing_thresholds":null,"collection_method":"charge_automatically","default_payment_method":null,"default_source":null,"description":null,"invoice_settings":"{'account_tax_ids': None, 'days_until_due': None, 'issuer': {'type': 'self'}}","on_behalf_of":null,"transfer_data":null},"end_behavior":"cancel","livemode":false,"metadata":{},"phases":[{"add_invoice_items":[],"application_fee_percent":null,"billing_cycle_anchor":null,"billing_thresholds":null,"collection_method":null,"coupon":"4SUEGKZg","currency":"usd","default_payment_method":null,"default_tax_rates":[],"description":null,"discounts":[{"coupon":"4SUEGKZg","discount":null,"promotion_code":null}],"end_date":1727654400,"invoice_settings":"{'account_tax_ids': None, 'days_until_due': None, 'issuer': None}","items":[{"billing_thresholds":null,"discounts":[],"metadata":{},"plan":"price_1MSHZoEcXtiJtvvh6O8TYD8T","price":"price_1MSHZoEcXtiJtvvh6O8TYD8T","quantity":1,"tax_rates":[]}],"metadata":{},"on_behalf_of":null,"proration_behavior":"none","start_date":1724976000,"transfer_data":null,"trial_end":null}],"released_at":null,"released_subscription":null,"renewal_interval":null,"status":"not_started","subscription":null,"test_clock":null,"updated":1719421371},"emitted_at":1720516126323} {"stream": "transfers", "data": {"id": "tr_1NH18zEcXtiJtvvhnd827cNO", "object": "transfer", "amount": 10000, "amount_reversed": 0, "balance_transaction": "txn_1NH190EcXtiJtvvhBO3PeR7p", "created": 1686301085, "currency": "usd", "description": null, "destination": "acct_1Jx8unEYmRTj5on1", "destination_payment": "py_1NH18zEYmRTj5on1GkCCsqLK", "livemode": false, "metadata": {}, "reversals": {"object": "list", "data": [], "has_more": false, "total_count": 0.0, "url": "/v1/transfers/tr_1NH18zEcXtiJtvvhnd827cNO/reversals"}, "reversed": false, "source_transaction": null, "source_type": "card", "transfer_group": null, "updated": 1686301085}, "emitted_at": 1697627313262} {"stream": "transfers", "data": {"id": "tr_1NGoaCEcXtiJtvvhjmHtOGOm", "object": "transfer", "amount": 100, "amount_reversed": 100, "balance_transaction": "txn_1NGoaDEcXtiJtvvhsZrNMsdJ", "created": 1686252800, "currency": "usd", "description": null, "destination": "acct_1Jx8unEYmRTj5on1", "destination_payment": "py_1NGoaCEYmRTj5on1LAlAIG3a", "livemode": false, "metadata": {}, "reversals": {"object": "list", "data": [{"id": "trr_1NGolCEcXtiJtvvhOYPck3CP", "object": "transfer_reversal", "amount": 100, "balance_transaction": "txn_1NGolCEcXtiJtvvhZRy4Kd5S", "created": 1686253482, "currency": "usd", "destination_payment_refund": "pyr_1NGolBEYmRTj5on1STal3rmp", "metadata": {}, "source_refund": null, "transfer": "tr_1NGoaCEcXtiJtvvhjmHtOGOm"}], "has_more": false, "total_count": 1.0, "url": "/v1/transfers/tr_1NGoaCEcXtiJtvvhjmHtOGOm/reversals"}, "reversed": true, "source_transaction": null, "source_type": "card", "transfer_group": "ORDER10", "updated": 1686252800}, "emitted_at": 1697627313264} @@ -70,6 +69,4 @@ {"stream": "invoice_line_items", "data": {"id": "il_1K9GKLEcXtiJtvvhhHaYMebN", "object": "line_item", "amount": 8400, "amount_excluding_tax": 8400, "currency": "usd", "description": "a box of parsnips", "discount_amounts": [], "discountable": true, "discounts": [], "invoice_item": "ii_1K9GKLEcXtiJtvvhmr2AYOAx", "livemode": false, "metadata": {}, "period": {"end": 1640123817, "start": 1640123817}, "plan": null, "price": {"id": "price_1K9GKLEcXtiJtvvhXbrg33lq", "object": "price", "active": false, "billing_scheme": "per_unit", "created": 1640123817, "currency": "usd", "custom_unit_amount": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_Kou8cQxtIpF1p7", "recurring": null, "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", "unit_amount": 8400, "unit_amount_decimal": "8400"}, "proration": false, "proration_details": {"credited_items": null}, "quantity": 1, "subscription": null, "tax_amounts": [], "tax_rates": [], "type": "invoiceitem", "unit_amount_excluding_tax": "8400", "invoice_id": "in_1K9GK0EcXtiJtvvhSo2LvGqT"}, "emitted_at": 1697627336438} {"stream": "invoice_line_items", "data": {"id": "il_1MX384EcXtiJtvvh3j2K123f", "object": "line_item", "amount": 6000, "amount_excluding_tax": 6000, "currency": "usd", "description": "Test Product 1", "discount_amounts": [{"amount": 500, "discount": "di_1MX384EcXtiJtvvhkOrY57Ep"}], "discountable": true, "discounts": ["di_1MX384EcXtiJtvvhkOrY57Ep"], "invoice_item": "ii_1MX384EcXtiJtvvhguyn3iYb", "livemode": false, "metadata": {}, "period": {"end": 1675345628, "start": 1675345628}, "plan": null, "price": {"id": "price_1MX364EcXtiJtvvhE3WgTl4O", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1675345504, "currency": "usd", "custom_unit_amount": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_NHcKselSHfKdfc", "recurring": null, "tax_behavior": "exclusive", "tiers_mode": null, "transform_quantity": null, "type": "one_time", "unit_amount": 2000, "unit_amount_decimal": "2000"}, "proration": false, "proration_details": {"credited_items": null}, "quantity": 3, "subscription": null, "tax_amounts": [{"amount": 0, "inclusive": false, "tax_rate": "txr_1MX384EcXtiJtvvhAhVE20Ii", "taxability_reason": "not_collecting", "taxable_amount": 0}], "tax_rates": [], "type": "invoiceitem", "unit_amount_excluding_tax": "2000", "invoice_id": "in_1MX37hEcXtiJtvvhRSl1KbQm"}, "emitted_at": 1697627336446} {"stream": "invoice_line_items", "data": {"id": "il_1MX2yfEcXtiJtvvhiunY2j1x", "object": "line_item", "amount": 25200, "amount_excluding_tax": 25200, "currency": "usd", "description": "edgao-test-product", "discount_amounts": [{"amount": 2520, "discount": "di_1MX2ysEcXtiJtvvh8ORqRVKm"}], "discountable": true, "discounts": ["di_1MX2ysEcXtiJtvvh8ORqRVKm"], "invoice_item": "ii_1MX2yfEcXtiJtvvhfhyOG7SP", "livemode": false, "metadata": {}, "period": {"end": 1675345045, "start": 1675345045}, "plan": null, "price": {"id": "price_1K9GbqEcXtiJtvvhJ3lZe4i5", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1640124902, "currency": "usd", "custom_unit_amount": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_KouQ5ez86yREmB", "recurring": null, "tax_behavior": "inclusive", "tiers_mode": null, "transform_quantity": null, "type": "one_time", "unit_amount": 12600, "unit_amount_decimal": "12600"}, "proration": false, "proration_details": {"credited_items": null}, "quantity": 2, "subscription": null, "tax_amounts": [{"amount": 0, "inclusive": true, "tax_rate": "txr_1MX2yfEcXtiJtvvhVcMEMTRj", "taxability_reason": "not_collecting", "taxable_amount": 0}], "tax_rates": [], "type": "invoiceitem", "unit_amount_excluding_tax": "12600", "invoice_id": "in_1MX2yFEcXtiJtvvhMXhUCgKx"}, "emitted_at": 1697627336449} -{"stream":"subscription_items","data":{"id":"si_QEogVBC6jV71Ti","object":"subscription_item","billing_thresholds":null,"created":1717598563,"discounts":[],"metadata":{},"plan":{"id":"price_1PDtzkEcXtiJtvvhY4aqjMSq","object":"plan","active":true,"aggregate_usage":null,"amount":null,"amount_decimal":null,"billing_scheme":"tiered","created":1715111292,"currency":"usd","interval":"week","interval_count":1,"livemode":false,"metadata":{},"meter":null,"nickname":null,"product":"prod_Q423JP7oX7TF5U","tiers_mode":"graduated","transform_usage":null,"trial_period_days":null,"usage_type":"licensed"},"price":{"id":"price_1PDtzkEcXtiJtvvhY4aqjMSq","object":"price","active":true,"billing_scheme":"tiered","created":1715111292,"currency":"usd","custom_unit_amount":null,"livemode":false,"lookup_key":null,"metadata":{},"nickname":null,"product":"prod_Q423JP7oX7TF5U","recurring":{"aggregate_usage":null,"interval":"week","interval_count":1,"meter":null,"trial_period_days":null,"usage_type":"licensed"},"tax_behavior":"exclusive","tiers_mode":"graduated","transform_quantity":null,"type":"recurring","unit_amount":null,"unit_amount_decimal":null},"quantity":1,"subscription":"sub_1POL30EcXtiJtvvh4UdCl3kj","tax_rates":[]},"emitted_at":1720516305020} {"stream": "transfer_reversals", "data": {"id": "trr_1NGolCEcXtiJtvvhOYPck3CP", "object": "transfer_reversal", "amount": 100, "balance_transaction": "txn_1NGolCEcXtiJtvvhZRy4Kd5S", "created": 1686253482, "currency": "usd", "destination_payment_refund": "pyr_1NGolBEYmRTj5on1STal3rmp", "metadata": {}, "source_refund": null, "transfer": "tr_1NGoaCEcXtiJtvvhjmHtOGOm"}, "emitted_at": 1697627338960} -{"stream": "usage_records", "data": {"id": "sis_1OoiXpEcXtiJtvvhsC9WWdfe", "object": "usage_record_summary", "invoice": null, "livemode": false, "period": {"end": null, "start": 1708988652}, "subscription_item": "si_PdUBTrsn2C4ShU", "total_usage": 1}, "emitted_at": 1709109077213} diff --git a/airbyte-integrations/connectors/source-stripe/metadata.yaml b/airbyte-integrations/connectors/source-stripe/metadata.yaml index d2ccfca192acc..36dacd91219f3 100644 --- a/airbyte-integrations/connectors/source-stripe/metadata.yaml +++ b/airbyte-integrations/connectors/source-stripe/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: e094cb9a-26de-4645-8761-65c0c425d1de - dockerImageTag: 5.6.0 + dockerImageTag: 5.6.1 dockerRepository: airbyte/source-stripe documentationUrl: https://docs.airbyte.com/integrations/sources/stripe erdUrl: https://dbdocs.io/airbyteio/source-stripe?view=relationships diff --git a/airbyte-integrations/connectors/source-stripe/poetry.lock b/airbyte-integrations/connectors/source-stripe/poetry.lock index 25149610c9336..74364cc49385a 100644 --- a/airbyte-integrations/connectors/source-stripe/poetry.lock +++ b/airbyte-integrations/connectors/source-stripe/poetry.lock @@ -1,14 +1,14 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "5.5.2" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.5.2-py3-none-any.whl", hash = "sha256:cbca686ce52b1b26a49801308927662ef477400ca0142832f06f0add3073bf0e"}, - {file = "airbyte_cdk-5.5.2.tar.gz", hash = "sha256:7e105be721a141979852229fbeb1a2aaf12bd2adf6b51806867f07ca4c3d365b"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -26,7 +26,7 @@ jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" nltk = "3.8.1" orjson = ">=3.10.7,<4.0.0" -pandas = "2.2.0" +pandas = "2.2.2" pendulum = "<3.0.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" @@ -40,7 +40,7 @@ serpyco-rs = ">=1.10.2,<2.0.0" wcmatch = "8.4" [package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] @@ -68,13 +68,13 @@ files = [ [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, + {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, ] [package.dependencies] @@ -84,9 +84,9 @@ sniffio = ">=1.1" typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "attributes-doc" @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -153,13 +153,13 @@ files = [ [[package]] name = "cattrs" -version = "24.1.0" +version = "24.1.2" description = "Composable complex class support for attrs and dataclasses." optional = false python-versions = ">=3.8" files = [ - {file = "cattrs-24.1.0-py3-none-any.whl", hash = "sha256:043bb8af72596432a7df63abcff0055ac0f198a4d2e95af8db5a936a7074a761"}, - {file = "cattrs-24.1.0.tar.gz", hash = "sha256:8274f18b253bf7674a43da851e3096370d67088165d23138b04a1c04c8eaf48e"}, + {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, + {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, ] [package.dependencies] @@ -524,13 +524,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -541,7 +541,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -570,15 +570,18 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "idna" -version = "3.8" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, - {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -713,13 +716,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.117" +version = "0.1.130" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.117-py3-none-any.whl", hash = "sha256:e936ee9bcf8293b0496df7ba462a3702179fbe51f9dc28744b0fbec0dbf206ae"}, - {file = "langsmith-0.1.117.tar.gz", hash = "sha256:a1b532f49968b9339bcaff9118d141846d52ed3d803f342902e7448edf1d662b"}, + {file = "langsmith-0.1.130-py3-none-any.whl", hash = "sha256:acf27d77e699d84b03045f3f226e78be1dffb3e756aa1a085f9993a45380e8b2"}, + {file = "langsmith-0.1.130.tar.gz", hash = "sha256:3e43f87655a86395133e3a745d5968667d4d05dc9a24c617f89224c8cbf54dce"}, ] [package.dependencies] @@ -727,6 +730,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -824,47 +828,64 @@ twitter = ["twython"] [[package]] name = "numpy" -version = "1.26.4" +version = "2.1.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, ] [[package]] @@ -946,46 +967,46 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1010,6 +1031,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -1051,13 +1073,13 @@ pytzdata = ">=2020.1" [[package]] name = "platformdirs" -version = "4.3.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.3.2-py3-none-any.whl", hash = "sha256:eb1c8582560b34ed4ba105009a4badf7f6f85768b30126f351328507b2beb617"}, - {file = "platformdirs-4.3.2.tar.gz", hash = "sha256:9e5e27a08aa095dd127b9f2e764d74254f482fef22b0970773bfba79d091ab8c"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] @@ -1093,18 +1115,18 @@ files = [ [[package]] name = "pydantic" -version = "2.9.1" +version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.9.1-py3-none-any.whl", hash = "sha256:7aff4db5fdf3cf573d4b3c30926a510a10e19a0774d38fc4967f78beb6deb612"}, - {file = "pydantic-2.9.1.tar.gz", hash = "sha256:1363c7d975c7036df0db2b4a61f2e062fbc0aa5ab5f2772e0ffc7191a4f4bce2"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.3" +pydantic-core = "2.23.4" typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] @@ -1113,100 +1135,100 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.23.3" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.23.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7f10a5d1b9281392f1bf507d16ac720e78285dfd635b05737c3911637601bae6"}, - {file = "pydantic_core-2.23.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c09a7885dd33ee8c65266e5aa7fb7e2f23d49d8043f089989726391dd7350c5"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6470b5a1ec4d1c2e9afe928c6cb37eb33381cab99292a708b8cb9aa89e62429b"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9172d2088e27d9a185ea0a6c8cebe227a9139fd90295221d7d495944d2367700"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86fc6c762ca7ac8fbbdff80d61b2c59fb6b7d144aa46e2d54d9e1b7b0e780e01"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0cb80fd5c2df4898693aa841425ea1727b1b6d2167448253077d2a49003e0ed"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03667cec5daf43ac4995cefa8aaf58f99de036204a37b889c24a80927b629cec"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:047531242f8e9c2db733599f1c612925de095e93c9cc0e599e96cf536aaf56ba"}, - {file = "pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5499798317fff7f25dbef9347f4451b91ac2a4330c6669821c8202fd354c7bee"}, - {file = "pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bbb5e45eab7624440516ee3722a3044b83fff4c0372efe183fd6ba678ff681fe"}, - {file = "pydantic_core-2.23.3-cp310-none-win32.whl", hash = "sha256:8b5b3ed73abb147704a6e9f556d8c5cb078f8c095be4588e669d315e0d11893b"}, - {file = "pydantic_core-2.23.3-cp310-none-win_amd64.whl", hash = "sha256:2b603cde285322758a0279995b5796d64b63060bfbe214b50a3ca23b5cee3e83"}, - {file = "pydantic_core-2.23.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c889fd87e1f1bbeb877c2ee56b63bb297de4636661cc9bbfcf4b34e5e925bc27"}, - {file = "pydantic_core-2.23.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea85bda3189fb27503af4c45273735bcde3dd31c1ab17d11f37b04877859ef45"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7f7f72f721223f33d3dc98a791666ebc6a91fa023ce63733709f4894a7dc611"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b2b55b0448e9da68f56b696f313949cda1039e8ec7b5d294285335b53104b61"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c24574c7e92e2c56379706b9a3f07c1e0c7f2f87a41b6ee86653100c4ce343e5"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2b05e6ccbee333a8f4b8f4d7c244fdb7a979e90977ad9c51ea31261e2085ce0"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2c409ce1c219c091e47cb03feb3c4ed8c2b8e004efc940da0166aaee8f9d6c8"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d965e8b325f443ed3196db890d85dfebbb09f7384486a77461347f4adb1fa7f8"}, - {file = "pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f56af3a420fb1ffaf43ece3ea09c2d27c444e7c40dcb7c6e7cf57aae764f2b48"}, - {file = "pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b01a078dd4f9a52494370af21aa52964e0a96d4862ac64ff7cea06e0f12d2c5"}, - {file = "pydantic_core-2.23.3-cp311-none-win32.whl", hash = "sha256:560e32f0df04ac69b3dd818f71339983f6d1f70eb99d4d1f8e9705fb6c34a5c1"}, - {file = "pydantic_core-2.23.3-cp311-none-win_amd64.whl", hash = "sha256:c744fa100fdea0d000d8bcddee95213d2de2e95b9c12be083370b2072333a0fa"}, - {file = "pydantic_core-2.23.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e0ec50663feedf64d21bad0809f5857bac1ce91deded203efc4a84b31b2e4305"}, - {file = "pydantic_core-2.23.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:db6e6afcb95edbe6b357786684b71008499836e91f2a4a1e55b840955b341dbb"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98ccd69edcf49f0875d86942f4418a4e83eb3047f20eb897bffa62a5d419c8fa"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a678c1ac5c5ec5685af0133262103defb427114e62eafeda12f1357a12140162"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01491d8b4d8db9f3391d93b0df60701e644ff0894352947f31fff3e52bd5c801"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcf31facf2796a2d3b7fe338fe8640aa0166e4e55b4cb108dbfd1058049bf4cb"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7200fd561fb3be06827340da066df4311d0b6b8eb0c2116a110be5245dceb326"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc1636770a809dee2bd44dd74b89cc80eb41172bcad8af75dd0bc182c2666d4c"}, - {file = "pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:67a5def279309f2e23014b608c4150b0c2d323bd7bccd27ff07b001c12c2415c"}, - {file = "pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:748bdf985014c6dd3e1e4cc3db90f1c3ecc7246ff5a3cd4ddab20c768b2f1dab"}, - {file = "pydantic_core-2.23.3-cp312-none-win32.whl", hash = "sha256:255ec6dcb899c115f1e2a64bc9ebc24cc0e3ab097775755244f77360d1f3c06c"}, - {file = "pydantic_core-2.23.3-cp312-none-win_amd64.whl", hash = "sha256:40b8441be16c1e940abebed83cd006ddb9e3737a279e339dbd6d31578b802f7b"}, - {file = "pydantic_core-2.23.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6daaf5b1ba1369a22c8b050b643250e3e5efc6a78366d323294aee54953a4d5f"}, - {file = "pydantic_core-2.23.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d015e63b985a78a3d4ccffd3bdf22b7c20b3bbd4b8227809b3e8e75bc37f9cb2"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3fc572d9b5b5cfe13f8e8a6e26271d5d13f80173724b738557a8c7f3a8a3791"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f6bd91345b5163ee7448bee201ed7dd601ca24f43f439109b0212e296eb5b423"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc379c73fd66606628b866f661e8785088afe2adaba78e6bbe80796baf708a63"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbdce4b47592f9e296e19ac31667daed8753c8367ebb34b9a9bd89dacaa299c9"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3cf31edf405a161a0adad83246568647c54404739b614b1ff43dad2b02e6d5"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e22b477bf90db71c156f89a55bfe4d25177b81fce4aa09294d9e805eec13855"}, - {file = "pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0a0137ddf462575d9bce863c4c95bac3493ba8e22f8c28ca94634b4a1d3e2bb4"}, - {file = "pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:203171e48946c3164fe7691fc349c79241ff8f28306abd4cad5f4f75ed80bc8d"}, - {file = "pydantic_core-2.23.3-cp313-none-win32.whl", hash = "sha256:76bdab0de4acb3f119c2a4bff740e0c7dc2e6de7692774620f7452ce11ca76c8"}, - {file = "pydantic_core-2.23.3-cp313-none-win_amd64.whl", hash = "sha256:37ba321ac2a46100c578a92e9a6aa33afe9ec99ffa084424291d84e456f490c1"}, - {file = "pydantic_core-2.23.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d063c6b9fed7d992bcbebfc9133f4c24b7a7f215d6b102f3e082b1117cddb72c"}, - {file = "pydantic_core-2.23.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6cb968da9a0746a0cf521b2b5ef25fc5a0bee9b9a1a8214e0a1cfaea5be7e8a4"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edbefe079a520c5984e30e1f1f29325054b59534729c25b874a16a5048028d16"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbaaf2ef20d282659093913da9d402108203f7cb5955020bd8d1ae5a2325d1c4"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb539d7e5dc4aac345846f290cf504d2fd3c1be26ac4e8b5e4c2b688069ff4cf"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e6f33503c5495059148cc486867e1d24ca35df5fc064686e631e314d959ad5b"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04b07490bc2f6f2717b10c3969e1b830f5720b632f8ae2f3b8b1542394c47a8e"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:03795b9e8a5d7fda05f3873efc3f59105e2dcff14231680296b87b80bb327295"}, - {file = "pydantic_core-2.23.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c483dab0f14b8d3f0df0c6c18d70b21b086f74c87ab03c59250dbf6d3c89baba"}, - {file = "pydantic_core-2.23.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b2682038e255e94baf2c473dca914a7460069171ff5cdd4080be18ab8a7fd6e"}, - {file = "pydantic_core-2.23.3-cp38-none-win32.whl", hash = "sha256:f4a57db8966b3a1d1a350012839c6a0099f0898c56512dfade8a1fe5fb278710"}, - {file = "pydantic_core-2.23.3-cp38-none-win_amd64.whl", hash = "sha256:13dd45ba2561603681a2676ca56006d6dee94493f03d5cadc055d2055615c3ea"}, - {file = "pydantic_core-2.23.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82da2f4703894134a9f000e24965df73cc103e31e8c31906cc1ee89fde72cbd8"}, - {file = "pydantic_core-2.23.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dd9be0a42de08f4b58a3cc73a123f124f65c24698b95a54c1543065baca8cf0e"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89b731f25c80830c76fdb13705c68fef6a2b6dc494402987c7ea9584fe189f5d"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6de1ec30c4bb94f3a69c9f5f2182baeda5b809f806676675e9ef6b8dc936f28"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb68b41c3fa64587412b104294b9cbb027509dc2f6958446c502638d481525ef"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c3980f2843de5184656aab58698011b42763ccba11c4a8c35936c8dd6c7068c"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94f85614f2cba13f62c3c6481716e4adeae48e1eaa7e8bac379b9d177d93947a"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:510b7fb0a86dc8f10a8bb43bd2f97beb63cffad1203071dc434dac26453955cd"}, - {file = "pydantic_core-2.23.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1eba2f7ce3e30ee2170410e2171867ea73dbd692433b81a93758ab2de6c64835"}, - {file = "pydantic_core-2.23.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b259fd8409ab84b4041b7b3f24dcc41e4696f180b775961ca8142b5b21d0e70"}, - {file = "pydantic_core-2.23.3-cp39-none-win32.whl", hash = "sha256:40d9bd259538dba2f40963286009bf7caf18b5112b19d2b55b09c14dde6db6a7"}, - {file = "pydantic_core-2.23.3-cp39-none-win_amd64.whl", hash = "sha256:5a8cd3074a98ee70173a8633ad3c10e00dcb991ecec57263aacb4095c5efb958"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f399e8657c67313476a121a6944311fab377085ca7f490648c9af97fc732732d"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6b5547d098c76e1694ba85f05b595720d7c60d342f24d5aad32c3049131fa5c4"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dda0290a6f608504882d9f7650975b4651ff91c85673341789a476b1159f211"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65b6e5da855e9c55a0c67f4db8a492bf13d8d3316a59999cfbaf98cc6e401961"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:09e926397f392059ce0afdcac920df29d9c833256354d0c55f1584b0b70cf07e"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:87cfa0ed6b8c5bd6ae8b66de941cece179281239d482f363814d2b986b79cedc"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e61328920154b6a44d98cabcb709f10e8b74276bc709c9a513a8c37a18786cc4"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce3317d155628301d649fe5e16a99528d5680af4ec7aa70b90b8dacd2d725c9b"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e89513f014c6be0d17b00a9a7c81b1c426f4eb9224b15433f3d98c1a071f8433"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4f62c1c953d7ee375df5eb2e44ad50ce2f5aff931723b398b8bc6f0ac159791a"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2718443bc671c7ac331de4eef9b673063b10af32a0bb385019ad61dcf2cc8f6c"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d90e08b2727c5d01af1b5ef4121d2f0c99fbee692c762f4d9d0409c9da6541"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b676583fc459c64146debea14ba3af54e540b61762dfc0613dc4e98c3f66eeb"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:50e4661f3337977740fdbfbae084ae5693e505ca2b3130a6d4eb0f2281dc43b8"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:68f4cf373f0de6abfe599a38307f4417c1c867ca381c03df27c873a9069cda25"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:59d52cf01854cb26c46958552a21acb10dd78a52aa34c86f284e66b209db8cab"}, - {file = "pydantic_core-2.23.3.tar.gz", hash = "sha256:3cb0f65d8b4121c1b015c60104a685feb929a29d7cf204387c7f2688c7974690"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] @@ -1424,90 +1446,105 @@ files = [ [[package]] name = "regex" -version = "2024.7.24" +version = "2024.9.11" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" files = [ - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa"}, - {file = "regex-2024.7.24-cp310-cp310-win32.whl", hash = "sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66"}, - {file = "regex-2024.7.24-cp310-cp310-win_amd64.whl", hash = "sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e"}, - {file = "regex-2024.7.24-cp311-cp311-win32.whl", hash = "sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c"}, - {file = "regex-2024.7.24-cp311-cp311-win_amd64.whl", hash = "sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38"}, - {file = "regex-2024.7.24-cp312-cp312-win32.whl", hash = "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc"}, - {file = "regex-2024.7.24-cp312-cp312-win_amd64.whl", hash = "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8"}, - {file = "regex-2024.7.24-cp38-cp38-win32.whl", hash = "sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96"}, - {file = "regex-2024.7.24-cp38-cp38-win_amd64.whl", hash = "sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9"}, - {file = "regex-2024.7.24-cp39-cp39-win32.whl", hash = "sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1"}, - {file = "regex-2024.7.24-cp39-cp39-win_amd64.whl", hash = "sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9"}, - {file = "regex-2024.7.24.tar.gz", hash = "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, ] [[package]] @@ -1578,6 +1615,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "serpyco-rs" version = "1.11.0" @@ -1634,18 +1685,18 @@ typing-extensions = "*" [[package]] name = "setuptools" -version = "74.1.2" +version = "75.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-74.1.2-py3-none-any.whl", hash = "sha256:5f4c08aa4d3ebcb57a50c33b1b07e94315d7fc7230f7115e47fc99776c8ce308"}, - {file = "setuptools-74.1.2.tar.gz", hash = "sha256:95b40ed940a1c67eb70fc099094bd6e99c6ee7c23aa2306f4d2697ba7916f9c6"}, + {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, + {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] @@ -1691,13 +1742,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -1733,13 +1784,13 @@ files = [ [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] @@ -1758,13 +1809,13 @@ six = "*" [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] diff --git a/airbyte-integrations/connectors/source-stripe/pyproject.toml b/airbyte-integrations/connectors/source-stripe/pyproject.toml index 87aafe1298f19..d4393510201fc 100644 --- a/airbyte-integrations/connectors/source-stripe/pyproject.toml +++ b/airbyte-integrations/connectors/source-stripe/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.6.0" +version = "5.6.1" name = "source-stripe" description = "Source implementation for Stripe." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/stripe-migrations.md b/docs/integrations/sources/stripe-migrations.md index c29ba216d9c75..4add9e98d74df 100644 --- a/docs/integrations/sources/stripe-migrations.md +++ b/docs/integrations/sources/stripe-migrations.md @@ -1,9 +1,11 @@ # Stripe Migration Guide -## Upgrading to 5.6.0 +### Upgrading to 5.6.0 The `Payment Methods` stream previously sync data from Treasury flows. This version will now provide data about customers' payment methods. +We bumped this in a minor version because we didn't want to pause all connection, but still want to document the process of moving to this latest version. + ### Summary of changes: - The stream `Payment Methods` will now provide data about customers' payment methods. diff --git a/docs/integrations/sources/stripe.md b/docs/integrations/sources/stripe.md index ac5cc91726f5c..d61be90955820 100644 --- a/docs/integrations/sources/stripe.md +++ b/docs/integrations/sources/stripe.md @@ -239,6 +239,7 @@ Each record is marked with `is_deleted` flag when the appropriate event happens | Version | Date | Pull Request | Subject | |:--------|:-----------|:----------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 5.6.1 | 2024-10-03 | [46327](https://github.com/airbytehq/airbyte/pull/46327) | Bump the cdk to 5.10.2 to stop using PrintBuffer optimization due to record count mismatches | | 5.6.0 | 2024-09-10 | [44891](https://github.com/airbytehq/airbyte/pull/44891) | Update `Payment Methods` stream | | 5.5.4 | 2024-09-09 | [45348](https://github.com/airbytehq/airbyte/pull/45348) | Remove `stripe` python package | | 5.5.3 | 2024-09-03 | [45101](https://github.com/airbytehq/airbyte/pull/45101) | Fix regression following pagination issue fix | From 4fc3dbc295266e52ce0e78317e5376c9ec4c7d13 Mon Sep 17 00:00:00 2001 From: Aazam Thakur <59562284+aazam-gh@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:04:30 +0530 Subject: [PATCH 024/379] source-simplesat contribution from aazam-gh (#46293) --- .../connectors/source-simplesat/README.md | 44 ++ .../acceptance-test-config.yml | 17 + .../connectors/source-simplesat/icon.svg | 5 + .../connectors/source-simplesat/manifest.yaml | 590 ++++++++++++++++++ .../connectors/source-simplesat/metadata.yaml | 35 ++ docs/integrations/sources/simplesat.md | 52 ++ 6 files changed, 743 insertions(+) create mode 100644 airbyte-integrations/connectors/source-simplesat/README.md create mode 100644 airbyte-integrations/connectors/source-simplesat/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-simplesat/icon.svg create mode 100644 airbyte-integrations/connectors/source-simplesat/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-simplesat/metadata.yaml create mode 100644 docs/integrations/sources/simplesat.md diff --git a/airbyte-integrations/connectors/source-simplesat/README.md b/airbyte-integrations/connectors/source-simplesat/README.md new file mode 100644 index 0000000000000..74dafcba682bd --- /dev/null +++ b/airbyte-integrations/connectors/source-simplesat/README.md @@ -0,0 +1,44 @@ +# Simplesat +This directory contains the manifest-only connector for `source-simplesat`. + +This is the setup guide for the Simplesat source connector. +The Simplesat source connector which ingests data from the Simplesat API. +Simplesat is a engaging survey tool for service businesses to gather insight and feedback from their customers. + +The source supports 3 of the endpoints from the API (questions, surveys and answers) +For more information, checkout the website https://www.simplesat.io/ + +An API key is required for authentication and using this connector. +In order to obtain an API key, you must first create a Simplesat account. +Once logged-in, you will find your API key in the account settings. +You can find more about their API here https://documenter.getpostman.com/view/457268/SVfRt7WJ?version=latest + + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-simplesat:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-simplesat build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-simplesat test +``` + diff --git a/airbyte-integrations/connectors/source-simplesat/acceptance-test-config.yml b/airbyte-integrations/connectors/source-simplesat/acceptance-test-config.yml new file mode 100644 index 0000000000000..aec0de2717e4c --- /dev/null +++ b/airbyte-integrations/connectors/source-simplesat/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-simplesat:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-simplesat/icon.svg b/airbyte-integrations/connectors/source-simplesat/icon.svg new file mode 100644 index 0000000000000..420fc40600a96 --- /dev/null +++ b/airbyte-integrations/connectors/source-simplesat/icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/airbyte-integrations/connectors/source-simplesat/manifest.yaml b/airbyte-integrations/connectors/source-simplesat/manifest.yaml new file mode 100644 index 0000000000000..931d728420496 --- /dev/null +++ b/airbyte-integrations/connectors/source-simplesat/manifest.yaml @@ -0,0 +1,590 @@ +version: 5.8.1 + +type: DeclarativeSource + +description: | + The Simplesat source connector which ingests data from the Simplesat API. + Simplesat is a engaging survey tool for service businesses to gather insight and feedback from their customers. + + The source supports 3 of the endpoints from the API (questions, surveys and answers) + For more information, checkout the website https://www.simplesat.io/ + + An API key is required for authentication and using this connector. + In order to obtain an API key, you must first create a Simplesat account. + Once logged-in, you will find your API key in the account settings. + You can find more about their API here https://documenter.getpostman.com/view/457268/UVRDGRZ2#fc3683b6-2933-425b-b4d1-faa8377de1ac + +check: + type: CheckStream + stream_names: + - surveys + +definitions: + streams: + surveys: + type: DeclarativeStream + name: surveys + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /surveys + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - surveys + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/surveys" + questions: + type: DeclarativeStream + name: questions + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: questions + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - questions + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/questions" + answers: + type: DeclarativeStream + name: answers + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: answers/search + http_method: POST + request_body_json: + end_date: "{{ config[\"end_date\"] }}" + start_date: "{{ config[\"start_date\"] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - answers + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/answers" + responses: + type: DeclarativeStream + name: responses + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: responses/search + http_method: POST + request_body_json: + end_date: "{{ config[\"end_date\"] }}" + start_date: "{{ config[\"start_date\"] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - responses + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/responses" + base_requester: + type: HttpRequester + url_base: https://api.simplesat.io/api/v1/ + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"api_key\"] }}" + inject_into: + type: RequestOption + field_name: X-Simplesat-Token + inject_into: header + +streams: + - $ref: "#/definitions/streams/surveys" + - $ref: "#/definitions/streams/questions" + - $ref: "#/definitions/streams/answers" + - $ref: "#/definitions/streams/responses" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + name: api_key + order: 0 + title: API Key + airbyte_secret: true + start_date: + type: string + description: Date from when the sync should start + order: 1 + title: start_date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + end_date: + type: string + description: Date till when the sync should end + order: 2 + title: end_date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + additionalProperties: true + +metadata: + autoImportSchema: + surveys: false + questions: false + answers: false + responses: false + testedStreams: + surveys: + hasRecords: true + streamHash: 77a63c41e8ec96e420e9805c276d410e468895f8 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + questions: + hasRecords: true + streamHash: de649b2c6afc23b26715903969596bd3f67099a0 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + answers: + streamHash: add13d224d14d2615ebc0a3dd5248f5c4c580ff4 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + responses: + streamHash: fd8facc4b6b7a8fd47c041936a83dfde5960401a + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://documenter.getpostman.com/view/457268/SVfRt7WJ?version=latest + +schemas: + surveys: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + brand_name: + type: + - string + - "null" + id: + type: number + metric: + type: + - string + - "null" + name: + type: + - string + - "null" + survey_token: + type: + - string + - "null" + survey_type: + type: + - string + - "null" + required: + - id + questions: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + choices: + type: + - array + - "null" + items: + type: + - string + - "null" + id: + type: number + metric: + type: + - string + - "null" + order: + type: + - number + - "null" + rating_scale: + type: + - boolean + - "null" + required: + type: + - boolean + - "null" + rules: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + action: + type: + - string + - "null" + conditions: + type: + - array + - "null" + items: + type: + - string + - "null" + question: + type: + - object + - "null" + properties: + choices: + type: + - array + - "null" + id: + type: + - number + - "null" + required: + type: + - boolean + - "null" + rules: + type: + - array + - "null" + text: + type: + - string + - "null" + survey: + type: + - object + - "null" + properties: + id: + type: + - number + - "null" + name: + type: + - string + - "null" + text: + type: + - string + - "null" + required: + - id + answers: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + choice: + type: + - string + - "null" + choice_label: + type: + - string + - "null" + created: + type: + - string + - "null" + follow_up_answer: + type: + - string + - "null" + id: + type: number + modified: + type: + - string + - "null" + published_as_testimonial: + type: + - boolean + - "null" + question: + type: + - object + - "null" + properties: + id: + type: + - number + - "null" + metric: + type: + - string + - "null" + text: + type: + - string + - "null" + response_id: + type: + - number + - "null" + sentiment: + type: + - string + - "null" + survey: + type: + - object + - "null" + properties: + id: + type: + - number + - "null" + name: + type: + - string + - "null" + required: + - id + responses: + type: object + $schema: http://json-schema.org/schema# + properties: + answers: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + choice: + type: + - string + - "null" + choice_label: + type: + - string + - "null" + follow_up_answer: + type: + - string + - "null" + follow_up_question: + type: + - object + - "null" + properties: + id: + type: + - number + - "null" + metric: + type: + - string + - "null" + text: + type: + - string + - "null" + id: + type: + - number + - "null" + question: + type: + - object + - "null" + properties: + id: + type: + - number + - "null" + metric: + type: + - string + - "null" + text: + type: + - string + - "null" + sentiment: + type: + - string + - "null" + created: + type: + - string + - "null" + customer: + type: + - object + - "null" + properties: + custom_attributes: + type: + - object + - "null" + email: + type: + - string + - "null" + id: + type: + - number + - "null" + tags: + type: + - array + - "null" + id: + type: number + ip_address: + type: + - string + - "null" + modified: + type: + - string + - "null" + survey: + type: + - object + - "null" + properties: + id: + type: + - number + - "null" + name: + type: + - string + - "null" + ticket: + type: + - object + - "null" + properties: + custom_attributes: + type: + - object + - "null" + external_id: + type: + - string + - "null" + id: + type: + - number + - "null" + required: + - id + additionalProperties: true diff --git a/airbyte-integrations/connectors/source-simplesat/metadata.yaml b/airbyte-integrations/connectors/source-simplesat/metadata.yaml new file mode 100644 index 0000000000000..f3706002245ca --- /dev/null +++ b/airbyte-integrations/connectors/source-simplesat/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.simplesat.io" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-simplesat + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.8.1@sha256:6632036bdf769dc6d55103a8ba946253d186314962bcd9867e4e21e00eae4f09 + connectorSubtype: api + connectorType: source + definitionId: c2dd8b7e-3e5b-45cb-9522-3d3025ac5796 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-simplesat + githubIssueLabel: source-simplesat + icon: icon.svg + license: MIT + name: Simplesat + releaseDate: 2024-10-01 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/simplesat + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/simplesat.md b/docs/integrations/sources/simplesat.md new file mode 100644 index 0000000000000..ad6e5aad44949 --- /dev/null +++ b/docs/integrations/sources/simplesat.md @@ -0,0 +1,52 @@ +# Simplesat + +This is the setup guide for the Simplesat source connector which ingests data from the simplesat API. + +## Prerequisites + +An API key is required for authentication and using this connector. In order to obtain an API key, you must first create a Simplesat account. + +Once logged-in, you will find your API key in the account settings.You can find more about their API here https://documenter.getpostman.com/view/457268/SVfRt7WJ?version=latest + +For the `answers` and `responses` endpoint, you can specify a `start_date` and `end_date` for replicating data between these dates. + +## Set up the Adjust source connector + +1. Click **Sources** and then click **+ New source**. +2. On the Set up the source page, select **Simplesat** from the Source type dropdown. +3. Enter a name for your new source. +4. For **API Key**, enter your API key obtained in the previous step. +5. For **start_date**, enter a date in YYYY-MM-DD format (UTC timezone is assumed). Data starting from this date will be replicated. +6. For **end_date**, enter a date in YYYY-MM-DD format (UTC timezone is assumed). Data ending till this date will be replicated. +7. Click **Set up source**. + +## Supported sync modes + +The source connector supports the following [sync modes](https://docs.airbyte.com/cloud/core-concepts#connection-sync-modes): + +- Full Refresh + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| surveys | id | DefaultPaginator | ✅ | ❌ | +| questions | id | DefaultPaginator | ✅ | ❌ | +| answers | id | DefaultPaginator | ✅ | ❌ | +| responses | id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-01 | | Initial release by [@aazam-gh](https://github.com/aazam-gh) via Connector Builder | + +
From 679a5c47d1fe6b380d1d5034385a48be77c269ba Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Fri, 4 Oct 2024 09:12:32 -0700 Subject: [PATCH 025/379] Bulk Load CDK: Preparatory Refactor for adding Force Flush (#46369) --- .../airbyte/cdk/message/MessageQueueReader.kt | 42 ++++++---------- .../io/airbyte/cdk/state/FlushStrategy.kt | 34 +++++++++++++ .../io/airbyte/cdk/task/SpillToDiskTask.kt | 50 +++++++++++-------- .../io/airbyte/cdk/util/CoroutineUtils.kt | 13 +++++ .../kotlin/io/airbyte/cdk/util/RangeUtils.kt | 18 +++++++ .../airbyte/cdk/task/SpillToDiskTaskTest.kt | 26 +++++++--- 6 files changed, 127 insertions(+), 56 deletions(-) create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/RangeUtils.kt diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueReader.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueReader.kt index 4f8c40a9f4da6..29cff71a47951 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueReader.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueReader.kt @@ -16,7 +16,7 @@ import kotlinx.coroutines.flow.flow * terminate when maxBytes has been read, or when the stream is complete. */ interface MessageQueueReader { - suspend fun readChunk(key: K, maxBytes: Long): Flow + suspend fun read(key: K): Flow } @Singleton @@ -26,32 +26,22 @@ class DestinationMessageQueueReader( ) : MessageQueueReader { private val log = KotlinLogging.logger {} - override suspend fun readChunk( - key: DestinationStream.Descriptor, - maxBytes: Long - ): Flow = flow { - log.info { "Reading chunk of $maxBytes bytes from stream $key" } - - var totalBytesRead = 0L - var recordsRead = 0L - while (totalBytesRead < maxBytes) { - when (val wrapped = messageQueue.getChannel(key).receive()) { - is StreamRecordWrapped -> { - totalBytesRead += wrapped.sizeBytes - emit(wrapped) - } - is StreamCompleteWrapped -> { - messageQueue.getChannel(key).close() - emit(wrapped) - log.info { "Read end-of-stream for $key" } - return@flow + override suspend fun read(key: DestinationStream.Descriptor): Flow = + flow { + log.info { "Reading from stream $key" } + + while (true) { + when (val wrapped = messageQueue.getChannel(key).receive()) { + is StreamRecordWrapped -> { + emit(wrapped) + } + is StreamCompleteWrapped -> { + messageQueue.getChannel(key).close() + emit(wrapped) + log.info { "Read end-of-stream for $key" } + return@flow + } } } - recordsRead++ } - - log.info { "Read $recordsRead records (${totalBytesRead}b) from stream $key" } - - return@flow - } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt new file mode 100644 index 0000000000000..c4749d39284e8 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.state + +import com.google.common.collect.Range +import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.command.DestinationStream +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton + +interface FlushStrategy { + suspend fun shouldFlush( + stream: DestinationStream, + rangeRead: Range, + bytesProcessed: Long + ): Boolean +} + +@Singleton +@Secondary +class DefaultFlushStrategy( + private val config: DestinationConfiguration, +) : FlushStrategy { + + override suspend fun shouldFlush( + stream: DestinationStream, + rangeRead: Range, + bytesProcessed: Long + ): Boolean { + return bytesProcessed >= config.recordBatchSizeBytes + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt index 5a4bbbf0a5ef4..48a7a8e82fa99 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt @@ -14,12 +14,15 @@ import io.airbyte.cdk.message.MessageQueueReader import io.airbyte.cdk.message.SpilledRawMessagesLocalFile import io.airbyte.cdk.message.StreamCompleteWrapped import io.airbyte.cdk.message.StreamRecordWrapped +import io.airbyte.cdk.state.FlushStrategy +import io.airbyte.cdk.util.takeUntilInclusive +import io.airbyte.cdk.util.withNextAdjacentValue import io.github.oshai.kotlinlogging.KotlinLogging import jakarta.inject.Singleton import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.last import kotlinx.coroutines.flow.runningFold -import kotlinx.coroutines.flow.toList import kotlinx.coroutines.withContext interface SpillToDiskTask : StreamTask @@ -35,8 +38,9 @@ class DefaultSpillToDiskTask( private val tmpFileProvider: TempFileProvider, private val queueReader: MessageQueueReader, + private val flushStrategy: FlushStrategy, override val stream: DestinationStream, - private val launcher: DestinationTaskLauncher + private val launcher: DestinationTaskLauncher, ) : SpillToDiskTask { private val log = KotlinLogging.logger {} @@ -44,19 +48,9 @@ class DefaultSpillToDiskTask( val range: Range? = null, val sizeBytes: Long = 0, val hasReadEndOfStream: Boolean = false, + val forceFlush: Boolean = false, ) - // Necessary because Guava's Range/sets have no "empty" range - private fun withIndex(range: Range?, index: Long): Range { - return if (range == null) { - Range.singleton(index) - } else if (index != range.upperEndpoint() + 1) { - throw IllegalStateException("Expected index ${range.upperEndpoint() + 1}, got $index") - } else { - range.span(Range.singleton(index)) - } - } - override suspend fun execute() { val (path, result) = withContext(Dispatchers.IO) { @@ -69,25 +63,29 @@ class DefaultSpillToDiskTask( val result = tmpFile.toFileWriter().use { queueReader - .readChunk(stream.descriptor, config.recordBatchSizeBytes) + .read(stream.descriptor) .runningFold(ReadResult()) { (range, sizeBytes, _), wrapped -> when (wrapped) { is StreamRecordWrapped -> { - val nextRange = withIndex(range, wrapped.index) it.write(wrapped.record.serialized) it.write("\n") - ReadResult(nextRange, sizeBytes + wrapped.sizeBytes) + val nextRange = range.withNextAdjacentValue(wrapped.index) + val nextSize = sizeBytes + wrapped.sizeBytes + val forceFlush = + flushStrategy.shouldFlush(stream, nextRange, nextSize) + ReadResult(nextRange, nextSize, forceFlush = forceFlush) } is StreamCompleteWrapped -> { - val nextRange = withIndex(range, wrapped.index) - return@runningFold ReadResult(nextRange, sizeBytes, true) + val nextRange = range.withNextAdjacentValue(wrapped.index) + ReadResult(nextRange, sizeBytes, hasReadEndOfStream = true) } } } .flowOn(Dispatchers.IO) - .toList() + .takeUntilInclusive { it.hasReadEndOfStream || it.forceFlush } + .last() } - Pair(tmpFile, result.last()) + Pair(tmpFile, result) } /** Handle the result */ @@ -116,12 +114,20 @@ class DefaultSpillToDiskTaskFactory( private val config: DestinationConfiguration, private val tmpFileProvider: TempFileProvider, private val queueReader: - MessageQueueReader + MessageQueueReader, + private val flushStrategy: FlushStrategy, ) : SpillToDiskTaskFactory { override fun make( taskLauncher: DestinationTaskLauncher, stream: DestinationStream ): SpillToDiskTask { - return DefaultSpillToDiskTask(config, tmpFileProvider, queueReader, stream, taskLauncher) + return DefaultSpillToDiskTask( + config, + tmpFileProvider, + queueReader, + flushStrategy, + stream, + taskLauncher, + ) } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt new file mode 100644 index 0000000000000..fc497653f36d9 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.util + +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.transformWhile + +fun Flow.takeUntilInclusive(predicate: (T) -> Boolean): Flow = transformWhile { value -> + emit(value) + !predicate(value) +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/RangeUtils.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/RangeUtils.kt new file mode 100644 index 0000000000000..e17f36334ac1a --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/RangeUtils.kt @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.util + +import com.google.common.collect.Range + +// Necessary because Guava's Range/sets have no "empty" range +fun Range?.withNextAdjacentValue(index: Long): Range { + return if (this == null) { + Range.singleton(index) + } else if (index != this.upperEndpoint() + 1L) { + throw IllegalStateException("Expected index ${this.upperEndpoint() + 1}, got $index") + } else { + this.span(Range.singleton(index)) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt index ad801e2ee3b0a..51f2ef88a6cd6 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt @@ -4,6 +4,7 @@ package io.airbyte.cdk.task +import com.google.common.collect.Range import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 @@ -14,6 +15,7 @@ import io.airbyte.cdk.message.DestinationRecordWrapped import io.airbyte.cdk.message.MessageQueueReader import io.airbyte.cdk.message.StreamCompleteWrapped import io.airbyte.cdk.message.StreamRecordWrapped +import io.airbyte.cdk.state.FlushStrategy import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -57,11 +59,9 @@ class SpillToDiskTaskTest { // Make enough records for a full batch + half a batch private val maxRecords = ((1024 * 1.5) / 8).toLong() private val recordsWritten = AtomicLong(0) - override suspend fun readChunk( - key: DestinationStream.Descriptor, - maxBytes: Long + override suspend fun read( + key: DestinationStream.Descriptor ): Flow = flow { - var totalBytes = 0 while (recordsWritten.get() < maxRecords) { val index = recordsWritten.getAndIncrement() emit( @@ -78,15 +78,25 @@ class SpillToDiskTaskTest { ) ) ) - totalBytes += 8 - if (totalBytes >= maxBytes) { - return@flow - } } emit(StreamCompleteWrapped(index = maxRecords)) } } + @Singleton + @Primary + @Requires(env = ["SpillToDiskTaskTest"]) + class MockFlushStrategy : FlushStrategy { + override suspend fun shouldFlush( + stream: DestinationStream, + rangeRead: Range, + bytesProcessed: Long + ): Boolean { + println(bytesProcessed) + return bytesProcessed >= 1024 + } + } + @Test fun testSpillToDiskTask() = runTest { val mockTaskLauncher = MockTaskLauncher(taskRunner) From 4c84f5889c864e1d76b9701c78d1ecbf1dc59ccf Mon Sep 17 00:00:00 2001 From: Edward Gao Date: Fri, 4 Oct 2024 09:50:04 -0700 Subject: [PATCH 026/379] Bulk load cdk: split the destination process stuff into multiple files in their own package (#46362) --- .../cdk/test/check/CheckIntegrationTest.kt | 2 +- .../io/airbyte/cdk/test/spec/SpecTest.kt | 4 +- .../cdk/test/util/DestinationProcess.kt | 209 ------------------ .../airbyte/cdk/test/util/IntegrationTest.kt | 1 + .../destination_process/DestinationProcess.kt | 51 +++++ .../DockerizedDestination.kt | 88 ++++++++ .../NonDockerizedDestination.kt | 83 +++++++ .../dev_null/DevNullCheckIntegrationTest.kt | 2 +- 8 files changed, 227 insertions(+), 213 deletions(-) delete mode 100644 airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationProcess.kt create mode 100644 airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DestinationProcess.kt create mode 100644 airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DockerizedDestination.kt create mode 100644 airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/NonDockerizedDestination.kt diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/check/CheckIntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/check/CheckIntegrationTest.kt index b3ddcf3f03abd..91ac05ebe3440 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/check/CheckIntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/check/CheckIntegrationTest.kt @@ -10,7 +10,7 @@ import io.airbyte.cdk.test.util.FakeDataDumper import io.airbyte.cdk.test.util.IntegrationTest import io.airbyte.cdk.test.util.NoopDestinationCleaner import io.airbyte.cdk.test.util.NoopExpectedRecordMapper -import io.airbyte.cdk.test.util.TestDeploymentMode +import io.airbyte.cdk.test.util.destination_process.TestDeploymentMode import io.airbyte.protocol.models.v0.AirbyteConnectionStatus import io.airbyte.protocol.models.v0.AirbyteMessage import java.nio.charset.StandardCharsets diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt index 2dabbcb1ad378..f1d1340f2f284 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt @@ -12,12 +12,12 @@ import com.deblock.jsondiff.matcher.LenientJsonObjectPartialMatcher import com.deblock.jsondiff.matcher.StrictJsonArrayPartialMatcher import com.deblock.jsondiff.matcher.StrictPrimitivePartialMatcher import com.deblock.jsondiff.viewer.OnlyErrorDiffViewer -import io.airbyte.cdk.test.util.DestinationProcessFactory import io.airbyte.cdk.test.util.FakeDataDumper import io.airbyte.cdk.test.util.IntegrationTest import io.airbyte.cdk.test.util.NoopDestinationCleaner import io.airbyte.cdk.test.util.NoopExpectedRecordMapper -import io.airbyte.cdk.test.util.TestDeploymentMode +import io.airbyte.cdk.test.util.destination_process.DestinationProcessFactory +import io.airbyte.cdk.test.util.destination_process.TestDeploymentMode import io.airbyte.cdk.util.Jsons import io.airbyte.protocol.models.v0.AirbyteMessage import java.nio.file.Files diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationProcess.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationProcess.kt deleted file mode 100644 index a2e86c693228b..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationProcess.kt +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.test.util - -import com.fasterxml.jackson.databind.JsonNode -import io.airbyte.cdk.command.CliRunnable -import io.airbyte.cdk.command.CliRunner -import io.airbyte.cdk.command.ConfigurationSpecification -import io.airbyte.protocol.models.Jsons -import io.airbyte.protocol.models.v0.AirbyteMessage -import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog -import io.github.oshai.kotlinlogging.KotlinLogging -import java.io.ByteArrayOutputStream -import java.io.InputStream -import java.io.PipedInputStream -import java.io.PipedOutputStream -import java.io.PrintWriter -import javax.inject.Singleton - -private val logger = KotlinLogging.logger {} - -/** - * Represents a destination process, whether running in-JVM via micronaut, or as a separate Docker - * container. The general lifecycle is: - * 1. `val dest = DestinationProcessFactory.createDestinationProcess(...)` - * 2. `launch { dest.run() }` - * 3. [sendMessage] as many times as you want - * 4. [readMessages] as needed (e.g. to check that state messages are emitted during the sync) - * 5. [shutdown] once you have no more messages to send to the destination - */ -interface DestinationProcess { - /** - * Run the destination process. Callers who want to interact with the destination should - * `launch` this method. - */ - fun run() - - fun sendMessage(message: AirbyteMessage) - - /** Return all messages the destination emitted since the last call to [readMessages]. */ - fun readMessages(): List - - /** - * Wait for the destination to terminate, then return all messages it emitted since the last - * call to [readMessages]. - */ - fun shutdown() -} - -enum class TestDeploymentMode { - CLOUD, - OSS -} - -interface DestinationProcessFactory { - fun createDestinationProcess( - command: String, - config: ConfigurationSpecification? = null, - catalog: ConfiguredAirbyteCatalog? = null, - deploymentMode: TestDeploymentMode = TestDeploymentMode.OSS, - ): DestinationProcess -} - -class NonDockerizedDestination( - command: String, - config: ConfigurationSpecification?, - catalog: ConfiguredAirbyteCatalog?, - testDeploymentMode: TestDeploymentMode, -) : DestinationProcess { - private val destinationStdinPipe: PrintWriter - private val destination: CliRunnable - - init { - val destinationStdin = PipedInputStream() - // This could probably be a channel, somehow. But given the current structure, - // it's easier to just use the pipe stuff. - destinationStdinPipe = - // spotbugs requires explicitly specifying the charset, - // so we also have to specify autoFlush=false (i.e. the default behavior - // from PrintWriter(outputStream) ). - // Thanks, spotbugs. - PrintWriter(PipedOutputStream(destinationStdin), false, Charsets.UTF_8) - val testEnvironments = - when (testDeploymentMode) { - // the env var is DEPLOYMENT_MODE, which micronaut parses to - // a property called deployment.mode. - TestDeploymentMode.CLOUD -> mapOf("deployment.mode" to "CLOUD") - TestDeploymentMode.OSS -> mapOf("deployment.mode" to "OSS") - } - destination = - CliRunner.destination( - command, - config = config, - catalog = catalog, - testProperties = testEnvironments, - inputStream = destinationStdin, - ) - } - - override fun run() { - destination.run() - } - - override fun sendMessage(message: AirbyteMessage) { - destinationStdinPipe.println(Jsons.serialize(message)) - } - - override fun readMessages(): List = destination.results.newMessages() - - override fun shutdown() { - destinationStdinPipe.close() - } -} - -// Notably, not actually a Micronaut factory. We want to inject the actual -// factory into our tests, not a pre-instantiated destination, because we want -// to run multiple destination processes per test. -// TODO only inject this when not running in CI, a la @Requires(notEnv = "CI_master_merge") -@Singleton -class NonDockerizedDestinationFactory : DestinationProcessFactory { - override fun createDestinationProcess( - command: String, - config: ConfigurationSpecification?, - catalog: ConfiguredAirbyteCatalog?, - deploymentMode: TestDeploymentMode, - ): DestinationProcess { - return NonDockerizedDestination(command, config, catalog, deploymentMode) - } -} - -// TODO define a factory for this class + @Require(env = CI_master_merge) -// suppress the unused argument warnings in the kotlin compiler -class DockerizedDestination( - val command: String, - val config: JsonNode?, - val catalog: ConfiguredAirbyteCatalog?, -) : DestinationProcess { - override fun run() { - TODO("launch a docker container") - } - - override fun sendMessage(message: AirbyteMessage) { - // push a message to the docker process' stdin - TODO("Not yet implemented") - } - - override fun readMessages(): List { - // read everything from the process' stdout - TODO("Not yet implemented") - } - - override fun shutdown() { - // close stdin, wait until process exits - TODO("Not yet implemented") - } -} - -// This is currently unused, but we'll need it for the Docker version. -// it exists right now b/c I wrote it prior to the CliRunner retooling. -/** - * There doesn't seem to be a built-in equivalent to this? Scanner and BufferedReader both have - * `hasNextLine` methods which block until the stream has data to read, which we don't want to do. - * - * This class simply buffers the next line in-memory until it reaches a newline or EOF. - */ -private class LazyInputStreamReader(private val input: InputStream) { - private val buffer: ByteArrayOutputStream = ByteArrayOutputStream() - private var eof = false - - /** - * Returns the next line of data, or null if no line is available. Doesn't block if the - * inputstream has no data. - */ - fun nextLine(): MaybeLine { - if (eof) { - return NoLine.EOF - } - while (input.available() != 0) { - when (val read = input.read()) { - -1 -> { - eof = true - val line = Line(buffer.toByteArray().toString(Charsets.UTF_8)) - buffer.reset() - return line - } - '\n'.code -> { - val bytes = buffer.toByteArray() - buffer.reset() - return Line(bytes.toString(Charsets.UTF_8)) - } - else -> { - buffer.write(read) - } - } - } - return NoLine.NOT_YET_AVAILABLE - } - - companion object { - interface MaybeLine - enum class NoLine : MaybeLine { - EOF, - NOT_YET_AVAILABLE - } - data class Line(val line: String) : MaybeLine - } -} diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/IntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/IntegrationTest.kt index ceaf7dcd49468..7eed61d8bd6bd 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/IntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/IntegrationTest.kt @@ -9,6 +9,7 @@ import io.airbyte.cdk.command.ConfigurationSpecification import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.message.DestinationMessage +import io.airbyte.cdk.test.util.destination_process.DestinationProcessFactory import io.airbyte.protocol.models.v0.AirbyteMessage import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage.AirbyteStreamStatus diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DestinationProcess.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DestinationProcess.kt new file mode 100644 index 0000000000000..ce8aab8fc15ff --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DestinationProcess.kt @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.test.util.destination_process + +import io.airbyte.cdk.command.ConfigurationSpecification +import io.airbyte.protocol.models.v0.AirbyteMessage +import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog + +/** + * Represents a destination process, whether running in-JVM via micronaut, or as a separate Docker + * container. The general lifecycle is: + * 1. `val dest = DestinationProcessFactory.createDestinationProcess(...)` + * 2. `launch { dest.run() }` + * 3. [sendMessage] as many times as you want + * 4. [readMessages] as needed (e.g. to check that state messages are emitted during the sync) + * 5. [shutdown] once you have no more messages to send to the destination + */ +interface DestinationProcess { + /** + * Run the destination process. Callers who want to interact with the destination should + * `launch` this method. + */ + fun run() + + fun sendMessage(message: AirbyteMessage) + + /** Return all messages the destination emitted since the last call to [readMessages]. */ + fun readMessages(): List + + /** + * Wait for the destination to terminate, then return all messages it emitted since the last + * call to [readMessages]. + */ + fun shutdown() +} + +enum class TestDeploymentMode { + CLOUD, + OSS +} + +interface DestinationProcessFactory { + fun createDestinationProcess( + command: String, + config: ConfigurationSpecification? = null, + catalog: ConfiguredAirbyteCatalog? = null, + deploymentMode: TestDeploymentMode = TestDeploymentMode.OSS, + ): DestinationProcess +} diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DockerizedDestination.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DockerizedDestination.kt new file mode 100644 index 0000000000000..b0886138e5191 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DockerizedDestination.kt @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.test.util.destination_process + +import com.fasterxml.jackson.databind.JsonNode +import io.airbyte.protocol.models.v0.AirbyteMessage +import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog +import java.io.ByteArrayOutputStream +import java.io.InputStream + +// TODO define a factory for this class + @Require(env = CI_master_merge) +class DockerizedDestination( + val command: String, + val config: JsonNode?, + val catalog: ConfiguredAirbyteCatalog?, +) : DestinationProcess { + override fun run() { + TODO("launch a docker container") + } + + override fun sendMessage(message: AirbyteMessage) { + // push a message to the docker process' stdin + TODO("Not yet implemented") + } + + override fun readMessages(): List { + // read everything from the process' stdout + TODO("Not yet implemented") + } + + override fun shutdown() { + // close stdin, wait until process exits + TODO("Not yet implemented") + } +} + +// This is currently unused, but we'll need it for the Docker version. +// it exists right now b/c I wrote it prior to the CliRunner retooling. +/** + * There doesn't seem to be a built-in equivalent to this? Scanner and BufferedReader both have + * `hasNextLine` methods which block until the stream has data to read, which we don't want to do. + * + * This class simply buffers the next line in-memory until it reaches a newline or EOF. + */ +private class LazyInputStreamReader(private val input: InputStream) { + private val buffer: ByteArrayOutputStream = ByteArrayOutputStream() + private var eof = false + + /** + * Returns the next line of data, or null if no line is available. Doesn't block if the + * inputstream has no data. + */ + fun nextLine(): MaybeLine { + if (eof) { + return NoLine.EOF + } + while (input.available() != 0) { + when (val read = input.read()) { + -1 -> { + eof = true + val line = Line(buffer.toByteArray().toString(Charsets.UTF_8)) + buffer.reset() + return line + } + '\n'.code -> { + val bytes = buffer.toByteArray() + buffer.reset() + return Line(bytes.toString(Charsets.UTF_8)) + } + else -> { + buffer.write(read) + } + } + } + return NoLine.NOT_YET_AVAILABLE + } + + companion object { + interface MaybeLine + enum class NoLine : MaybeLine { + EOF, + NOT_YET_AVAILABLE + } + data class Line(val line: String) : MaybeLine + } +} diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/NonDockerizedDestination.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/NonDockerizedDestination.kt new file mode 100644 index 0000000000000..ab301f71215d5 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/NonDockerizedDestination.kt @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.test.util.destination_process + +import io.airbyte.cdk.command.CliRunnable +import io.airbyte.cdk.command.CliRunner +import io.airbyte.cdk.command.ConfigurationSpecification +import io.airbyte.protocol.models.Jsons +import io.airbyte.protocol.models.v0.AirbyteMessage +import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog +import java.io.PipedInputStream +import java.io.PipedOutputStream +import java.io.PrintWriter +import javax.inject.Singleton + +class NonDockerizedDestination( + command: String, + config: ConfigurationSpecification?, + catalog: ConfiguredAirbyteCatalog?, + testDeploymentMode: TestDeploymentMode, +) : DestinationProcess { + private val destinationStdinPipe: PrintWriter + private val destination: CliRunnable + + init { + val destinationStdin = PipedInputStream() + // This could probably be a channel, somehow. But given the current structure, + // it's easier to just use the pipe stuff. + destinationStdinPipe = + // spotbugs requires explicitly specifying the charset, + // so we also have to specify autoFlush=false (i.e. the default behavior + // from PrintWriter(outputStream) ). + // Thanks, spotbugs. + PrintWriter(PipedOutputStream(destinationStdin), false, Charsets.UTF_8) + val testEnvironments = + when (testDeploymentMode) { + // the env var is DEPLOYMENT_MODE, which micronaut parses to + // a property called deployment.mode. + TestDeploymentMode.CLOUD -> mapOf("deployment.mode" to "CLOUD") + TestDeploymentMode.OSS -> mapOf("deployment.mode" to "OSS") + } + destination = + CliRunner.destination( + command, + config = config, + catalog = catalog, + testProperties = testEnvironments, + inputStream = destinationStdin, + ) + } + + override fun run() { + destination.run() + } + + override fun sendMessage(message: AirbyteMessage) { + destinationStdinPipe.println(Jsons.serialize(message)) + } + + override fun readMessages(): List = destination.results.newMessages() + + override fun shutdown() { + destinationStdinPipe.close() + } +} + +// Notably, not actually a Micronaut factory. We want to inject the actual +// factory into our tests, not a pre-instantiated destination, because we want +// to run multiple destination processes per test. +// TODO only inject this when not running in CI, a la @Requires(notEnv = "CI_master_merge") +@Singleton +class NonDockerizedDestinationFactory : DestinationProcessFactory { + override fun createDestinationProcess( + command: String, + config: ConfigurationSpecification?, + catalog: ConfiguredAirbyteCatalog?, + deploymentMode: TestDeploymentMode, + ): DestinationProcess { + return NonDockerizedDestination(command, config, catalog, deploymentMode) + } +} diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullCheckIntegrationTest.kt b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullCheckIntegrationTest.kt index 46b9bec84da81..798eade8eaccb 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullCheckIntegrationTest.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullCheckIntegrationTest.kt @@ -6,7 +6,7 @@ package io.airbyte.integrations.destination.dev_null import io.airbyte.cdk.test.check.CheckIntegrationTest import io.airbyte.cdk.test.check.CheckTestConfig -import io.airbyte.cdk.test.util.TestDeploymentMode +import io.airbyte.cdk.test.util.destination_process.TestDeploymentMode import java.util.regex.Pattern import org.junit.jupiter.api.Test From 4b8f113a6ef9746d2abad4861f24b26f7d7b493d Mon Sep 17 00:00:00 2001 From: Marius Posta Date: Fri, 4 Oct 2024 11:54:07 -0700 Subject: [PATCH 027/379] bulk-cdk-core-extract: fix TRACE STATUS message emission (#46314) --- .../main/kotlin/io/airbyte/cdk/read/Feed.kt | 8 + .../kotlin/io/airbyte/cdk/read/FeedReader.kt | 16 +- .../kotlin/io/airbyte/cdk/read/RootReader.kt | 22 +- .../airbyte/cdk/read/StreamStatusManager.kt | 137 +++++++++++ .../cdk/read/RootReaderIntegrationTest.kt | 48 +++- .../cdk/read/StreamStatusManagerTest.kt | 228 ++++++++++++++++++ 6 files changed, 415 insertions(+), 44 deletions(-) create mode 100644 airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StreamStatusManager.kt create mode 100644 airbyte-cdk/bulk/core/extract/src/test/kotlin/io/airbyte/cdk/read/StreamStatusManagerTest.kt diff --git a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/Feed.kt b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/Feed.kt index 396e9c7b5d498..64c9b66e4473a 100644 --- a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/Feed.kt +++ b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/Feed.kt @@ -44,3 +44,11 @@ data class Stream( override val label: String get() = id.toString() } + +/** List of [Stream]s this [Feed] emits records for. */ +val Feed.streams + get() = + when (this) { + is Global -> streams + is Stream -> listOf(this) + } diff --git a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/FeedReader.kt b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/FeedReader.kt index 966b88e34366b..380fc4852909c 100644 --- a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/FeedReader.kt +++ b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/FeedReader.kt @@ -2,11 +2,9 @@ package io.airbyte.cdk.read import io.airbyte.cdk.SystemErrorException -import io.airbyte.cdk.asProtocolStreamDescriptor import io.airbyte.cdk.command.OpaqueStateValue import io.airbyte.cdk.util.ThreadRenamingCoroutineName import io.airbyte.protocol.models.v0.AirbyteStateMessage -import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage import io.github.oshai.kotlinlogging.KotlinLogging import kotlin.coroutines.CoroutineContext import kotlin.coroutines.coroutineContext @@ -46,7 +44,7 @@ class FeedReader( // Publish a checkpoint if applicable. maybeCheckpoint() // Publish stream completion. - emitStreamStatus(AirbyteStreamStatusTraceMessage.AirbyteStreamStatus.COMPLETE) + root.streamStatusManager.notifyComplete(feed) break } // Launch coroutines which read from each partition. @@ -85,7 +83,7 @@ class FeedReader( acquirePartitionsCreatorResources(partitionsCreatorID, partitionsCreator) } if (1L == partitionsCreatorID) { - emitStreamStatus(AirbyteStreamStatusTraceMessage.AirbyteStreamStatus.STARTED) + root.streamStatusManager.notifyStarting(feed) } return withContext(ctx("round-$partitionsCreatorID-create-partitions")) { createPartitionsWithResources(partitionsCreatorID, partitionsCreator) @@ -309,14 +307,4 @@ class FeedReader( root.outputConsumer.accept(stateMessage) } } - - private fun emitStreamStatus(status: AirbyteStreamStatusTraceMessage.AirbyteStreamStatus) { - if (feed is Stream) { - root.outputConsumer.accept( - AirbyteStreamStatusTraceMessage() - .withStreamDescriptor(feed.id.asProtocolStreamDescriptor()) - .withStatus(status), - ) - } - } } diff --git a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/RootReader.kt b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/RootReader.kt index 9c120b15e1ea4..5e2ca0570a8d9 100644 --- a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/RootReader.kt +++ b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/RootReader.kt @@ -10,7 +10,6 @@ import kotlin.coroutines.CoroutineContext import kotlin.time.toKotlinDuration import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.Job -import kotlinx.coroutines.cancel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.update @@ -51,6 +50,8 @@ class RootReader( } } + val streamStatusManager = StreamStatusManager(stateManager.feeds, outputConsumer::accept) + /** Reads records from all [Feed]s. */ suspend fun read(listener: suspend (Map) -> Unit = {}) { supervisorScope { @@ -60,7 +61,7 @@ class RootReader( val feedJobs: Map = feeds.associateWith { feed: Feed -> val coroutineName = ThreadRenamingCoroutineName(feed.label) - val handler = FeedExceptionHandler(feed, exceptions) + val handler = FeedExceptionHandler(feed, streamStatusManager, exceptions) launch(coroutineName + handler) { FeedReader(this@RootReader, feed).read() } } // Call listener hook. @@ -71,21 +72,6 @@ class RootReader( feedJobs[it]?.join() exceptions[it] } - // Cancel any incomplete global feed job whose stream feed jobs have not all succeeded. - for ((global, globalJob) in feedJobs) { - if (global !is Global) continue - if (globalJob.isCompleted) continue - val globalStreamExceptions: List = - global.streams.mapNotNull { streamExceptions[it] } - if (globalStreamExceptions.isNotEmpty()) { - val cause: Throwable = - globalStreamExceptions.reduce { acc: Throwable, exception: Throwable -> - acc.addSuppressed(exception) - acc - } - globalJob.cancel("at least one stream did non complete", cause) - } - } // Join on all global feeds and collect caught exceptions. val globalExceptions: Map = feeds.filterIsInstance().associateWith { @@ -109,6 +95,7 @@ class RootReader( class FeedExceptionHandler( val feed: Feed, + val streamStatusManager: StreamStatusManager, private val exceptions: ConcurrentHashMap, ) : CoroutineExceptionHandler { private val log = KotlinLogging.logger {} @@ -121,6 +108,7 @@ class RootReader( exception: Throwable, ) { log.warn(exception) { "canceled feed '${feed.label}' due to thrown exception" } + streamStatusManager.notifyFailure(feed) exceptions[feed] = exception } diff --git a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StreamStatusManager.kt b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StreamStatusManager.kt new file mode 100644 index 0000000000000..52abb4c82982e --- /dev/null +++ b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StreamStatusManager.kt @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.read + +import io.airbyte.cdk.StreamIdentifier +import io.airbyte.cdk.asProtocolStreamDescriptor +import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage +import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage.AirbyteStreamStatus +import java.util.concurrent.atomic.AtomicInteger +import java.util.concurrent.atomic.AtomicReference +import org.apache.mina.util.ConcurrentHashSet + +/** + * [StreamStatusManager] emits [AirbyteStreamStatusTraceMessage]s in response to [Feed] activity + * events, via [notifyStarting], [notifyComplete] and [notifyFailure]. + */ +class StreamStatusManager( + feeds: List, + private val emit: (AirbyteStreamStatusTraceMessage) -> Unit, +) { + private val streamStates: Map = + feeds + .flatMap { feed: Feed -> feed.streams.map { it.id to feed } } + .groupBy({ it.first }, { it.second }) + .mapValues { (id: StreamIdentifier, feeds: List) -> + StreamState(id, feeds.toSet()) + } + + /** + * Notify that the [feed] is about to start running. + * + * Emits Airbyte TRACE messages of type STATUS accordingly. Safe to call even if + * [notifyStarting], [notifyComplete] or [notifyFailure] have been called before. + */ + fun notifyStarting(feed: Feed) { + handle(feed) { it.onStarting() } + } + + /** + * Notify that the [feed] has completed running. + * + * Emits Airbyte TRACE messages of type STATUS accordingly. Idempotent. Safe to call even if + * [notifyStarting] hasn't been called previously. + */ + fun notifyComplete(feed: Feed) { + handle(feed) { it.onComplete(feed) } + } + + /** + * Notify that the [feed] has stopped running due to a failure. + * + * Emits Airbyte TRACE messages of type STATUS accordingly. Idempotent. Safe to call even if + * [notifyStarting] hasn't been called previously. + */ + fun notifyFailure(feed: Feed) { + handle(feed) { it.onFailure(feed) } + } + + private fun handle(feed: Feed, notification: (StreamState) -> List) { + for (stream in feed.streams) { + val streamState: StreamState = streamStates[stream.id] ?: continue + for (statusToEmit: AirbyteStreamStatus in notification(streamState)) { + emit( + AirbyteStreamStatusTraceMessage() + .withStreamDescriptor(stream.id.asProtocolStreamDescriptor()) + .withStatus(statusToEmit) + ) + } + } + } + + data class StreamState( + val id: StreamIdentifier, + val feeds: Set, + val state: AtomicReference = AtomicReference(State.PENDING), + val stoppedFeeds: ConcurrentHashSet = ConcurrentHashSet(), + val numStoppedFeeds: AtomicInteger = AtomicInteger() + ) { + fun onStarting(): List = + if (state.compareAndSet(State.PENDING, State.SUCCESS)) { + listOf(AirbyteStreamStatus.STARTED) + } else { + emptyList() + } + + fun onComplete(feed: Feed): List = + onStarting() + // ensure the state is not PENDING + run { + if (!finalStop(feed)) { + return@run emptyList() + } + // At this point, we just stopped the last feed for this stream. + // Transition to DONE. + if (state.compareAndSet(State.SUCCESS, State.DONE)) { + listOf(AirbyteStreamStatus.COMPLETE) + } else if (state.compareAndSet(State.FAILURE, State.DONE)) { + listOf(AirbyteStreamStatus.INCOMPLETE) + } else { + emptyList() // this should never happen + } + } + + fun onFailure(feed: Feed): List = + onStarting() + // ensure the state is not PENDING + run { + state.compareAndSet(State.SUCCESS, State.FAILURE) + if (!finalStop(feed)) { + return@run emptyList() + } + // At this point, we just stopped the last feed for this stream. + // Transition from FAILURE to DONE. + if (state.compareAndSet(State.FAILURE, State.DONE)) { + listOf(AirbyteStreamStatus.INCOMPLETE) + } else { + emptyList() // this should never happen + } + } + + private fun finalStop(feed: Feed): Boolean { + if (!stoppedFeeds.add(feed)) { + // This feed was stopped before. + return false + } + // True if and only if this feed was stopped and all others were already stopped. + return numStoppedFeeds.incrementAndGet() == feeds.size + } + } + + enum class State { + PENDING, + SUCCESS, + FAILURE, + DONE, + } +} diff --git a/airbyte-cdk/bulk/core/extract/src/test/kotlin/io/airbyte/cdk/read/RootReaderIntegrationTest.kt b/airbyte-cdk/bulk/core/extract/src/test/kotlin/io/airbyte/cdk/read/RootReaderIntegrationTest.kt index 209683a07176c..c3fc4051de547 100644 --- a/airbyte-cdk/bulk/core/extract/src/test/kotlin/io/airbyte/cdk/read/RootReaderIntegrationTest.kt +++ b/airbyte-cdk/bulk/core/extract/src/test/kotlin/io/airbyte/cdk/read/RootReaderIntegrationTest.kt @@ -273,6 +273,7 @@ data class TestCase( fun verifyTraces(traceMessages: List) { var hasStarted = false var hasCompleted = false + var hasIncompleted = false for (trace in traceMessages) { when (trace.type) { AirbyteTraceMessage.Type.STREAM_STATUS -> { @@ -282,14 +283,29 @@ data class TestCase( hasStarted = true Assertions.assertFalse( hasCompleted, - "Case $name cannot emit a STARTED trace message because it already emitted a COMPLETE." + "Case $name cannot emit a STARTED trace " + + "message because it already emitted a COMPLETE." + ) + Assertions.assertFalse( + hasIncompleted, + "Case $name cannot emit a STARTED trace " + + "message because it already emitted an INCOMPLETE." ) } AirbyteStreamStatusTraceMessage.AirbyteStreamStatus.COMPLETE -> { hasCompleted = true Assertions.assertTrue( hasStarted, - "Case $name cannot emit a COMPLETE trace message because it hasn't emitted a STARTED yet." + "Case $name cannot emit a COMPLETE trace " + + "message because it hasn't emitted a STARTED yet." + ) + } + AirbyteStreamStatusTraceMessage.AirbyteStreamStatus.INCOMPLETE -> { + hasIncompleted = true + Assertions.assertTrue( + hasStarted, + "Case $name cannot emit an INCOMPLETE trace " + + "message because it hasn't emitted a STARTED yet." ) } else -> @@ -310,15 +326,25 @@ data class TestCase( "Case $name should have emitted a STARTED trace message, but hasn't." ) if (isSuccessful) { - Assertions.assertTrue( - hasCompleted, - "Case $name should have emitted a COMPLETE trace message, but hasn't." + if (!hasCompleted) { + Assertions.assertTrue( + hasCompleted, + "Case $name should have emitted a COMPLETE trace message, but hasn't." + ) + } + Assertions.assertFalse( + hasIncompleted, + "Case $name should not have emitted an INCOMPLETE trace message, but did anyway." ) } else { Assertions.assertFalse( hasCompleted, "Case $name should not have emitted a COMPLETE trace message, but did anyway." ) + Assertions.assertTrue( + hasIncompleted, + "Case $name should have emitted an INCOMPLETE trace message, but hasn't." + ) } } @@ -556,21 +582,17 @@ class TestPartitionsCreatorFactory( feed: Feed, ): PartitionsCreator { if (feed is Global) { - // For a global feed, return a bogus PartitionsCreator which backs off forever. - // This tests that the corresponding coroutine gets canceled properly. return object : PartitionsCreator { override fun tryAcquireResources(): PartitionsCreator.TryAcquireResourcesStatus { - log.info { "failed to acquire resources for global feed, as always" } - return PartitionsCreator.TryAcquireResourcesStatus.RETRY_LATER + return PartitionsCreator.TryAcquireResourcesStatus.READY_TO_RUN } override suspend fun run(): List { - TODO("unreachable code") + // Do nothing. + return emptyList() } - override fun releaseResources() { - TODO("unreachable code") - } + override fun releaseResources() {} } } // For a stream feed, pick the CreatorCase in the corresponding TestCase diff --git a/airbyte-cdk/bulk/core/extract/src/test/kotlin/io/airbyte/cdk/read/StreamStatusManagerTest.kt b/airbyte-cdk/bulk/core/extract/src/test/kotlin/io/airbyte/cdk/read/StreamStatusManagerTest.kt new file mode 100644 index 0000000000000..0eced8069717b --- /dev/null +++ b/airbyte-cdk/bulk/core/extract/src/test/kotlin/io/airbyte/cdk/read/StreamStatusManagerTest.kt @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.read + +import io.airbyte.cdk.StreamIdentifier +import io.airbyte.cdk.discover.Field +import io.airbyte.cdk.discover.IntFieldType +import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage +import io.airbyte.protocol.models.v0.StreamDescriptor +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test + +class StreamStatusManagerTest { + + val streamIncremental = + Stream( + id = StreamIdentifier.from(StreamDescriptor().withName("streamIncremental")), + fields = listOf(Field("v", IntFieldType)), + configuredSyncMode = ConfiguredSyncMode.INCREMENTAL, + configuredPrimaryKey = null, + configuredCursor = null, + ) + val streamFullRefresh = + Stream( + id = StreamIdentifier.from(StreamDescriptor().withName("streamFullRefresh")), + fields = listOf(Field("v", IntFieldType)), + configuredSyncMode = ConfiguredSyncMode.FULL_REFRESH, + configuredPrimaryKey = null, + configuredCursor = null, + ) + + val allStreams: Set = setOf(streamFullRefresh, streamIncremental) + + val global: Global + get() = Global(listOf(streamIncremental)) + + val allFeeds: List = listOf(global) + allStreams + + @Test + fun testNothing() { + TestCase(allFeeds).runTest {} + } + + @Test + fun testRunningStream() { + val testCase = TestCase(listOf(streamFullRefresh), started = setOf(streamFullRefresh)) + testCase.runTest { it.notifyStarting(streamFullRefresh) } + // Check that the outcome is the same if we call notifyStarting multiple times. + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyStarting(streamFullRefresh) + it.notifyStarting(streamFullRefresh) + } + } + + @Test + fun testRunningAndCompleteStream() { + val testCase = + TestCase( + feeds = listOf(streamFullRefresh), + started = setOf(streamFullRefresh), + success = setOf(streamFullRefresh), + ) + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyComplete(streamFullRefresh) + } + // Check that the outcome is the same if we forget to call notifyStarting. + testCase.runTest { it.notifyComplete(streamFullRefresh) } + // Check that the outcome is the same if we call notifyComplete many times. + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyComplete(streamFullRefresh) + it.notifyComplete(streamFullRefresh) + it.notifyComplete(streamFullRefresh) + } + // Check that the outcome is the same if we call notifyFailure afterwards. + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyComplete(streamFullRefresh) + it.notifyFailure(streamFullRefresh) + } + } + + @Test + fun testRunningAndIncompleteStream() { + val testCase = + TestCase( + feeds = listOf(streamFullRefresh), + started = setOf(streamFullRefresh), + failure = setOf(streamFullRefresh), + ) + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyFailure(streamFullRefresh) + } + // Check that the outcome is the same if we forget to call notifyStarting. + testCase.runTest { it.notifyFailure(streamFullRefresh) } + // Check that the outcome is the same if we call notifyFailure many times. + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyFailure(streamFullRefresh) + it.notifyFailure(streamFullRefresh) + it.notifyFailure(streamFullRefresh) + } + // Check that the outcome is the same if we call notifyComplete afterwards. + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyFailure(streamFullRefresh) + it.notifyComplete(streamFullRefresh) + } + } + + @Test + fun testRunningStreamWithGlobal() { + val testCase = TestCase(allFeeds, started = setOf(streamIncremental)) + testCase.runTest { it.notifyStarting(streamIncremental) } + // Check that the outcome is the same if we call notifyStarting with the global feed. + testCase.runTest { it.notifyStarting(global) } + testCase.runTest { + it.notifyStarting(global) + it.notifyStarting(streamIncremental) + } + } + + @Test + fun testRunningAndCompleteWithGlobal() { + val testCase = + TestCase( + feeds = allFeeds, + started = setOf(streamIncremental), + success = setOf(streamIncremental), + ) + testCase.runTest { + it.notifyStarting(global) + it.notifyComplete(global) + it.notifyStarting(streamIncremental) + it.notifyComplete(streamIncremental) + } + // Check that the outcome is the same if we mix things up a bit. + testCase.runTest { + it.notifyStarting(global) + it.notifyStarting(streamIncremental) + it.notifyComplete(global) + it.notifyComplete(streamIncremental) + } + testCase.runTest { + it.notifyStarting(streamIncremental) + it.notifyStarting(global) + it.notifyComplete(global) + it.notifyComplete(streamIncremental) + } + } + + @Test + fun testRunningAndIncompleteAll() { + val testCase = + TestCase( + feeds = allFeeds, + started = allStreams, + success = setOf(streamFullRefresh), + failure = setOf(streamIncremental), + ) + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyComplete(streamFullRefresh) + it.notifyStarting(global) + it.notifyFailure(global) + it.notifyStarting(streamIncremental) + it.notifyComplete(streamIncremental) + } + // Check that the outcome is the same if we mix things up a bit. + testCase.runTest { + it.notifyStarting(streamFullRefresh) + it.notifyStarting(global) + it.notifyStarting(streamIncremental) + it.notifyComplete(streamIncremental) + it.notifyFailure(global) + it.notifyComplete(streamFullRefresh) + it.notifyComplete(global) + } + } + + data class TestCase + private constructor( + val started: Set, + val success: Set, + val failure: Set, + val feeds: List, + ) { + constructor( + feeds: List, + started: Set = emptySet(), + success: Set = emptySet(), + failure: Set = emptySet(), + ) : this( + started.map { it.id }.toSet(), + success.map { it.id }.toSet(), + failure.map { it.id }.toSet(), + feeds, + ) + + fun runTest(fn: (StreamStatusManager) -> Unit) { + val started = mutableSetOf() + val success = mutableSetOf() + val failure = mutableSetOf() + val streamStatusManager = + StreamStatusManager(feeds) { + val streamID = StreamIdentifier.from(it.streamDescriptor) + when (it.status) { + AirbyteStreamStatusTraceMessage.AirbyteStreamStatus.STARTED -> + Assertions.assertTrue(started.add(streamID)) + AirbyteStreamStatusTraceMessage.AirbyteStreamStatus.COMPLETE -> + Assertions.assertTrue(success.add(streamID)) + AirbyteStreamStatusTraceMessage.AirbyteStreamStatus.INCOMPLETE -> + Assertions.assertTrue(failure.add(streamID)) + else -> throw RuntimeException("unexpected status ${it.status}") + } + } + fn(streamStatusManager) + Assertions.assertEquals(this.started, started) + Assertions.assertEquals(this.success, success) + Assertions.assertEquals(this.failure, failure) + } + } +} From e8402c9f14498ded2e718091d64936b5d2a71313 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Fri, 4 Oct 2024 15:45:05 -0700 Subject: [PATCH 028/379] Bulk Load CDK: Checkpoint flush every 15 minutes (#46382) --- .../cdk/command/DestinationConfiguration.kt | 6 + .../io/airbyte/cdk/file/TimeProvider.kt | 25 +++ .../io/airbyte/cdk/state/CheckpointManager.kt | 158 ++++++++++++------ .../io/airbyte/cdk/state/EventConsumer.kt | 22 +++ .../io/airbyte/cdk/state/EventProducer.kt | 34 ++++ .../io/airbyte/cdk/state/FlushStrategy.kt | 30 +++- .../cdk/task/DestinationTaskLauncher.kt | 10 ++ .../task/TimedForcedCheckpointFlushTask.kt | 92 ++++++++++ .../command/MockDestinationConfiguration.kt | 22 +++ .../io/airbyte/cdk/file/MockTimeProvider.kt | 28 ++++ .../DestinationMessageQueueWriterTest.kt | 38 +---- .../cdk/state/CheckpointManagerTest.kt | 155 ++++++++++++++++- .../cdk/state/DefaultFlushStrategyTest.kt | 102 +++++++++++ .../cdk/state/MockCheckpointManager.kt | 54 ++++++ .../io/airbyte/cdk/state/SyncManagerUtils.kt | 23 +++ .../cdk/task/DestinationTaskLauncherTest.kt | 35 ++++ .../io/airbyte/cdk/task/MockTaskLauncher.kt | 5 + .../airbyte/cdk/task/SpillToDiskTaskTest.kt | 14 +- .../TimedForcedCheckpointFlushTaskTest.kt | 101 +++++++++++ 19 files changed, 855 insertions(+), 99 deletions(-) create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TimeProvider.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventConsumer.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventProducer.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerUtils.kt create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt index e0a0a0e4b987e..c35cd06720446 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt @@ -19,6 +19,12 @@ abstract class DestinationConfiguration : Configuration { open val estimatedRecordMemoryOverheadRatio: Double = 0.1 // 0 => No overhead, 1.0 => 100% overhead + /** + * If we have not flushed state checkpoints in this amount of time, make a best-effort attempt + * to force a flush. + */ + open val maxCheckpointFlushTimeMs: Long = 15 * 60 * 1000L // 15 minutes + /** * Micronaut factory which glues [ConfigurationSpecificationSupplier] and * [DestinationConfigurationFactory] together to produce a [DestinationConfiguration] singleton. diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TimeProvider.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TimeProvider.kt new file mode 100644 index 0000000000000..9090007b83b48 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TimeProvider.kt @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.file + +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton + +interface TimeProvider { + fun currentTimeMillis(): Long + suspend fun delay(ms: Long) +} + +@Singleton +@Secondary +class DefaultTimeProvider : TimeProvider { + override fun currentTimeMillis(): Long { + return System.currentTimeMillis() + } + + override suspend fun delay(ms: Long) { + kotlinx.coroutines.delay(ms) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt index 80021c42b4487..db2dc62657e88 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt @@ -6,6 +6,7 @@ package io.airbyte.cdk.state import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.file.TimeProvider import io.airbyte.cdk.message.CheckpointMessage import io.airbyte.cdk.message.MessageConverter import io.airbyte.protocol.models.v0.AirbyteMessage @@ -15,18 +16,24 @@ import io.micronaut.core.util.clhm.ConcurrentLinkedHashMap import jakarta.inject.Singleton import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentLinkedQueue +import java.util.concurrent.atomic.AtomicLong import java.util.concurrent.atomic.AtomicReference import java.util.function.Consumer +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext /** * Interface for checkpoint management. Should accept stream and global checkpoints, as well as * requests to flush all data-sufficient checkpoints. */ interface CheckpointManager { - fun addStreamCheckpoint(key: K, index: Long, checkpointMessage: T) - fun addGlobalCheckpoint(keyIndexes: List>, checkpointMessage: T) + suspend fun addStreamCheckpoint(key: K, index: Long, checkpointMessage: T) + suspend fun addGlobalCheckpoint(keyIndexes: List>, checkpointMessage: T) suspend fun flushReadyCheckpointMessages() + suspend fun getLastSuccessfulFlushTimeMs(): Long + suspend fun getNextCheckpointIndexes(): Map } /** @@ -41,15 +48,17 @@ interface CheckpointManager { * TODO: Ensure that checkpoint is flushed at the end, and require that all checkpoints be flushed * before the destination can succeed. */ -abstract class StreamsCheckpointManager() : - CheckpointManager { +abstract class StreamsCheckpointManager : CheckpointManager { + private val log = KotlinLogging.logger {} private val flushLock = Mutex() + protected val lastFlushTimeMs = AtomicLong(0L) abstract val catalog: DestinationCatalog abstract val syncManager: SyncManager abstract val outputFactory: MessageConverter abstract val outputConsumer: Consumer + abstract val timeProvider: TimeProvider data class GlobalCheckpoint( val streamIndexes: List>, @@ -63,65 +72,73 @@ abstract class StreamsCheckpointManager() : private val globalCheckpoints: ConcurrentLinkedQueue> = ConcurrentLinkedQueue() - override fun addStreamCheckpoint( + override suspend fun addStreamCheckpoint( key: DestinationStream.Descriptor, index: Long, checkpointMessage: T ) { - if (checkpointsAreGlobal.updateAndGet { it == true } != false) { - throw IllegalStateException( - "Global checkpoints cannot be mixed with non-global checkpoints" - ) - } + flushLock.withLock { + if (checkpointsAreGlobal.updateAndGet { it == true } != false) { + throw IllegalStateException( + "Global checkpoints cannot be mixed with non-global checkpoints" + ) + } - streamCheckpoints.compute(key) { _, indexToMessage -> - val map = - if (indexToMessage == null) { - // If the map doesn't exist yet, build it. - ConcurrentLinkedHashMap.Builder().maximumWeightedCapacity(1000).build() - } else { - if (indexToMessage.isNotEmpty()) { - // Make sure the messages are coming in order - val oldestIndex = indexToMessage.ascendingKeySet().first() - if (oldestIndex > index) { - throw IllegalStateException( - "Checkpoint message received out of order ($oldestIndex before $index)" - ) + streamCheckpoints.compute(key) { _, indexToMessage -> + val map = + if (indexToMessage == null) { + // If the map doesn't exist yet, build it. + ConcurrentLinkedHashMap.Builder() + .maximumWeightedCapacity(1000) + .build() + } else { + if (indexToMessage.isNotEmpty()) { + // Make sure the messages are coming in order + val oldestIndex = indexToMessage.ascendingKeySet().first() + if (oldestIndex > index) { + throw IllegalStateException( + "Checkpoint message received out of order ($oldestIndex before $index)" + ) + } } + indexToMessage } - indexToMessage - } - // Actually add the message - map[index] = checkpointMessage - map - } + // Actually add the message + map[index] = checkpointMessage + map + } - log.info { "Added checkpoint for stream: $key at index: $index" } + log.info { "Added checkpoint for stream: $key at index: $index" } + } } // TODO: Is it an error if we don't get all the streams every time? - override fun addGlobalCheckpoint( + override suspend fun addGlobalCheckpoint( keyIndexes: List>, checkpointMessage: T ) { - if (checkpointsAreGlobal.updateAndGet { it != false } != true) { - throw IllegalStateException( - "Global checkpoint cannot be mixed with non-global checkpoints" - ) - } + flushLock.withLock { + if (checkpointsAreGlobal.updateAndGet { it != false } != true) { + throw IllegalStateException( + "Global checkpoint cannot be mixed with non-global checkpoints" + ) + } - val head = globalCheckpoints.peek() - if (head != null) { - val keyIndexesByStream = keyIndexes.associate { it.first to it.second } - head.streamIndexes.forEach { - if (keyIndexesByStream[it.first]!! < it.second) { - throw IllegalStateException("Global checkpoint message received out of order") + val head = globalCheckpoints.peek() + if (head != null) { + val keyIndexesByStream = keyIndexes.associate { it.first to it.second } + head.streamIndexes.forEach { + if (keyIndexesByStream[it.first]!! < it.second) { + throw IllegalStateException( + "Global checkpoint message received out of order" + ) + } } } - } - globalCheckpoints.add(GlobalCheckpoint(keyIndexes, checkpointMessage)) - log.info { "Added global checkpoint with stream indexes: $keyIndexes" } + globalCheckpoints.add(GlobalCheckpoint(keyIndexes, checkpointMessage)) + log.info { "Added global checkpoint with stream indexes: $keyIndexes" } + } } override suspend fun flushReadyCheckpointMessages() { @@ -146,7 +163,7 @@ abstract class StreamsCheckpointManager() : } } - private fun flushGlobalCheckpoints() { + private suspend fun flushGlobalCheckpoints() { while (!globalCheckpoints.isEmpty()) { val head = globalCheckpoints.peek() val allStreamsPersisted = @@ -155,15 +172,14 @@ abstract class StreamsCheckpointManager() : } if (allStreamsPersisted) { globalCheckpoints.poll() - val outMessage = outputFactory.from(head.checkpointMessage) - outputConsumer.accept(outMessage) + sendMessage(head.checkpointMessage) } else { break } } } - private fun flushStreamCheckpoints() { + private suspend fun flushStreamCheckpoints() { for (stream in catalog.streams) { val manager = syncManager.getStreamManager(stream.descriptor) val streamCheckpoints = streamCheckpoints[stream.descriptor] ?: return @@ -173,14 +189,45 @@ abstract class StreamsCheckpointManager() : streamCheckpoints.remove(index) ?: throw IllegalStateException("Checkpoint not found for index: $index") log.info { "Flushing checkpoint for stream: $stream at index: $index" } - val outMessage = outputFactory.from(checkpointMessage) - outputConsumer.accept(outMessage) + sendMessage(checkpointMessage) } else { break } } } } + + private suspend fun sendMessage(checkpointMessage: T) = + withContext(Dispatchers.IO) { + lastFlushTimeMs.set(timeProvider.currentTimeMillis()) + val outMessage = outputFactory.from(checkpointMessage) + outputConsumer.accept(outMessage) + } + + override suspend fun getLastSuccessfulFlushTimeMs(): Long = + // Return inside the lock to ensure the value reflects flushes in progress + flushLock.withLock { lastFlushTimeMs.get() } + + override suspend fun getNextCheckpointIndexes(): Map { + flushLock.withLock { + return when (checkpointsAreGlobal.get()) { + null -> { + emptyMap() + } + true -> { + val head = globalCheckpoints.peek() + head?.streamIndexes?.associate { it } ?: emptyMap() + } + false -> { + println("streamCheckpoints: $streamCheckpoints") + streamCheckpoints + .mapValues { it.value.ascendingKeySet().firstOrNull() } + .filterValues { it != null } + .mapValues { it.value!! } + } + } + } + } } @Singleton @@ -189,5 +236,10 @@ class DefaultCheckpointManager( override val catalog: DestinationCatalog, override val syncManager: SyncManager, override val outputFactory: MessageConverter, - override val outputConsumer: Consumer -) : StreamsCheckpointManager() + override val outputConsumer: Consumer, + override val timeProvider: TimeProvider +) : StreamsCheckpointManager() { + init { + lastFlushTimeMs.set(timeProvider.currentTimeMillis()) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventConsumer.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventConsumer.kt new file mode 100644 index 0000000000000..ee36f31804822 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventConsumer.kt @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.state + +/** + * A multi-reader consumer of events produced by a single-writer [EventProducer]. + * + * To use: + * - set up an [EventProducer] with the same type parameter as described in the producer's + * documentation + * - declare a subclass of [EventConsumer] and mark it `@Prototype` (multi-reader) + * - inject the producer and consumers where needed + */ +abstract class EventConsumer(producer: EventProducer) { + val channel = producer.subscribe() + + suspend fun consumeMaybe(): T? { + return channel.tryReceive().getOrNull() + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventProducer.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventProducer.kt new file mode 100644 index 0000000000000..5e41df959eeea --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventProducer.kt @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.state + +import java.util.concurrent.ConcurrentLinkedQueue +import kotlinx.coroutines.channels.Channel + +/** + * A single-writer event producer for a multi-reader consumer. + * + * To use + * - declare a subclass of [EventProducer] with the type parameter of the events to produce + * - mark it `@Singleton` (single-writer!) + * - configure [EventConsumer]s as described in the consumer's documentation + * - inject the producer and consumers where needed + * + * TODO: If we need to support different paradigms (multi-writer, etc.), abstract this into an + * interface and provide abstract implementations for each type. + */ +abstract class EventProducer { + private val subscribers = ConcurrentLinkedQueue>() + + fun subscribe(): Channel { + val channel = Channel(Channel.UNLIMITED) + subscribers.add(channel) + return channel + } + + suspend fun produce(event: T) { + subscribers.forEach { it.send(event) } + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt index c4749d39284e8..56ff3a09062c1 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt @@ -5,10 +5,13 @@ package io.airbyte.cdk.state import com.google.common.collect.Range +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.task.ForceFlushEvent import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton +import java.util.concurrent.ConcurrentHashMap interface FlushStrategy { suspend fun shouldFlush( @@ -18,17 +21,42 @@ interface FlushStrategy { ): Boolean } +/** + * Flush whenever + * - bytes consumed >= the configured batch size + * - the current range of indexes being consumed encloses a force flush index + */ +@SuppressFBWarnings( + "NP_NONNULL_PARAM_VIOLATION", + justification = "message is guaranteed to be non-null by Kotlin's type system" +) @Singleton @Secondary class DefaultFlushStrategy( private val config: DestinationConfiguration, + private val eventConsumer: EventConsumer ) : FlushStrategy { + private val forceFlushIndexes = ConcurrentHashMap() override suspend fun shouldFlush( stream: DestinationStream, rangeRead: Range, bytesProcessed: Long ): Boolean { - return bytesProcessed >= config.recordBatchSizeBytes + if (bytesProcessed >= config.recordBatchSizeBytes) { + return true + } + + // Listen to the event stream for a new force flush index + val nextFlushIndex = eventConsumer.consumeMaybe()?.indexes?.get(stream.descriptor) + + // Always update the index if the new one is not null + return when ( + val testIndex = + forceFlushIndexes.compute(stream.descriptor) { _, v -> nextFlushIndex ?: v } + ) { + null -> false + else -> rangeRead.contains(testIndex) + } } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt index 3227ae171c2dd..78d48e9150f87 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt @@ -38,6 +38,7 @@ interface DestinationTaskLauncher : TaskLauncher { suspend fun handleNewBatch(stream: DestinationStream, wrapped: BatchEnvelope<*>) suspend fun handleStreamClosed(stream: DestinationStream) suspend fun handleTeardownComplete() + suspend fun scheduleNextForceFlushAttempt(msFromNow: Long) } interface DestinationTaskLauncherExceptionHandler : @@ -95,6 +96,7 @@ class DefaultDestinationTaskLauncher( private val closeStreamTaskFactory: CloseStreamTaskFactory, private val teardownTaskFactory: TeardownTaskFactory, private val flushCheckpointsTaskFactory: FlushCheckpointsTaskFactory, + private val timedFlushTaskFactory: TimedForcedCheckpointFlushTaskFactory, private val exceptionHandler: TaskLauncherExceptionHandler ) : DestinationTaskLauncher { private val log = KotlinLogging.logger {} @@ -114,6 +116,8 @@ class DefaultDestinationTaskLauncher( val spillTask = spillToDiskTaskFactory.make(this, stream) enqueue(spillTask) } + val forceFlushTask = timedFlushTaskFactory.make(this) + enqueue(forceFlushTask) } /** Called when the initial destination setup completes. */ @@ -187,6 +191,12 @@ class DefaultDestinationTaskLauncher( enqueue(teardownTaskFactory.make(this)) } + /** Called when a force flush is scheduled. */ + override suspend fun scheduleNextForceFlushAttempt(msFromNow: Long) { + val task = timedFlushTaskFactory.make(this, msFromNow) + enqueue(task) + } + /** Called exactly once when all streams are closed. */ override suspend fun handleTeardownComplete() { stop() diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt new file mode 100644 index 0000000000000..2eb14ebc712ea --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.file.TimeProvider +import io.airbyte.cdk.state.CheckpointManager +import io.airbyte.cdk.state.EventConsumer +import io.airbyte.cdk.state.EventProducer +import io.micronaut.context.annotation.Prototype +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton +import kotlinx.coroutines.delay + +interface TimedForcedCheckpointFlushTask : SyncTask + +class DefaultTimedForcedCheckpointFlushTask( + private val delayMs: Long, + private val cadenceMs: Long, + private val checkpointManager: CheckpointManager, + private val eventProducer: EventProducer, + private val timeProvider: TimeProvider, + private val taskLauncher: DestinationTaskLauncher +) : TimedForcedCheckpointFlushTask { + + override suspend fun execute() { + // Wait for the configured time + timeProvider.delay(delayMs) + + // Flush whatever is handy + checkpointManager.flushReadyCheckpointMessages() + + // Compare the time since the last successful flush to the configured interval + val lastFlushTimeMs = checkpointManager.getLastSuccessfulFlushTimeMs() + val nowMs = timeProvider.currentTimeMillis() + val timeSinceLastFlushMs = nowMs - lastFlushTimeMs + + if (timeSinceLastFlushMs >= cadenceMs) { + // If the max time has elapsed, emit a force flush event with provided next checkpoint + // indexes + val nextIndexes = checkpointManager.getNextCheckpointIndexes() + eventProducer.produce(ForceFlushEvent(nextIndexes)) + taskLauncher.scheduleNextForceFlushAttempt(cadenceMs) + } else { + // Otherwise schedule the next attempt to run at {time of last flush + configured + // interval} + taskLauncher.scheduleNextForceFlushAttempt(cadenceMs - timeSinceLastFlushMs) + } + } +} + +interface TimedForcedCheckpointFlushTaskFactory { + fun make( + taskLauncher: DestinationTaskLauncher, + delayMs: Long? = null + ): TimedForcedCheckpointFlushTask +} + +@Singleton +@Secondary +class DefaultTimedForcedCheckpointFlushTaskFactory( + private val config: DestinationConfiguration, + private val checkpointManager: CheckpointManager, + private val eventProducer: EventProducer, + private val timeProvider: TimeProvider +) : TimedForcedCheckpointFlushTaskFactory { + override fun make( + taskLauncher: DestinationTaskLauncher, + delayMs: Long? + ): TimedForcedCheckpointFlushTask { + return DefaultTimedForcedCheckpointFlushTask( + delayMs ?: config.maxCheckpointFlushTimeMs, + config.maxCheckpointFlushTimeMs, + checkpointManager, + eventProducer, + timeProvider, + taskLauncher + ) + } +} + +data class ForceFlushEvent(val indexes: Map) + +@Singleton @Secondary class DefaultForceFlushEventProducer : EventProducer() + +@Prototype +@Secondary +class DefaultForceFlushEventConsumer(private val eventProducer: EventProducer) : + EventConsumer(eventProducer) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt new file mode 100644 index 0000000000000..fa0704b49503a --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.command + +import io.micronaut.context.annotation.Primary +import io.micronaut.context.annotation.Requires +import jakarta.inject.Singleton +import java.nio.file.Path + +@Singleton +@Primary +@Requires(env = ["MockDestinationConfiguration"]) +class MockDestinationConfiguration : DestinationConfiguration() { + override val recordBatchSizeBytes: Long = 1024L + override val tmpFileDirectory: Path = Path.of("/tmp-test") + override val firstStageTmpFilePrefix: String = "spilled" + override val firstStageTmpFileSuffix: String = ".jsonl" + + override val maxCheckpointFlushTimeMs: Long = 1000L +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt new file mode 100644 index 0000000000000..330ac100f2baa --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.file + +import io.micronaut.context.annotation.Primary +import io.micronaut.context.annotation.Requires +import jakarta.inject.Singleton + +@Singleton +@Primary +@Requires(env = ["MockTimeProvider"]) +class MockTimeProvider : TimeProvider { + private var currentTime: Long = 0 + + override fun currentTimeMillis(): Long { + return currentTime + } + + fun setCurrentTime(currentTime: Long) { + this.currentTime = currentTime + } + + override suspend fun delay(ms: Long) { + currentTime += ms + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt index 09ad533422fad..e620d4a534ded 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt @@ -10,7 +10,7 @@ import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 import io.airbyte.cdk.data.NullValue -import io.airbyte.cdk.state.CheckpointManager +import io.airbyte.cdk.state.MockCheckpointManager import io.airbyte.cdk.state.SyncManager import io.micronaut.context.annotation.Prototype import io.micronaut.context.annotation.Requires @@ -23,7 +23,12 @@ import org.junit.jupiter.api.Test @MicronautTest( rebuildContext = true, - environments = ["DestinationMessageQueueWriterTest", "MockDestinationCatalog"] + environments = + [ + "DestinationMessageQueueWriterTest", + "MockDestinationCatalog", + "MockCheckpointManager", + ] ) class DestinationMessageQueueWriterTest { @Inject lateinit var queueWriterFactory: TestDestinationMessageQueueWriterFactory @@ -88,35 +93,6 @@ class DestinationMessageQueueWriterTest { } } - @Prototype - @Requires(env = ["DestinationMessageQueueWriterTest"]) - class MockCheckpointManager : - CheckpointManager { - val streamStates = - mutableMapOf>>() - val globalStates = - mutableListOf>, CheckpointMessage>>() - - override fun addStreamCheckpoint( - key: DestinationStream.Descriptor, - index: Long, - checkpointMessage: CheckpointMessage - ) { - streamStates.getOrPut(key) { mutableListOf() }.add(index to checkpointMessage) - } - - override fun addGlobalCheckpoint( - keyIndexes: List>, - checkpointMessage: CheckpointMessage - ) { - globalStates.add(keyIndexes to checkpointMessage) - } - - override suspend fun flushReadyCheckpointMessages() { - throw NotImplementedError() - } - } - private fun makeRecord(stream: DestinationStream, record: String): DestinationRecord { return DestinationRecord( stream = stream.descriptor, diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt index b2667f3920229..5ea8bf86ec686 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt @@ -10,10 +10,12 @@ import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.file.TimeProvider import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.MessageConverter import io.airbyte.cdk.message.SimpleBatch +import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import jakarta.inject.Singleton @@ -21,6 +23,7 @@ import java.util.function.Consumer import java.util.stream.Stream import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtensionContext import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments @@ -55,6 +58,7 @@ class CheckpointManagerTest { data class MockGlobalCheckpointOut(val payload: String) : MockCheckpointOut() @Singleton + @Requires(env = ["CheckpointManagerTest"]) class MockStateMessageFactory : MessageConverter { override fun from(message: MockCheckpointIn): MockCheckpointOut { return when (message) { @@ -66,6 +70,7 @@ class CheckpointManagerTest { } @Singleton + @Requires(env = ["CheckpointManagerTest"]) class MockOutputConsumer : Consumer { val collectedStreamOutput = mutableMapOf>() @@ -82,11 +87,13 @@ class CheckpointManagerTest { } @Singleton + @Requires(env = ["CheckpointManagerTest"]) class TestCheckpointManager( override val catalog: DestinationCatalog, override val syncManager: SyncManager, override val outputFactory: MessageConverter, - override val outputConsumer: MockOutputConsumer + override val outputConsumer: MockOutputConsumer, + override val timeProvider: TimeProvider ) : StreamsCheckpointManager() sealed class TestEvent @@ -469,4 +476,150 @@ class CheckpointManagerTest { } } } + + @Test + fun testGetLastFlushTimeMs() = runTest { + val startTime = System.currentTimeMillis() + checkpointManager.addStreamCheckpoint( + stream1.descriptor, + 1L, + MockStreamCheckpointIn(stream1, 1) + ) + syncManager.markPersisted(stream1, Range.closed(0L, 1L)) + Assertions.assertTrue(startTime >= checkpointManager.getLastSuccessfulFlushTimeMs()) + checkpointManager.flushReadyCheckpointMessages() + Assertions.assertTrue(startTime < checkpointManager.getLastSuccessfulFlushTimeMs()) + } + + @Test + fun testGetNextStreamCheckpoints() = runTest { + Assertions.assertEquals( + emptyMap(), + checkpointManager.getNextCheckpointIndexes() + ) + + checkpointManager.addStreamCheckpoint( + stream1.descriptor, + 1L, + MockStreamCheckpointIn(stream1, 1) + ) + Assertions.assertEquals( + mapOf(stream1.descriptor to 1L), + checkpointManager.getNextCheckpointIndexes() + ) + + checkpointManager.addStreamCheckpoint( + stream2.descriptor, + 10L, + MockStreamCheckpointIn(stream2, 10) + ) + Assertions.assertEquals( + mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), + checkpointManager.getNextCheckpointIndexes() + ) + + checkpointManager.addStreamCheckpoint( + stream1.descriptor, + 2L, + MockStreamCheckpointIn(stream1, 2) + ) + Assertions.assertEquals( + mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), + checkpointManager.getNextCheckpointIndexes(), + "only the first checkpoint is returned" + ) + + syncManager.markPersisted(stream1, Range.singleton(0)) + Assertions.assertEquals( + mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), + checkpointManager.getNextCheckpointIndexes(), + "marking persisted is not sufficient" + ) + + checkpointManager.flushReadyCheckpointMessages() + Assertions.assertEquals( + mapOf(stream1.descriptor to 2L, stream2.descriptor to 10L), + checkpointManager.getNextCheckpointIndexes(), + "flushing the first checkpoint reveals the second one" + ) + + checkpointManager.addStreamCheckpoint( + stream2.descriptor, + 20L, + MockStreamCheckpointIn(stream2, 20) + ) + checkpointManager.flushReadyCheckpointMessages() + Assertions.assertEquals( + mapOf(stream1.descriptor to 2L, stream2.descriptor to 10L), + checkpointManager.getNextCheckpointIndexes(), + "but only on the stream that was flushed" + ) + + syncManager.markPersisted(stream2, Range.closed(0L, 19L)) + checkpointManager.flushReadyCheckpointMessages() + Assertions.assertEquals( + mapOf(stream1.descriptor to 2L), + checkpointManager.getNextCheckpointIndexes(), + "flushing all the checkpoints clears the stream from the map" + ) + + syncManager.markPersisted(stream1, Range.singleton(1)) + checkpointManager.flushReadyCheckpointMessages() + Assertions.assertEquals( + emptyMap(), + checkpointManager.getNextCheckpointIndexes(), + "flushing all the checkpoints clears the map" + ) + } + + @Test + fun testGetNextGlobalCheckpoints() = runTest { + Assertions.assertEquals( + emptyMap(), + checkpointManager.getNextCheckpointIndexes() + ) + + checkpointManager.addGlobalCheckpoint( + listOf(stream1.descriptor to 1L, stream2.descriptor to 10L), + MockGlobalCheckpointIn(1) + ) + Assertions.assertEquals( + mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), + checkpointManager.getNextCheckpointIndexes() + ) + + checkpointManager.addGlobalCheckpoint( + listOf(stream1.descriptor to 2L, stream2.descriptor to 20L), + MockGlobalCheckpointIn(2) + ) + Assertions.assertEquals( + mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), + checkpointManager.getNextCheckpointIndexes(), + "only the first checkpoint is returned" + ) + + syncManager.markPersisted(stream1, Range.singleton(0)) + checkpointManager.flushReadyCheckpointMessages() + Assertions.assertEquals( + mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), + checkpointManager.getNextCheckpointIndexes(), + "if only 1 stream is persisted, neither are returned" + ) + + syncManager.markPersisted(stream2, Range.closed(0L, 19L)) + checkpointManager.flushReadyCheckpointMessages() + Assertions.assertEquals( + mapOf(stream1.descriptor to 2L, stream2.descriptor to 20L), + checkpointManager.getNextCheckpointIndexes(), + "persisting the second stream triggers both to flush, revealing the next pair" + ) + + syncManager.markPersisted(stream1, Range.singleton(1)) + checkpointManager.flushReadyCheckpointMessages() + Assertions.assertEquals( + emptyMap(), + checkpointManager.getNextCheckpointIndexes(), + "flushing all the checkpoints clears the map" + ) + } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt new file mode 100644 index 0000000000000..58313422c0398 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.state + +import com.google.common.collect.Range +import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.command.MockDestinationCatalogFactory +import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.task.ForceFlushEvent +import io.micronaut.context.annotation.Primary +import io.micronaut.context.annotation.Requires +import io.micronaut.test.extensions.junit5.annotation.MicronautTest +import jakarta.inject.Singleton +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test + +@MicronautTest( + environments = + [ + "FlushStrategyTest", + "MockDestinationConfiguration", + ] +) +class DefaultFlushStrategyTest { + val stream1 = MockDestinationCatalogFactory.stream1 + + @Singleton + @Primary + @Requires(env = ["FlushStrategyTest"]) + class MockForceFlushEventProducer : EventProducer() + + @Test + fun testFlushByByteSize(flushStrategy: DefaultFlushStrategy, config: DestinationConfiguration) = + runTest { + Assertions.assertFalse( + flushStrategy.shouldFlush(stream1, Range.all(), config.recordBatchSizeBytes - 1L) + ) + Assertions.assertTrue( + flushStrategy.shouldFlush(stream1, Range.all(), config.recordBatchSizeBytes) + ) + Assertions.assertTrue( + flushStrategy.shouldFlush(stream1, Range.all(), config.recordBatchSizeBytes * 1000L) + ) + } + + @Test + fun testFlushByIndex( + flushStrategy: DefaultFlushStrategy, + config: DestinationConfiguration, + forceFlushEventProducer: MockForceFlushEventProducer + ) = runTest { + // Ensure the size trigger is not a factor + val insufficientSize = config.recordBatchSizeBytes - 1L + + Assertions.assertFalse( + flushStrategy.shouldFlush(stream1, Range.all(), insufficientSize), + "Should not flush even with whole range if no event" + ) + + forceFlushEventProducer.produce(ForceFlushEvent(mapOf(stream1.descriptor to 42L))) + Assertions.assertFalse( + flushStrategy.shouldFlush(stream1, Range.closed(0, 41), insufficientSize), + "Should not flush if index is not in range" + ) + Assertions.assertTrue( + flushStrategy.shouldFlush(stream1, Range.closed(0, 42), insufficientSize), + "Should flush if index is in range" + ) + + Assertions.assertFalse( + flushStrategy.shouldFlush(stream2, Range.closed(0, 42), insufficientSize), + "Should not flush other streams" + ) + forceFlushEventProducer.produce(ForceFlushEvent(mapOf(stream2.descriptor to 200L))) + Assertions.assertTrue( + flushStrategy.shouldFlush(stream2, Range.closed(0, 200), insufficientSize), + "(Unless they also have flush points)" + ) + + Assertions.assertTrue( + flushStrategy.shouldFlush(stream1, Range.closed(42, 100), insufficientSize), + "Should flush even if barely in range" + ) + Assertions.assertFalse( + flushStrategy.shouldFlush(stream1, Range.closed(43, 100), insufficientSize), + "Should not flush if index has been passed" + ) + + forceFlushEventProducer.produce(ForceFlushEvent(mapOf(stream1.descriptor to 100L))) + Assertions.assertFalse( + flushStrategy.shouldFlush(stream1, Range.closed(0, 42), insufficientSize), + "New events indexes should invalidate old ones" + ) + Assertions.assertTrue( + flushStrategy.shouldFlush(stream1, Range.closed(43, 100), insufficientSize), + "New event indexes should be honored" + ) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt new file mode 100644 index 0000000000000..6808061a82b4c --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.state + +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.file.TimeProvider +import io.airbyte.cdk.message.CheckpointMessage +import io.micronaut.context.annotation.Requires +import jakarta.inject.Inject +import jakarta.inject.Singleton + +@Singleton +@Requires(env = ["MockCheckpointManager"]) +class MockCheckpointManager : CheckpointManager { + @Inject lateinit var timeProvider: TimeProvider + + val streamStates = + mutableMapOf>>() + val globalStates = + mutableListOf>, CheckpointMessage>>() + + val flushedAtMs = mutableListOf() + var mockCheckpointIndexes = mutableMapOf() + var mockLastFlushTimeMs = 0L + + override suspend fun addStreamCheckpoint( + key: DestinationStream.Descriptor, + index: Long, + checkpointMessage: CheckpointMessage + ) { + streamStates.getOrPut(key) { mutableListOf() }.add(index to checkpointMessage) + } + + override suspend fun addGlobalCheckpoint( + keyIndexes: List>, + checkpointMessage: CheckpointMessage + ) { + globalStates.add(keyIndexes to checkpointMessage) + } + + override suspend fun flushReadyCheckpointMessages() { + flushedAtMs.add(timeProvider.currentTimeMillis()) + } + + override suspend fun getLastSuccessfulFlushTimeMs(): Long { + return mockLastFlushTimeMs + } + + override suspend fun getNextCheckpointIndexes(): Map { + return mockCheckpointIndexes + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerUtils.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerUtils.kt new file mode 100644 index 0000000000000..ea57af85f9630 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerUtils.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.state + +import com.google.common.collect.Range +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.message.Batch +import io.airbyte.cdk.message.BatchEnvelope +import io.airbyte.cdk.message.SimpleBatch + +/** + * Because [SyncManager] and [StreamManager] have thin interfaces with no side effects, mocking them + * is overkill (the mock implementation converges with the real one). Instead, we provide + * convenience extension functions to simplify mocking state for testing. + * + * TODO: add more of these and apply them throughout the tests to simplify the code. + */ +fun SyncManager.markPersisted(stream: DestinationStream, range: Range) { + this.getStreamManager(stream.descriptor) + .updateBatchState(BatchEnvelope(SimpleBatch(Batch.State.PERSISTED), range)) +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt index be850fbc6186e..ed6f6097269cd 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt @@ -36,6 +36,7 @@ import org.junit.jupiter.api.Test environments = [ "DestinationTaskLauncherTest", + "MockDestinationConfiguration", "MockDestinationCatalog", ] ) @@ -53,6 +54,7 @@ class DestinationTaskLauncherTest { @Inject lateinit var closeStreamTaskFactory: MockCloseStreamTaskFactory @Inject lateinit var teardownTaskFactory: MockTeardownTaskFactory @Inject lateinit var flushCheckpointsTaskFactory: MockFlushCheckpointsTaskFactory + @Inject lateinit var forceFlushTaskFactory: MockForceFlushTaskFactory @Singleton @Replaces(DefaultSetupTaskFactory::class) @@ -206,6 +208,24 @@ class DestinationTaskLauncherTest { } } + @Singleton + @Primary + @Requires(env = ["DestinationTaskLauncherTest"]) + class MockForceFlushTaskFactory : TimedForcedCheckpointFlushTaskFactory { + val ranWithDelay = Channel(Channel.UNLIMITED) + + override fun make( + taskLauncher: DestinationTaskLauncher, + delayMs: Long? + ): TimedForcedCheckpointFlushTask { + return object : TimedForcedCheckpointFlushTask { + override suspend fun execute() { + ranWithDelay.send(delayMs) + } + } + } + } + class MockBatch(override val state: Batch.State) : Batch @Singleton @@ -232,6 +252,9 @@ class DestinationTaskLauncherTest { // Verify that spill to disk ran for each stream mockSpillToDiskTaskFactory.streamHasRun.values.forEach { it.receive() } + // Verify that we kicked off the timed force flush w/o a specific delay + Assertions.assertNull(forceFlushTaskFactory.ranWithDelay.receive()) + // Collect the tasks wrapped by the exception handler: expect one Setup and [nStreams] // SpillToDisk mockExceptionHandler.wrappedTasks.close() @@ -321,6 +344,7 @@ class DestinationTaskLauncherTest { val incompleteBatch = BatchEnvelope(MockBatch(Batch.State.LOCAL), range) taskLauncher.handleNewBatch(stream1, incompleteBatch) Assertions.assertFalse(streamManager.areRecordsPersistedUntil(100L)) + val batchReceived = processBatchTaskFactory.hasRun.receive() Assertions.assertEquals(incompleteBatch, batchReceived) delay(500) @@ -358,4 +382,15 @@ class DestinationTaskLauncherTest { taskLauncher.stop() } + + @Test + fun testHandleScheduleForceFlush() = runTest { + launch { taskRunner.run() } + + // This should run force flush task with delay. + taskLauncher.scheduleNextForceFlushAttempt(1000) + Assertions.assertEquals(1000, forceFlushTaskFactory.ranWithDelay.receive()) + + taskLauncher.stop() + } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt index 220bde8e4389c..d6b89cdf34fc1 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt @@ -17,6 +17,7 @@ import jakarta.inject.Singleton class MockTaskLauncher(override val taskRunner: TaskRunner) : DestinationTaskLauncher { val spilledFiles = mutableListOf>() val batchEnvelopes = mutableListOf>() + val scheduledForcedFlushes = mutableListOf() override suspend fun handleSetupComplete() { throw NotImplementedError() @@ -49,4 +50,8 @@ class MockTaskLauncher(override val taskRunner: TaskRunner) : DestinationTaskLau override suspend fun start() { throw NotImplementedError() } + + override suspend fun scheduleNextForceFlushAttempt(msFromNow: Long) { + scheduledForcedFlushes.add(msFromNow) + } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt index 51f2ef88a6cd6..ccf8cd784dee3 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt @@ -5,7 +5,6 @@ package io.airbyte.cdk.task import com.google.common.collect.Range -import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.data.NullValue @@ -21,7 +20,6 @@ import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import jakarta.inject.Singleton -import java.nio.file.Path import java.util.concurrent.atomic.AtomicLong import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow @@ -33,6 +31,7 @@ import org.junit.jupiter.api.Test environments = [ "SpillToDiskTaskTest", + "MockDestinationConfiguration", "MockTempFileProvider", "MockTaskLauncher", ] @@ -42,16 +41,6 @@ class SpillToDiskTaskTest { @Inject lateinit var spillToDiskTaskFactory: DefaultSpillToDiskTaskFactory @Inject lateinit var mockTempFileProvider: MockTempFileProvider - @Singleton - @Primary - @Requires(env = ["SpillToDiskTaskTest"]) - class MockWriteConfiguration : DestinationConfiguration() { - override val recordBatchSizeBytes: Long = 1024L - override val tmpFileDirectory: Path = Path.of("/tmp-test") - override val firstStageTmpFilePrefix: String = "spilled" - override val firstStageTmpFileSuffix: String = ".jsonl" - } - @Singleton @Requires(env = ["SpillToDiskTaskTest"]) class MockQueueReader : @@ -92,7 +81,6 @@ class SpillToDiskTaskTest { rangeRead: Range, bytesProcessed: Long ): Boolean { - println(bytesProcessed) return bytesProcessed >= 1024 } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt new file mode 100644 index 0000000000000..bd729b000698a --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.file.MockTimeProvider +import io.airbyte.cdk.state.EventConsumer +import io.airbyte.cdk.state.MockCheckpointManager +import io.micronaut.test.extensions.junit5.annotation.MicronautTest +import jakarta.inject.Inject +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test + +@MicronautTest( + rebuildContext = true, + environments = + [ + "TimedForcedCheckpointFlushTaskTest", + "MockDestinationConfiguration", + "MockCheckpointManager", + "MockTaskLauncher", + "MockTimeProvider" + ] +) +class TimedForcedCheckpointFlushTaskTest { + @Inject lateinit var flushTaskFactory: DefaultTimedForcedCheckpointFlushTaskFactory + @Inject lateinit var taskLauncher: MockTaskLauncher + @Inject lateinit var timeProvider: MockTimeProvider + @Inject lateinit var checkpointManager: MockCheckpointManager + @Inject lateinit var config: DestinationConfiguration + @Inject lateinit var eventConsumer: EventConsumer + + @Test + fun testTaskWillNotFlushIfTimeNotElapsed() = runTest { + val delayMs = 100L + val task = flushTaskFactory.make(taskLauncher, delayMs) + timeProvider.setCurrentTime(0L) + val mockLastFlushTime = delayMs + config.maxCheckpointFlushTimeMs - 1L + checkpointManager.mockLastFlushTimeMs = mockLastFlushTime + task.execute() + Assertions.assertEquals( + delayMs, + timeProvider.currentTimeMillis(), + "task delayed the specified time" + ) + Assertions.assertEquals( + mutableListOf(delayMs), + checkpointManager.flushedAtMs, + "task tried to flush" + ) + Assertions.assertNull( + eventConsumer.consumeMaybe(), + "task did not produce a force flush event" + ) + val mockTimeSinceLastFlush = timeProvider.currentTimeMillis() - mockLastFlushTime + val nextRun = config.maxCheckpointFlushTimeMs - mockTimeSinceLastFlush + Assertions.assertEquals( + listOf(nextRun), + taskLauncher.scheduledForcedFlushes, + "task scheduled next flush for remaining interval" + ) + } + + @Test + fun testTaskWillFlushIfTimeElapsed() = runTest { + val delayMs = + config.maxCheckpointFlushTimeMs // task uses flush interval as delay by default + val task = flushTaskFactory.make(taskLauncher) + timeProvider.setCurrentTime(0L) + checkpointManager.mockLastFlushTimeMs = 0L + val expectedMap = + mutableMapOf(DestinationStream.Descriptor(name = "test", namespace = "testing") to 999L) + checkpointManager.mockCheckpointIndexes = expectedMap + task.execute() + Assertions.assertEquals( + delayMs, + timeProvider.currentTimeMillis(), + "task delayed for the configured interval" + ) + Assertions.assertEquals( + listOf(delayMs), + checkpointManager.flushedAtMs, + "task tried to flush" + ) + val flushEvent = eventConsumer.consumeMaybe() + Assertions.assertEquals( + expectedMap, + flushEvent?.indexes, + "task produced a force flush event with indexes provided by the checkpoint manager" + ) + Assertions.assertEquals( + listOf(config.maxCheckpointFlushTimeMs), + taskLauncher.scheduledForcedFlushes, + "task scheduled next flush for full interval" + ) + } +} From 3ab859758ca9b99c949c421bf2b7f8c3b0970e5a Mon Sep 17 00:00:00 2001 From: Parthiv Makwana <75653580+parthiv11@users.noreply.github.com> Date: Sat, 5 Oct 2024 08:29:39 +0530 Subject: [PATCH 029/379] source-simplecast contribution from parthiv11 (#46292) Co-authored-by: Natik Gadzhi Co-authored-by: Marcos Marx --- .../connectors/source-simplecast/README.md | 33 + .../acceptance-test-config.yml | 17 + .../connectors/source-simplecast/icon.svg | 19 + .../source-simplecast/manifest.yaml | 1063 +++++++++++++++++ .../source-simplecast/metadata.yaml | 35 + docs/integrations/sources/simplecast.md | 32 + 6 files changed, 1199 insertions(+) create mode 100644 airbyte-integrations/connectors/source-simplecast/README.md create mode 100644 airbyte-integrations/connectors/source-simplecast/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-simplecast/icon.svg create mode 100644 airbyte-integrations/connectors/source-simplecast/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-simplecast/metadata.yaml create mode 100644 docs/integrations/sources/simplecast.md diff --git a/airbyte-integrations/connectors/source-simplecast/README.md b/airbyte-integrations/connectors/source-simplecast/README.md new file mode 100644 index 0000000000000..1ccf20a6e31c5 --- /dev/null +++ b/airbyte-integrations/connectors/source-simplecast/README.md @@ -0,0 +1,33 @@ +# SimpleCast +This directory contains the manifest-only connector for `source-simplecast`. + +Say hello to the modern end-to-end podcasting platform. Simplecast remains the easiest way to get audio out to the world—with one-click publishing to Apple Podcasts Apple Podcasts , Spotify Spotify, or wherever your audience listens—and the best way for podcasters to cash in on their content. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-simplecast:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-simplecast build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-simplecast test +``` + diff --git a/airbyte-integrations/connectors/source-simplecast/acceptance-test-config.yml b/airbyte-integrations/connectors/source-simplecast/acceptance-test-config.yml new file mode 100644 index 0000000000000..f5babaffecee5 --- /dev/null +++ b/airbyte-integrations/connectors/source-simplecast/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-simplecast:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-simplecast/icon.svg b/airbyte-integrations/connectors/source-simplecast/icon.svg new file mode 100644 index 0000000000000..f9af0576e7fa9 --- /dev/null +++ b/airbyte-integrations/connectors/source-simplecast/icon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/airbyte-integrations/connectors/source-simplecast/manifest.yaml b/airbyte-integrations/connectors/source-simplecast/manifest.yaml new file mode 100644 index 0000000000000..324f98a8f6862 --- /dev/null +++ b/airbyte-integrations/connectors/source-simplecast/manifest.yaml @@ -0,0 +1,1063 @@ +version: 5.10.2 + +type: DeclarativeSource + +description: >- + Say hello to the modern end-to-end podcasting platform. Simplecast remains the + easiest way to get audio out to the world—with one-click publishing to Apple + Podcasts Apple Podcasts , Spotify Spotify, or wherever your audience + listens—and the best way for podcasters to cash in on their content. + +check: + type: CheckStream + stream_names: + - podcasts + +definitions: + streams: + podcasts: + type: DeclarativeStream + name: podcasts + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /podcasts/ + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - collection + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/podcasts" + episodes: + type: DeclarativeStream + name: episodes + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /podcasts/{{ stream_partition.podcast_id }}/episodes + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - collection + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: podcast_id + stream: + $ref: "#/definitions/streams/podcasts" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/episodes" + analytics: + type: DeclarativeStream + name: analytics + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /analytics? + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + request_option: + type: RequestOption + field_name: podcast + inject_into: request_parameter + partition_field: podcast_id + stream: + $ref: "#/definitions/streams/podcasts" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/analytics" + analytics_downloads: + type: DeclarativeStream + name: analytics_downloads + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /analytics/downloads?podcast={{ stream_partition.podcast_id }} + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: podcast_id + stream: + $ref: "#/definitions/streams/podcasts" + incremental_dependency: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/analytics_downloads" + analytics_podcasts_listeners: + type: DeclarativeStream + name: analytics_podcasts_listeners + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /analytics/podcasts/listeners?podcast={{ stream_partition.podcast_id + }} + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: podcast_id + stream: + $ref: "#/definitions/streams/podcasts" + incremental_dependency: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/analytics_podcasts_listeners" + categories: + type: DeclarativeStream + name: categories + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /categories + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - collection + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/categories" + distribution_channels: + type: DeclarativeStream + name: distribution_channels + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /distribution_channels + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - collection + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + page_size: 2 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/distribution_channels" + timezones: + type: DeclarativeStream + name: timezones + primary_key: + - value + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /timezones + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - collection + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/timezones" + analytics_episodes: + type: DeclarativeStream + name: analytics_episodes + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /analytics/episodes?podcast={{ stream_partition.podcast_id }} + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - collection + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: podcast_id + stream: + $ref: "#/definitions/streams/podcasts" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/analytics_episodes" + base_requester: + type: HttpRequester + url_base: https://api.simplecast.com + authenticator: + type: BearerAuthenticator + api_token: "{{ config[\"api_token\"] }}" + +streams: + - $ref: "#/definitions/streams/podcasts" + - $ref: "#/definitions/streams/episodes" + - $ref: "#/definitions/streams/analytics" + - $ref: "#/definitions/streams/analytics_downloads" + - $ref: "#/definitions/streams/analytics_podcasts_listeners" + - $ref: "#/definitions/streams/categories" + - $ref: "#/definitions/streams/distribution_channels" + - $ref: "#/definitions/streams/timezones" + - $ref: "#/definitions/streams/analytics_episodes" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_token + properties: + api_token: + type: string + description: >- + API token to use. Find it at your Private Apps page on the Simplecast + dashboard. + name: api_token + order: 0 + title: API Token + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + podcasts: false + episodes: false + analytics: false + analytics_downloads: false + analytics_podcasts_listeners: false + categories: false + distribution_channels: false + timezones: false + analytics_episodes: false + testedStreams: + podcasts: + streamHash: c2da39bd684fd26f29d71310fd294fc22a0978b3 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + episodes: + streamHash: 6c82add7366bed295b410b39374dcec9456ea6c0 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + analytics: + streamHash: 97b84cf0e030ff4f37c0b62e2d2c1cabf69d2611 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + analytics_downloads: + streamHash: 3527e7556494986c3ba4924f9c54930d7cb99ea5 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + analytics_podcasts_listeners: + hasRecords: true + streamHash: f39f0caa505f30512fda482152880fc18cb92584 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + categories: + streamHash: c874cfa177b60b6112039ed34a53cd678475cfb8 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + distribution_channels: + streamHash: c14e9dc97c67b4782a72b2d51001028cd9539bc2 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + timezones: + streamHash: 480bd5881021fd2abbb1eac20a17e13120424ff4 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + analytics_episodes: + hasRecords: true + streamHash: 63fc5db9dbd7151de3a693cf49672e27ae999bb4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + assist: + docsUrl: https://apidocs.simplecast.com/ + +schemas: + podcasts: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + account: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + id: + type: + - string + - "null" + is_custom_plan: + type: + - boolean + - "null" + is_default: + type: + - boolean + - "null" + owner: + type: + - object + - "null" + properties: + email: + type: + - string + - "null" + id: + type: + - string + - "null" + account_id: + type: + - string + - "null" + current_user_permission: + type: + - object + - "null" + properties: + can_create_episode: + type: + - boolean + - "null" + can_delete: + type: + - boolean + - "null" + can_edit: + type: + - boolean + - "null" + can_edit_ad_creatives: + type: + - boolean + - "null" + can_edit_admin_permissions: + type: + - boolean + - "null" + can_edit_advanced: + type: + - boolean + - "null" + can_edit_markers: + type: + - boolean + - "null" + can_edit_permissions: + type: + - boolean + - "null" + can_publish: + type: + - boolean + - "null" + can_upload: + type: + - boolean + - "null" + can_view: + type: + - boolean + - "null" + can_view_ad_creatives: + type: + - boolean + - "null" + can_view_analytics: + type: + - boolean + - "null" + can_view_episodes: + type: + - boolean + - "null" + display_owner_email: + type: + - boolean + - "null" + episodes: + type: + - object + - "null" + properties: + count: + type: + - number + - "null" + href: + type: + - string + - "null" + id: + type: + - string + - "null" + is_pending_invitation: + type: + - boolean + - "null" + permission: + type: + - object + - "null" + properties: + app_key: + type: + - string + - "null" + app_keys: + type: + - array + - "null" + can_create_episode: + type: + - boolean + - "null" + can_delete: + type: + - boolean + - "null" + can_edit: + type: + - boolean + - "null" + can_edit_ad_creatives: + type: + - boolean + - "null" + can_edit_admin_permissions: + type: + - boolean + - "null" + can_edit_advanced: + type: + - boolean + - "null" + can_edit_markers: + type: + - boolean + - "null" + can_edit_permissions: + type: + - boolean + - "null" + can_publish: + type: + - boolean + - "null" + can_upload: + type: + - boolean + - "null" + can_view: + type: + - boolean + - "null" + can_view_ad_creatives: + type: + - boolean + - "null" + can_view_analytics: + type: + - boolean + - "null" + can_view_episodes: + type: + - boolean + - "null" + id: + type: + - string + - "null" + label: + type: + - string + - "null" + labels: + type: + - array + - "null" + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + status: + type: + - string + - "null" + title: + type: + - string + - "null" + episodes: + type: object + $schema: http://json-schema.org/schema# + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + analytics: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + audio_status: + type: + - string + - "null" + days_since_release: + type: + - number + - "null" + duration: + type: + - number + - "null" + enclosure_url: + type: + - string + - "null" + feeds: + type: + - object + - "null" + properties: + collection: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + enable_episode_numbers: + type: + - boolean + - "null" + enabled: + type: + - boolean + - "null" + feed_url: + type: + - string + - "null" + href: + type: + - string + - "null" + id: + type: + - string + - "null" + is_explicit: + type: + - boolean + - "null" + is_primary: + type: + - boolean + - "null" + name: + type: + - string + - "null" + no_index: + type: + - boolean + - "null" + preferred_bitrate: + type: + - number + - "null" + published_at: + type: + - string + - "null" + status: + type: + - string + - "null" + href: + type: + - string + - "null" + guid: + type: + - string + - "null" + href: + type: + - string + - "null" + id: + type: + - string + - "null" + is_hidden: + type: + - boolean + - "null" + markers: + type: + - object + - "null" + properties: + collection: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + ad_limit: + type: + - number + - "null" + ad_type: + type: + - string + - "null" + href: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + offset_milliseconds: + type: + - number + - "null" + href: + type: + - string + - "null" + number: + type: + - number + - "null" + published_at: + type: + - string + - "null" + season: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + next_episode_number: + type: + - number + - "null" + number: + type: + - number + - "null" + slug: + type: + - string + - "null" + status: + type: + - string + - "null" + title: + type: + - string + - "null" + token: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + additionalProperties: true + analytics: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + downloads: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + embed: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + episodes: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + href: + type: + - string + - "null" + location: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + mapbox: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + recast: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + technology: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + time_of_week: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + analytics_downloads: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} + analytics_podcasts_listeners: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + href: + type: + - string + - "null" + id: + type: string + total: + type: + - number + - "null" + required: + - id + categories: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + label: + type: + - string + - "null" + rss_label: + type: + - string + - "null" + subcategories: + type: + - object + - "null" + properties: + collection: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + label: + type: + - string + - "null" + rss_label: + type: + - string + - "null" + value: + type: + - string + - "null" + value: + type: string + required: + - value + distribution_channels: + type: object + $schema: http://json-schema.org/schema# + properties: + href: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + additionalProperties: true + timezones: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} + analytics_episodes: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + downloads: + type: + - object + - "null" + properties: + total: + type: + - number + - "null" + href: + type: + - string + - "null" + id: + type: string + number: + type: + - number + - "null" + published_at: + type: + - string + - "null" + season: + type: + - object + - "null" + properties: + href: + type: + - string + - "null" + next_episode_number: + type: + - number + - "null" + number: + type: + - number + - "null" + title: + type: + - string + - "null" + required: + - id diff --git a/airbyte-integrations/connectors/source-simplecast/metadata.yaml b/airbyte-integrations/connectors/source-simplecast/metadata.yaml new file mode 100644 index 0000000000000..454db23a35d30 --- /dev/null +++ b/airbyte-integrations/connectors/source-simplecast/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.simplecast.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-simplecast + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: 776ca64c-95eb-47ec-a54d-9db3d16435d0 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-simplecast + githubIssueLabel: source-simplecast + icon: icon.svg + license: MIT + name: SimpleCast + releaseDate: 2024-10-03 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/simplecast + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/simplecast.md b/docs/integrations/sources/simplecast.md new file mode 100644 index 0000000000000..edd10e38320b9 --- /dev/null +++ b/docs/integrations/sources/simplecast.md @@ -0,0 +1,32 @@ +# SimpleCast +Say hello to the modern end-to-end podcasting platform. Simplecast remains the easiest way to get audio out to the world—with one-click publishing to Apple Podcasts Apple Podcasts , Spotify Spotify, or wherever your audience listens—and the best way for podcasters to cash in on their content. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_token` | `string` | API Token. API token to use. Find it at your Private Apps page on the Simplecast dashboard. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| podcasts | id | DefaultPaginator | ✅ | ❌ | +| episodes | id | DefaultPaginator | ✅ | ❌ | +| analytics | | DefaultPaginator | ✅ | ❌ | +| analytics_downloads | id | No pagination | ✅ | ❌ | +| analytics_podcasts_listeners | id | No pagination | ✅ | ❌ | +| categories | | DefaultPaginator | ✅ | ❌ | +| distribution_channels | | DefaultPaginator | ✅ | ❌ | +| timezones | value | No pagination | ✅ | ❌ | +| analytics_episodes | id | No pagination | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-03 | | Initial release by [@parthiv11](https://github.com/parthiv11) via Connector Builder | + +
From 0bd3da6aa98d73a70d30329b71c96047078fa7eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:59:34 -0700 Subject: [PATCH 030/379] chore(deps): bump dompurify from 3.0.6 to 3.1.7 in /docusaurus (#46367) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docusaurus/pnpm-lock.yaml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docusaurus/pnpm-lock.yaml b/docusaurus/pnpm-lock.yaml index 07e3818196014..6b9cc33cf3378 100644 --- a/docusaurus/pnpm-lock.yaml +++ b/docusaurus/pnpm-lock.yaml @@ -2823,8 +2823,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.0.6: - resolution: {integrity: sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==} + dompurify@3.1.7: + resolution: {integrity: sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==} domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -3165,6 +3165,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -3420,6 +3421,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -5123,6 +5125,7 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true robust-predicates@3.0.2: @@ -9227,7 +9230,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.0.6: {} + dompurify@3.1.7: {} domutils@2.8.0: dependencies: @@ -10486,7 +10489,7 @@ snapshots: d3-sankey: 0.12.3 dagre-d3-es: 7.0.10 dayjs: 1.11.11 - dompurify: 3.0.6 + dompurify: 3.1.7 elkjs: 0.8.2 khroma: 2.1.0 lodash-es: 4.17.21 From 46802b952c52b59f80514e2d2fdf81b97328777d Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Sat, 5 Oct 2024 05:17:15 +0100 Subject: [PATCH 031/379] =?UTF-8?q?=E2=9C=A8=20Source=20Apple=20Search=20A?= =?UTF-8?q?ds=20:=20Migrate=20to=20Manifest-only=20(#46288)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Octavia Squidington III --- .../source-apple-search-ads/README.md | 82 +- .../source-apple-search-ads/__init__.py | 3 - .../acceptance-test-config.yml | 2 +- .../source-apple-search-ads/main.py | 8 - .../source-apple-search-ads/manifest.yaml | 1135 +++++++++++++ .../source-apple-search-ads/metadata.yaml | 8 +- .../source-apple-search-ads/poetry.lock | 1460 ----------------- .../source-apple-search-ads/pyproject.toml | 28 - .../source_apple_search_ads/__init__.py | 8 - .../source_apple_search_ads/manifest.yaml | 216 --- .../source_apple_search_ads/run.py | 14 - .../schemas/adgroups.json | 225 --- .../schemas/adgroups_report_daily.json | 161 -- .../schemas/campaigns.json | 124 -- .../schemas/campaigns_report_daily.json | 193 --- .../schemas/keywords.json | 44 - .../schemas/keywords_report_daily.json | 181 -- .../source_apple_search_ads/source.py | 18 - .../source_apple_search_ads/spec.yaml | 45 - docs/integrations/sources/apple-search-ads.md | 1 + 20 files changed, 1169 insertions(+), 2787 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/__init__.py delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/main.py create mode 100644 airbyte-integrations/connectors/source-apple-search-ads/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/__init__.py delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/run.py delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/adgroups.json delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/adgroups_report_daily.json delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/campaigns.json delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/campaigns_report_daily.json delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/keywords.json delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/keywords_report_daily.json delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/source.py delete mode 100644 airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/spec.yaml diff --git a/airbyte-integrations/connectors/source-apple-search-ads/README.md b/airbyte-integrations/connectors/source-apple-search-ads/README.md index 38c7e4ce10a1c..f13d777b0318f 100644 --- a/airbyte-integrations/connectors/source-apple-search-ads/README.md +++ b/airbyte-integrations/connectors/source-apple-search-ads/README.md @@ -1,89 +1,63 @@ -# Apple-Search-Ads source connector +# Apple search ads source connector +This directory contains the manifest-only connector for `source-apple-search-ads`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -This is the repository for the Apple-Search-Ads source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/apple-search-ads). +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/apple-search-ads). ## Local development -### Prerequisites -* Python (~=3.9) -* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! +If you prefer to develop locally, you can follow the instructions below. -### Installing the connector -From this connector directory, run: -```bash -poetry install --with dev -``` - - -### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/apple-search-ads) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_apple_search_ads/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - - -### Locally running the connector -``` -poetry run source-apple-search-ads spec -poetry run source-apple-search-ads check --config secrets/config.json -poetry run source-apple-search-ads discover --config secrets/config.json -poetry run source-apple-search-ads read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` +### Building the docker image -### Running unit tests -To run unit tests locally, from the connector directory run: -``` -poetry run pytest unit_tests -``` +You can build any manifest-only connector with `airbyte-ci`: -### Building the docker image 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: + ```bash airbyte-ci connectors --name=source-apple-search-ads build ``` An image will be available on your host with the tag `airbyte/source-apple-search-ads:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/apple-search-ads) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. ### Running as a docker container -Then run any of the connector commands as follows: -``` + +Then run any of the standard source connector commands: + +```bash docker run --rm airbyte/source-apple-search-ads:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-apple-search-ads:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-apple-search-ads:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-apple-search-ads:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite -You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -```bash -airbyte-ci connectors --name=source-apple-search-ads test -``` +### Running the CI test suite -### Customizing acceptance Tests -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. +You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -### Dependency Management -All of your dependencies should be managed via Poetry. -To add a new dependency, run: ```bash -poetry add +airbyte-ci connectors --name=source-apple-search-ads test ``` -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-apple-search-ads test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + +If you want to contribute changes to `source-apple-search-ads`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-apple-search-ads test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/apple-search-ads.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. diff --git a/airbyte-integrations/connectors/source-apple-search-ads/__init__.py b/airbyte-integrations/connectors/source-apple-search-ads/__init__.py deleted file mode 100644 index 1100c1c58cf51..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2022 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-apple-search-ads/acceptance-test-config.yml b/airbyte-integrations/connectors/source-apple-search-ads/acceptance-test-config.yml index fe09f6e5321d0..e6f863199d556 100644 --- a/airbyte-integrations/connectors/source-apple-search-ads/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-apple-search-ads/acceptance-test-config.yml @@ -4,7 +4,7 @@ connector_image: airbyte/source-apple-search-ads:dev acceptance_tests: spec: tests: - - spec_path: "source_apple_search_ads/spec.yaml" + - spec_path: "manifest.yaml" connection: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-apple-search-ads/main.py b/airbyte-integrations/connectors/source-apple-search-ads/main.py deleted file mode 100644 index df8b0f70775cc..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_apple_search_ads.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-apple-search-ads/manifest.yaml b/airbyte-integrations/connectors/source-apple-search-ads/manifest.yaml new file mode 100644 index 0000000000000..286cf3f79f249 --- /dev/null +++ b/airbyte-integrations/connectors/source-apple-search-ads/manifest.yaml @@ -0,0 +1,1135 @@ +version: 5.7.5 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - campaigns + +definitions: + streams: + campaigns: + type: DeclarativeStream + selector: + extractor: + field_path: + - data + name: campaigns + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /campaigns + http_method: GET + request_headers: + X-AP-Context: orgId={{ config.org_id }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + backoff_strategies: + - type: ExponentialBackoffStrategy + response_filters: + - type: HttpResponseFilter + action: RETRY + http_codes: + - 500 + - 429 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 1000 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/campaigns" + adgroups: + type: DeclarativeStream + selector: + extractor: + field_path: + - data + name: adgroups + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /campaigns/{{ stream_slice.campaign_id }}/adgroups + http_method: GET + request_headers: + X-AP-Context: orgId={{ config.org_id }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + backoff_strategies: + - type: ExponentialBackoffStrategy + response_filters: + - type: HttpResponseFilter + action: RETRY + http_codes: + - 500 + - 429 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 1000 + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: campaign_id + stream: + $ref: "#/definitions/streams/campaigns" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/adgroups" + keywords: + type: DeclarativeStream + selector: + extractor: + field_path: + - data + name: keywords + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /campaigns/{{ stream_slice.parent_slice.campaign_id }}/adgroups/{{ + stream_slice.adgroup_id }}/targetingkeywords + http_method: GET + request_headers: + X-AP-Context: orgId={{ config.org_id }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + backoff_strategies: + - type: ExponentialBackoffStrategy + response_filters: + - type: HttpResponseFilter + action: RETRY + http_codes: + - 500 + - 429 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 1000 + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: adgroup_id + stream: + $ref: "#/definitions/streams/adgroups" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/keywords" + campaigns_report_daily: + type: DeclarativeStream + selector: + extractor: + field_path: + - data + - reportingDataResponse + - row + name: campaigns_report_daily + primary_key: + - date + - campaignId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /reports/campaigns + http_method: POST + request_headers: + X-AP-Context: orgId={{ config.org_id }} + request_body_json: + endTime: "{{ stream_slice.end_time }}" + groupBy: "[ 'countryOrRegion' ]" + selector: >- + { "orderBy": [ { "field": "countryOrRegion", "sortOrder": + "ASCENDING" } ] } + timeZone: UTC + startTime: "{{ stream_slice.start_time }}" + granularity: "{{ parameters.granularity }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + backoff_strategies: + - type: ExponentialBackoffStrategy + response_filters: + - type: HttpResponseFilter + action: RETRY + http_codes: + - 500 + - 429 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - reportingDataResponse + - row + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + lookback_window: P30D + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config.start_date }}" + datetime_format: "%Y-%m-%d" + end_datetime: + type: MinMaxDatetime + datetime: "{{ config.end_date or today_utc() }}" + datetime_format: "%Y-%m-%d" + step: P1D + cursor_granularity: P1D + transformations: + - type: AddFields + fields: + - path: + - campaignId + value: "{{ record.metadata.campaignId }}" + - type: AddFields + fields: + - path: + - date + value: "{{ stream_slice.start_time }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/campaigns_report_daily" + adgroups_report_daily: + type: DeclarativeStream + selector: + extractor: + field_path: + - data + - reportingDataResponse + - row + name: adgroups_report_daily + primary_key: + - date + - adGroupId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /reports/campaigns/{{ stream_slice.campaign_id }}/adgroups + http_method: POST + request_headers: + X-AP-Context: orgId={{ config.org_id }} + request_body_json: + endTime: "{{ stream_slice.end_time }}" + groupBy: "[ 'countryOrRegion' ]" + selector: >- + { "orderBy": [ { "field": "countryOrRegion", "sortOrder": + "ASCENDING" } ] } + timeZone: UTC + startTime: "{{ stream_slice.start_time }}" + granularity: "{{ parameters.granularity }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + backoff_strategies: + - type: ExponentialBackoffStrategy + response_filters: + - type: HttpResponseFilter + action: RETRY + http_codes: + - 500 + - 429 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - reportingDataResponse + - row + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: campaign_id + stream: + $ref: "#/definitions/streams/campaigns" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + lookback_window: P30D + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config.start_date }}" + datetime_format: "%Y-%m-%d" + end_datetime: + type: MinMaxDatetime + datetime: "{{ config.end_date or today_utc() }}" + datetime_format: "%Y-%m-%d" + step: P1D + cursor_granularity: P1D + transformations: + - type: AddFields + fields: + - path: + - adGroupId + value: "{{ record.metadata.adGroupId }}" + - type: AddFields + fields: + - path: + - date + value: "{{ stream_slice.start_time }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/adgroups_report_daily" + keywords_report_daily: + type: DeclarativeStream + selector: + extractor: + field_path: + - data + - reportingDataResponse + - row + name: keywords_report_daily + primary_key: + - date + - keywordId + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /reports/campaigns/{{ stream_slice.campaign_id }}/keywords + http_method: POST + request_headers: + X-AP-Context: orgId={{ config.org_id }} + request_body_json: + endTime: "{{ stream_slice.end_time }}" + groupBy: "[ 'countryOrRegion' ]" + selector: >- + { "orderBy": [ { "field": "countryOrRegion", "sortOrder": + "ASCENDING" } ] } + timeZone: UTC + startTime: "{{ stream_slice.start_time }}" + granularity: "{{ parameters.granularity }}" + error_handler: + type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + predicate: >- + {{ 'CAMPAIGN DOES NOT CONTAIN KEYWORD' in + response.error.errors[0].message }} + - type: HttpResponseFilter + action: RETRY + http_codes: + - 500 + - 429 + backoff_strategies: + - type: ExponentialBackoffStrategy + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - reportingDataResponse + - row + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: campaign_id + stream: + $ref: "#/definitions/streams/campaigns" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + lookback_window: P30D + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config.start_date }}" + datetime_format: "%Y-%m-%d" + end_datetime: + type: MinMaxDatetime + datetime: "{{ config.end_date or today_utc() }}" + datetime_format: "%Y-%m-%d" + step: P1D + cursor_granularity: P1D + transformations: + - type: AddFields + fields: + - path: + - keywordId + value: "{{ record.metadata.keywordId }}" + - type: AddFields + fields: + - path: + - date + value: "{{ stream_slice.start_time }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/keywords_report_daily" + base_requester: + type: HttpRequester + url_base: https://api.searchads.apple.com/api/v4 + authenticator: + type: OAuthAuthenticator + client_id: "{{ config.client_id }}" + client_secret: "{{ config.client_secret }}" + token_refresh_endpoint: >- + https://appleid.apple.com/auth/oauth2/token?grant_type=client_credentials&scope=searchadsorg + +streams: + - $ref: "#/definitions/streams/campaigns" + - $ref: "#/definitions/streams/adgroups" + - $ref: "#/definitions/streams/keywords" + - $ref: "#/definitions/streams/campaigns_report_daily" + - $ref: "#/definitions/streams/adgroups_report_daily" + - $ref: "#/definitions/streams/keywords_report_daily" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - org_id + - client_id + - start_date + - client_secret + properties: + org_id: + type: integer + description: >- + The identifier of the organization that owns the campaign. Your Org Id + is the same as your account in the Apple Search Ads UI. + title: Org Id + order: 0 + end_date: + type: string + description: Data is retrieved until that date (included) + title: End Date + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ + examples: + - "2021-01-01" + order: 1 + client_id: + type: string + description: >- + A user identifier for the token request. See here + title: Client Id + airbyte_secret: true + order: 2 + start_date: + type: string + description: Start getting data from that date. + title: Start Date + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ + examples: + - "2020-01-01" + order: 3 + client_secret: + type: string + description: >- + A string that authenticates the user’s setup request. See here + title: Client Secret + airbyte_secret: true + order: 4 + additionalProperties: true + +metadata: + autoImportSchema: + campaigns: false + adgroups: false + keywords: false + campaigns_report_daily: false + adgroups_report_daily: false + keywords_report_daily: false + yamlComponents: + streams: + keywords_report_daily: + - errorHandler + global: + - authenticator + testedStreams: + campaigns: + streamHash: feda30929d58abb1441b9a5a9fa676ac53732898 + adgroups: + streamHash: 4bee763630f2faa1e57b8fdecfb5ad2562a6f8e5 + keywords: + streamHash: 8e9c01bded0da3421d384099ab66fe699e448558 + campaigns_report_daily: + streamHash: b73b3a7fd009d515e31b6eae904bf925e45f4370 + adgroups_report_daily: + streamHash: 5982b7f631f8bfc624b467b8e4b442f3beec34e6 + keywords_report_daily: + streamHash: 642ee63980cc78adbe63e1008199574b282d846f + assist: {} + +schemas: + campaigns: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + adChannelType: + type: string + adamId: + type: integer + billingEvent: + type: string + budgetAmount: + anyOf: + - type: 'null' + - properties: + amount: + type: string + currency: + type: string + type: object + budgetOrders: + type: array + countriesOrRegions: + items: + type: string + type: array + countryOrRegionServingStateReasons: + type: object + creationTime: + type: string + dailyBudgetAmount: + properties: + amount: + type: string + currency: + type: string + type: object + deleted: + type: boolean + displayStatus: + type: string + endTime: + type: 'null' + id: + type: integer + locInvoiceDetails: + properties: + billingContactEmail: + type: string + buyerEmail: + type: string + buyerName: + type: string + clientName: + type: + - 'null' + - string + orderNumber: + type: + - 'null' + - string + type: object + modificationTime: + type: string + name: + type: string + orgId: + type: integer + paymentModel: + type: string + sapinLawResponse: + type: string + servingStateReasons: + type: 'null' + servingStatus: + type: string + startTime: + type: string + status: + type: string + supplySources: + items: + type: string + type: array + adgroups: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + automatedKeywordsOptIn: + type: boolean + campaignId: + type: integer + cpaGoal: + type: 'null' + creationTime: + type: string + defaultBidAmount: + properties: + amount: + type: string + currency: + type: string + type: object + deleted: + type: boolean + displayStatus: + type: string + endTime: + type: 'null' + id: + type: integer + modificationTime: + type: string + name: + type: string + orgId: + type: integer + pricingModel: + type: string + servingStateReasons: + anyOf: + - type: 'null' + - items: + type: string + type: array + servingStatus: + type: string + startTime: + type: string + status: + type: string + targetingDimensions: + properties: + adminArea: + anyOf: + - type: 'null' + - properties: + included: + items: + type: string + type: array + type: object + age: + anyOf: + - type: 'null' + - properties: + included: + items: + properties: + maxAge: + type: 'null' + minAge: + type: + - integer + - 'null' + type: object + type: array + type: object + appCategories: + properties: + excluded: + anyOf: + - type: 'null' + - items: + type: integer + type: array + included: + anyOf: + - type: 'null' + - items: + type: integer + type: array + type: object + appDownloaders: + properties: + excluded: + items: + type: string + type: array + included: + items: + type: string + type: array + type: object + country: + anyOf: + - type: 'null' + - properties: + included: + items: + type: string + type: array + type: object + daypart: + type: 'null' + deviceClass: + properties: + included: + items: + type: string + type: array + type: object + gender: + type: 'null' + locality: + anyOf: + - type: 'null' + - properties: + included: + items: + type: string + type: array + type: object + type: object + keywords: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + adGroupId: + type: integer + bidAmount: + properties: + amount: + type: string + currency: + type: string + type: object + campaignId: + type: integer + creationTime: + type: string + deleted: + type: boolean + id: + type: integer + matchType: + type: string + modificationTime: + type: string + status: + type: string + text: + type: string + campaigns_report_daily: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + campaignId: + type: integer + date: + type: string + granularity: + items: + properties: + avgCPA: + properties: + amount: + type: string + currency: + type: string + type: object + avgCPM: + properties: + amount: + type: string + currency: + type: string + type: object + avgCPT: + properties: + amount: + type: string + currency: + type: string + type: object + conversionRate: + type: number + date: + type: string + impressions: + type: integer + installs: + type: integer + latOffInstalls: + type: integer + latOnInstalls: + type: integer + localSpend: + properties: + amount: + type: string + currency: + type: string + type: object + newDownloads: + type: integer + redownloads: + type: integer + taps: + type: integer + ttr: + type: number + type: object + type: array + metadata: + properties: + adChannelType: + type: string + app: + properties: + adamId: + type: integer + appName: + type: string + type: object + billingEvent: + type: string + campaignId: + type: integer + campaignName: + type: string + campaignStatus: + type: string + countriesOrRegions: + items: + type: string + type: array + countryOrRegion: + type: string + countryOrRegionServingStateReasons: + type: object + dailyBudget: + properties: + amount: + type: string + currency: + type: string + type: object + deleted: + type: boolean + displayStatus: + type: string + modificationTime: + type: string + orgId: + type: integer + servingStateReasons: + type: 'null' + servingStatus: + type: string + supplySources: + items: + type: string + type: array + totalBudget: + anyOf: + - type: 'null' + - properties: + amount: + type: string + currency: + type: string + type: object + type: object + other: + type: boolean + adgroups_report_daily: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + adGroupId: + type: integer + date: + type: string + granularity: + items: + properties: + avgCPA: + properties: + amount: + type: string + currency: + type: string + type: object + avgCPM: + properties: + amount: + type: string + currency: + type: string + type: object + avgCPT: + properties: + amount: + type: string + currency: + type: string + type: object + conversionRate: + type: number + date: + type: string + impressions: + type: integer + installs: + type: integer + latOffInstalls: + type: integer + latOnInstalls: + type: integer + localSpend: + properties: + amount: + type: string + currency: + type: string + type: object + newDownloads: + type: integer + redownloads: + type: integer + taps: + type: integer + ttr: + type: number + type: object + type: array + metadata: + properties: + adGroupDisplayStatus: + type: string + adGroupId: + type: integer + adGroupName: + type: string + adGroupServingStateReasons: + type: 'null' + adGroupServingStatus: + type: string + adGroupStatus: + type: string + automatedKeywordsOptIn: + type: boolean + campaignId: + type: integer + countryOrRegion: + type: string + cpaGoal: + type: 'null' + defaultBidAmount: + properties: + amount: + type: string + currency: + type: string + type: object + deleted: + type: boolean + endTime: + type: 'null' + modificationTime: + type: string + orgId: + type: integer + pricingModel: + type: string + startTime: + type: string + type: object + other: + type: boolean + keywords_report_daily: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + date: + type: string + granularity: + items: + properties: + avgCPA: + properties: + amount: + type: string + currency: + type: string + type: object + avgCPT: + properties: + amount: + type: string + currency: + type: string + type: object + conversionRate: + type: number + date: + type: string + impressions: + type: integer + installs: + type: integer + latOffInstalls: + type: integer + latOnInstalls: + type: integer + localSpend: + properties: + amount: + type: string + currency: + type: string + type: object + newDownloads: + type: integer + redownloads: + type: integer + taps: + type: integer + ttr: + type: number + type: object + type: array + insights: + properties: + bidRecommendation: + properties: + bidMax: + anyOf: + - type: 'null' + - properties: + amount: + type: string + currency: + type: string + type: object + bidMin: + anyOf: + - type: 'null' + - properties: + amount: + type: string + currency: + type: string + type: object + type: object + type: object + keywordId: + type: integer + metadata: + properties: + adGroupDeleted: + type: boolean + adGroupId: + type: integer + adGroupName: + type: string + bidAmount: + properties: + amount: + type: string + currency: + type: string + type: object + countryOrRegion: + type: string + deleted: + type: boolean + keyword: + type: string + keywordDisplayStatus: + type: string + keywordId: + type: integer + keywordStatus: + type: string + matchType: + type: string + modificationTime: + type: string + type: object + other: + type: boolean diff --git a/airbyte-integrations/connectors/source-apple-search-ads/metadata.yaml b/airbyte-integrations/connectors/source-apple-search-ads/metadata.yaml index 76a8cba47e30a..c7595b6959cd0 100644 --- a/airbyte-integrations/connectors/source-apple-search-ads/metadata.yaml +++ b/airbyte-integrations/connectors/source-apple-search-ads/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: e59c8416-c2fa-4bd3-9e95-52677ea281c1 - dockerImageTag: 0.1.20 + dockerImageTag: 0.2.0 dockerRepository: airbyte/source-apple-search-ads githubIssueLabel: source-apple-search-ads icon: apple.svg @@ -10,7 +10,7 @@ data: name: Apple Search Ads remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-apple-search-ads registryOverrides: cloud: @@ -20,12 +20,12 @@ data: releaseStage: alpha documentationUrl: https://docs.airbyte.com/integrations/sources/apple-search-ads tags: - - language:python - cdk:low-code + - language:manifest-only ab_internal: sl: 100 ql: 100 supportLevel: community connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.7.5@sha256:4832cc13b262b4cae4ba72b07da544e6ee2f5d216b7147483480d5ebc5d0d7ca metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-apple-search-ads/poetry.lock b/airbyte-integrations/connectors/source-apple-search-ads/poetry.lock deleted file mode 100644 index 116b0d191d745..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/poetry.lock +++ /dev/null @@ -1,1460 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "1.0.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-1.0.0-py3-none-any.whl", hash = "sha256:74cd8d4f9790b9a164731c42236cb015166b5ab2b0754b6a1fd730f223eb4e7f"}, - {file = "airbyte_cdk-1.0.0.tar.gz", hash = "sha256:102b75ce589460be4f75dabd3402ac7aa633c90758558c81d140fd436b76371f"}, -] - -[package.dependencies] -airbyte-protocol-models = ">=0.9.0,<1.0" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.0.1,<2.1.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.13.0" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.13.0-py3-none-any.whl", hash = "sha256:fa8b7e1a85f9ae171c50b30d23b317da1740d051994fd3ed648f9dfba00250e2"}, - {file = "airbyte_protocol_models-0.13.0.tar.gz", hash = "sha256:09d8900ba8674a9315fa1799d17026f6b38d2187c08160449540ee93331ed2e7"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.8" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.0.8" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.5" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.129" -description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} -requests = ">=2,<3" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "orjson" -version = "3.10.7" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "6.2.5" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "656a09cf041cb51ce84e287501b40bd60394c28750360db74d7c8fc4b7f291f7" diff --git a/airbyte-integrations/connectors/source-apple-search-ads/pyproject.toml b/airbyte-integrations/connectors/source-apple-search-ads/pyproject.toml deleted file mode 100644 index 6434b5a77d8d8..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "0.1.20" -name = "source-apple-search-ads" -description = "Source implementation for Apple Search Ads." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/apple-search-ads" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_apple_search_ads" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "1.0.0" - -[tool.poetry.scripts] -source-apple-search-ads = "source_apple_search_ads.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "^1.9.3" -pytest = "^6.1" -pytest-mock = "^3.6.1" diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/__init__.py b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/__init__.py deleted file mode 100644 index f0c12ace95ae7..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2022 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceAppleSearchAds - -__all__ = ["SourceAppleSearchAds"] diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/manifest.yaml b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/manifest.yaml deleted file mode 100644 index 6a2f40ff878ef..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/manifest.yaml +++ /dev/null @@ -1,216 +0,0 @@ -version: "0.29.0" - -definitions: - requester: - type: HttpRequester - url_base: "https://api.searchads.apple.com/api/v4" - http_method: "GET" - authenticator: - type: "OAuthAuthenticator" - token_refresh_endpoint: "https://appleid.apple.com/auth/oauth2/token?grant_type=client_credentials&scope=searchadsorg" - client_id: "{{ config.client_id }}" - client_secret: "{{ config.client_secret }}" - refresh_token: "" - request_headers: - X-AP-Context: orgId={{ config.org_id }} - error_handler: - response_filters: - - http_codes: [500, 429] - action: RETRY - backoff_strategies: - - type: "ExponentialBackoffStrategy" - retriever: - requester: - $ref: "#/definitions/requester" - - base_stream: - selector: - extractor: - field_path: ["data"] - retriever: - $ref: "#/definitions/retriever" - record_selector: - $ref: "#/definitions/base_stream/selector" - paginator: - type: DefaultPaginator - pagination_strategy: - type: OffsetIncrement - page_size: 1000 - page_size_option: - inject_into: request_parameter - field_name: limit - page_token_option: - type: RequestOption - field_name: offset - inject_into: request_parameter - - campaigns_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "campaigns" - primary_key: "id" - path: "/campaigns" - - adgroups_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "adgroups" - primary_key: "id" - retriever: - $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/campaigns_stream" - parent_key: "id" - partition_field: "campaign_id" - requester: - $ref: "#/definitions/retriever/requester" - path: "/campaigns/{{ stream_slice.campaign_id }}/adgroups" - - keywords_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "keywords" - primary_key: "id" - retriever: - $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/adgroups_stream" - parent_key: "id" - partition_field: "adgroup_id" - requester: - $ref: "#/definitions/retriever/requester" - path: "/campaigns/{{ stream_slice.parent_slice.campaign_id }}/adgroups/{{ stream_slice.adgroup_id }}/targetingkeywords" - - incremental_sync: - type: "DatetimeBasedCursor" - start_datetime: "{{ config.start_date }}" - end_datetime: "{{ config.end_date or today_utc() }}" - datetime_format: "%Y-%m-%d" - step: "P1D" - cursor_granularity: "P1D" - cursor_field: "date" - lookback_window: "P30D" - - report_stream: - selector: - extractor: - field_path: ["data", "reportingDataResponse", "row"] - incremental_sync: - $ref: "#/definitions/incremental_sync" - retriever: - $ref: "#/definitions/retriever" - record_selector: - $ref: "#/definitions/report_stream/selector" - paginator: - type: NoPagination - requester: - $ref: "#/definitions/retriever/requester" - http_method: "POST" - request_body_json: - startTime: "{{ stream_slice.start_time }}" - endTime: "{{ stream_slice.end_time }}" - timeZone: "UTC" - granularity: "{{ parameters.granularity }}" - selector: '{ - "orderBy": [ - { - "field": "countryOrRegion", - "sortOrder": "ASCENDING" - } - ] - }' - groupBy: "[ 'countryOrRegion' ]" - - campaigns_report_daily_stream: - $ref: "#/definitions/report_stream" - $parameters: - name: "campaigns_report_daily" - granularity: "DAILY" - primary_key: [["date"], ["campaignId"]] - retriever: - $ref: "#/definitions/report_stream/retriever" - requester: - $ref: "#/definitions/report_stream/retriever/requester" - path: "/reports/campaigns" - transformations: - - type: AddFields - fields: - - path: ["campaignId"] - value: "{{ record.metadata.campaignId }}" - - path: ["date"] - value: "{{ stream_slice.start_time }}" - - adgroups_report_daily_stream: - $ref: "#/definitions/report_stream" - $parameters: - name: "adgroups_report_daily" - granularity: "DAILY" - primary_key: [["date"], ["adGroupId"]] - retriever: - $ref: "#/definitions/report_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/campaigns_stream" - parent_key: "id" - partition_field: "campaign_id" - requester: - $ref: "#/definitions/report_stream/retriever/requester" - path: "/reports/campaigns/{{ stream_slice.campaign_id }}/adgroups" - transformations: - - type: AddFields - fields: - - path: ["adGroupId"] - value: "{{ record.metadata.adGroupId }}" - - path: ["date"] - value: "{{ stream_slice.start_time }}" - - keywords_report_daily_stream: - $ref: "#/definitions/report_stream" - $parameters: - name: "keywords_report_daily" - granularity: "DAILY" - primary_key: [["date"], ["keywordId"]] - retriever: - $ref: "#/definitions/report_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/campaigns_stream" - parent_key: "id" - partition_field: "campaign_id" - requester: - $ref: "#/definitions/report_stream/retriever/requester" - path: "/reports/campaigns/{{ stream_slice.campaign_id }}/keywords" - error_handler: - $ref: "#/definitions/requester/error_handler" - response_filters: - - predicate: "{{ 'CAMPAIGN DOES NOT CONTAIN KEYWORD' in response.error.errors[0].message }}" - action: IGNORE - - http_codes: [500, 429] - action: RETRY - backoff_strategies: - - type: "ExponentialBackoffStrategy" - transformations: - - type: AddFields - fields: - - path: ["keywordId"] - value: "{{ record.metadata.keywordId }}" - - path: ["date"] - value: "{{ stream_slice.start_time }}" - -streams: - - "#/definitions/campaigns_stream" - - "#/definitions/adgroups_stream" - - "#/definitions/keywords_stream" - - "#/definitions/campaigns_report_daily_stream" - - "#/definitions/adgroups_report_daily_stream" - - "#/definitions/keywords_report_daily_stream" - -check: - stream_names: - - "campaigns" diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/run.py b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/run.py deleted file mode 100644 index dc2def6147ad2..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_apple_search_ads import SourceAppleSearchAds - - -def run(): - source = SourceAppleSearchAds() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/adgroups.json b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/adgroups.json deleted file mode 100644 index a5ad5002513ba..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/adgroups.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "properties": { - "automatedKeywordsOptIn": { - "type": "boolean" - }, - "campaignId": { - "type": "integer" - }, - "cpaGoal": { - "type": "null" - }, - "creationTime": { - "type": "string" - }, - "defaultBidAmount": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "deleted": { - "type": "boolean" - }, - "displayStatus": { - "type": "string" - }, - "endTime": { - "type": "null" - }, - "id": { - "type": "integer" - }, - "modificationTime": { - "type": "string" - }, - "name": { - "type": "string" - }, - "orgId": { - "type": "integer" - }, - "pricingModel": { - "type": "string" - }, - "servingStateReasons": { - "anyOf": [ - { - "type": "null" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ] - }, - "servingStatus": { - "type": "string" - }, - "startTime": { - "type": "string" - }, - "status": { - "type": "string" - }, - "targetingDimensions": { - "properties": { - "adminArea": { - "anyOf": [ - { - "type": "null" - }, - { - "properties": { - "included": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - ] - }, - "age": { - "anyOf": [ - { - "type": "null" - }, - { - "properties": { - "included": { - "items": { - "properties": { - "maxAge": { - "type": "null" - }, - "minAge": { - "type": ["integer", "null"] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - } - ] - }, - "appCategories": { - "properties": { - "excluded": { - "anyOf": [ - { - "type": "null" - }, - { - "items": { - "type": "integer" - }, - "type": "array" - } - ] - }, - "included": { - "anyOf": [ - { - "type": "null" - }, - { - "items": { - "type": "integer" - }, - "type": "array" - } - ] - } - }, - "type": "object" - }, - "appDownloaders": { - "properties": { - "excluded": { - "items": { - "type": "string" - }, - "type": "array" - }, - "included": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "country": { - "anyOf": [ - { - "type": "null" - }, - { - "properties": { - "included": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - ] - }, - "daypart": { - "type": "null" - }, - "deviceClass": { - "properties": { - "included": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "gender": { - "type": "null" - }, - "locality": { - "anyOf": [ - { - "type": "null" - }, - { - "properties": { - "included": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - ] - } - }, - "type": "object" - } - }, - "type": "object" -} diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/adgroups_report_daily.json b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/adgroups_report_daily.json deleted file mode 100644 index 781cf003b9242..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/adgroups_report_daily.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "properties": { - "adGroupId": { - "type": "integer" - }, - "date": { - "type": "string" - }, - "granularity": { - "items": { - "properties": { - "avgCPA": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "avgCPM": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "avgCPT": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "conversionRate": { - "type": "number" - }, - "date": { - "type": "string" - }, - "impressions": { - "type": "integer" - }, - "installs": { - "type": "integer" - }, - "latOffInstalls": { - "type": "integer" - }, - "latOnInstalls": { - "type": "integer" - }, - "localSpend": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "newDownloads": { - "type": "integer" - }, - "redownloads": { - "type": "integer" - }, - "taps": { - "type": "integer" - }, - "ttr": { - "type": "number" - } - }, - "type": "object" - }, - "type": "array" - }, - "metadata": { - "properties": { - "adGroupDisplayStatus": { - "type": "string" - }, - "adGroupId": { - "type": "integer" - }, - "adGroupName": { - "type": "string" - }, - "adGroupServingStateReasons": { - "type": "null" - }, - "adGroupServingStatus": { - "type": "string" - }, - "adGroupStatus": { - "type": "string" - }, - "automatedKeywordsOptIn": { - "type": "boolean" - }, - "campaignId": { - "type": "integer" - }, - "countryOrRegion": { - "type": "string" - }, - "cpaGoal": { - "type": "null" - }, - "defaultBidAmount": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "deleted": { - "type": "boolean" - }, - "endTime": { - "type": "null" - }, - "modificationTime": { - "type": "string" - }, - "orgId": { - "type": "integer" - }, - "pricingModel": { - "type": "string" - }, - "startTime": { - "type": "string" - } - }, - "type": "object" - }, - "other": { - "type": "boolean" - } - }, - "type": "object" -} diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/campaigns.json b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/campaigns.json deleted file mode 100644 index 87de15854d47f..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/campaigns.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "properties": { - "adChannelType": { - "type": "string" - }, - "adamId": { - "type": "integer" - }, - "billingEvent": { - "type": "string" - }, - "budgetAmount": { - "anyOf": [ - { - "type": "null" - }, - { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - } - ] - }, - "budgetOrders": { - "type": "array" - }, - "countriesOrRegions": { - "items": { - "type": "string" - }, - "type": "array" - }, - "countryOrRegionServingStateReasons": { - "type": "object" - }, - "creationTime": { - "type": "string" - }, - "dailyBudgetAmount": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "deleted": { - "type": "boolean" - }, - "displayStatus": { - "type": "string" - }, - "endTime": { - "type": "null" - }, - "id": { - "type": "integer" - }, - "locInvoiceDetails": { - "properties": { - "billingContactEmail": { - "type": "string" - }, - "buyerEmail": { - "type": "string" - }, - "buyerName": { - "type": "string" - }, - "clientName": { - "type": ["null", "string"] - }, - "orderNumber": { - "type": ["null", "string"] - } - }, - "type": "object" - }, - "modificationTime": { - "type": "string" - }, - "name": { - "type": "string" - }, - "orgId": { - "type": "integer" - }, - "paymentModel": { - "type": "string" - }, - "sapinLawResponse": { - "type": "string" - }, - "servingStateReasons": { - "type": "null" - }, - "servingStatus": { - "type": "string" - }, - "startTime": { - "type": "string" - }, - "status": { - "type": "string" - }, - "supplySources": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" -} diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/campaigns_report_daily.json b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/campaigns_report_daily.json deleted file mode 100644 index f2eb3e02b9b19..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/campaigns_report_daily.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "properties": { - "campaignId": { - "type": "integer" - }, - "date": { - "type": "string" - }, - "granularity": { - "items": { - "properties": { - "avgCPA": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "avgCPM": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "avgCPT": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "conversionRate": { - "type": "number" - }, - "date": { - "type": "string" - }, - "impressions": { - "type": "integer" - }, - "installs": { - "type": "integer" - }, - "latOffInstalls": { - "type": "integer" - }, - "latOnInstalls": { - "type": "integer" - }, - "localSpend": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "newDownloads": { - "type": "integer" - }, - "redownloads": { - "type": "integer" - }, - "taps": { - "type": "integer" - }, - "ttr": { - "type": "number" - } - }, - "type": "object" - }, - "type": "array" - }, - "metadata": { - "properties": { - "adChannelType": { - "type": "string" - }, - "app": { - "properties": { - "adamId": { - "type": "integer" - }, - "appName": { - "type": "string" - } - }, - "type": "object" - }, - "billingEvent": { - "type": "string" - }, - "campaignId": { - "type": "integer" - }, - "campaignName": { - "type": "string" - }, - "campaignStatus": { - "type": "string" - }, - "countriesOrRegions": { - "items": { - "type": "string" - }, - "type": "array" - }, - "countryOrRegion": { - "type": "string" - }, - "countryOrRegionServingStateReasons": { - "type": "object" - }, - "dailyBudget": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "deleted": { - "type": "boolean" - }, - "displayStatus": { - "type": "string" - }, - "modificationTime": { - "type": "string" - }, - "orgId": { - "type": "integer" - }, - "servingStateReasons": { - "type": "null" - }, - "servingStatus": { - "type": "string" - }, - "supplySources": { - "items": { - "type": "string" - }, - "type": "array" - }, - "totalBudget": { - "anyOf": [ - { - "type": "null" - }, - { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - } - ] - } - }, - "type": "object" - }, - "other": { - "type": "boolean" - } - }, - "type": "object" -} diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/keywords.json b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/keywords.json deleted file mode 100644 index d833278c222ee..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/keywords.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "properties": { - "adGroupId": { - "type": "integer" - }, - "bidAmount": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "campaignId": { - "type": "integer" - }, - "creationTime": { - "type": "string" - }, - "deleted": { - "type": "boolean" - }, - "id": { - "type": "integer" - }, - "matchType": { - "type": "string" - }, - "modificationTime": { - "type": "string" - }, - "status": { - "type": "string" - }, - "text": { - "type": "string" - } - }, - "type": "object" -} diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/keywords_report_daily.json b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/keywords_report_daily.json deleted file mode 100644 index 0a37211243f20..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/schemas/keywords_report_daily.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "properties": { - "date": { - "type": "string" - }, - "granularity": { - "items": { - "properties": { - "avgCPA": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "avgCPT": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "conversionRate": { - "type": "number" - }, - "date": { - "type": "string" - }, - "impressions": { - "type": "integer" - }, - "installs": { - "type": "integer" - }, - "latOffInstalls": { - "type": "integer" - }, - "latOnInstalls": { - "type": "integer" - }, - "localSpend": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "newDownloads": { - "type": "integer" - }, - "redownloads": { - "type": "integer" - }, - "taps": { - "type": "integer" - }, - "ttr": { - "type": "number" - } - }, - "type": "object" - }, - "type": "array" - }, - "insights": { - "properties": { - "bidRecommendation": { - "properties": { - "bidMax": { - "anyOf": [ - { - "type": "null" - }, - { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - } - ] - }, - "bidMin": { - "anyOf": [ - { - "type": "null" - }, - { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - } - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "keywordId": { - "type": "integer" - }, - "metadata": { - "properties": { - "adGroupDeleted": { - "type": "boolean" - }, - "adGroupId": { - "type": "integer" - }, - "adGroupName": { - "type": "string" - }, - "bidAmount": { - "properties": { - "amount": { - "type": "string" - }, - "currency": { - "type": "string" - } - }, - "type": "object" - }, - "countryOrRegion": { - "type": "string" - }, - "deleted": { - "type": "boolean" - }, - "keyword": { - "type": "string" - }, - "keywordDisplayStatus": { - "type": "string" - }, - "keywordId": { - "type": "integer" - }, - "keywordStatus": { - "type": "string" - }, - "matchType": { - "type": "string" - }, - "modificationTime": { - "type": "string" - } - }, - "type": "object" - }, - "other": { - "type": "boolean" - } - }, - "type": "object" -} diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/source.py b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/source.py deleted file mode 100644 index 890284d4c94b5..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceAppleSearchAds(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/spec.yaml b/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/spec.yaml deleted file mode 100644 index 0fe5d3b502d73..0000000000000 --- a/airbyte-integrations/connectors/source-apple-search-ads/source_apple_search_ads/spec.yaml +++ /dev/null @@ -1,45 +0,0 @@ -documentationUrl: https://docs.airbyte.io/integrations/sources/apple-search-ads -connectionSpecification: - $schema: http://json-schema.org/draft-07/schema# - title: Apple Search Ads Spec - type: object - required: - - org_id - - client_id - - client_secret - - start_date - additionalProperties: true - properties: - org_id: - type: integer - title: Org Id - description: >- - The identifier of the organization that owns the campaign. Your Org Id is the same as your account in the Apple Search Ads UI. - client_id: - type: string - title: Client Id - description: >- - A user identifier for the token request. See here - airbyte_secret: true - client_secret: - type: string - title: Client Secret - description: >- - A string that authenticates the user’s setup request. See here - airbyte_secret: true - start_date: - type: string - title: Start Date - description: Start getting data from that date. - pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ - examples: - - "2020-01-01" - end_date: - type: string - title: End Date - description: Data is retrieved until that date (included) - pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ - examples: - - "2021-01-01" diff --git a/docs/integrations/sources/apple-search-ads.md b/docs/integrations/sources/apple-search-ads.md index 07fbef28894c0..fad6891fe51c5 100644 --- a/docs/integrations/sources/apple-search-ads.md +++ b/docs/integrations/sources/apple-search-ads.md @@ -60,6 +60,7 @@ However, at this moment and as indicated in the stream names, the connector only | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------------------------------------------------------------- | +| 0.2.0 | 2024-10-01 | [46288](https://github.com/airbytehq/airbyte/pull/46288) | Migrate to Manifest-only | | 0.1.20 | 2024-09-28 | [46153](https://github.com/airbytehq/airbyte/pull/46153) | Update dependencies | | 0.1.19 | 2024-09-21 | [45803](https://github.com/airbytehq/airbyte/pull/45803) | Update dependencies | | 0.1.18 | 2024-09-14 | [45474](https://github.com/airbytehq/airbyte/pull/45474) | Update dependencies | From 568a1c3035356e9c1e3b86b446de45888391af97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 5 Oct 2024 04:26:43 +0000 Subject: [PATCH 032/379] chore(deps): bump micromatch from 4.0.5 to 4.0.8 in /docusaurus (#46364) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Natik Gadzhi --- docusaurus/pnpm-lock.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docusaurus/pnpm-lock.yaml b/docusaurus/pnpm-lock.yaml index 6b9cc33cf3378..fb4d02b94f277 100644 --- a/docusaurus/pnpm-lock.yaml +++ b/docusaurus/pnpm-lock.yaml @@ -4065,8 +4065,8 @@ packages: micromark@4.0.0: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mime-db@1.33.0: @@ -7625,7 +7625,7 @@ snapshots: jiti: 1.21.0 js-yaml: 4.1.0 lodash: 4.17.21 - micromatch: 4.0.5 + micromatch: 4.0.8 resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.6.2 @@ -9427,7 +9427,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} @@ -9886,7 +9886,7 @@ snapshots: http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.5 + micromatch: 4.0.8 optionalDependencies: '@types/express': 4.17.21 transitivePeerDependencies: @@ -10918,7 +10918,7 @@ snapshots: transitivePeerDependencies: - supports-color - micromatch@4.0.5: + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 From 4739998572148b5af53e0ec77b00afcebedebf4c Mon Sep 17 00:00:00 2001 From: btkcodedev Date: Sat, 5 Oct 2024 10:04:04 +0530 Subject: [PATCH 033/379] Source Chameleon: Fix survey_responses schema and resize icon to 250x250 (#46248) Co-authored-by: Octavia Squidington III Co-authored-by: Natik Gadzhi --- .../connectors/source-chameleon/icon.svg | 10 +- .../connectors/source-chameleon/manifest.yaml | 2673 ++++++++--------- .../connectors/source-chameleon/metadata.yaml | 2 +- docs/integrations/sources/chameleon.md | 11 +- 4 files changed, 1191 insertions(+), 1505 deletions(-) diff --git a/airbyte-integrations/connectors/source-chameleon/icon.svg b/airbyte-integrations/connectors/source-chameleon/icon.svg index bc226fab90177..9f2e59ac34a80 100644 --- a/airbyte-integrations/connectors/source-chameleon/icon.svg +++ b/airbyte-integrations/connectors/source-chameleon/icon.svg @@ -1,3 +1,7 @@ - - - \ No newline at end of file + + + + + + + diff --git a/airbyte-integrations/connectors/source-chameleon/manifest.yaml b/airbyte-integrations/connectors/source-chameleon/manifest.yaml index 4961abe6134df..8648e0410aca1 100644 --- a/airbyte-integrations/connectors/source-chameleon/manifest.yaml +++ b/airbyte-integrations/connectors/source-chameleon/manifest.yaml @@ -252,6 +252,20 @@ definitions: type: DpathExtractor field_path: - changes + incremental_sync: + type: DatetimeBasedCursor + cursor_field: created_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: '{{ config["start_date"] }}' + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" schema_loader: type: InlineSchemaLoader schema: @@ -605,75 +619,75 @@ metadata: survey_responses: true testedStreams: helpbars: + hasRecords: true streamHash: 0a7ba26cd962134338003ca12b90666fcd13e713 hasResponse: true - responsesAreSuccessful: true - hasRecords: true - primaryKeysArePresent: true primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true segments: + hasRecords: true streamHash: 75dd1415744ffd11e6bb57284f1c3e7875d166dd hasResponse: true - responsesAreSuccessful: true - hasRecords: true - primaryKeysArePresent: true primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true urls: + hasRecords: true streamHash: b25c587581096cafecc49d148bab28052783ddd4 hasResponse: true - responsesAreSuccessful: true - hasRecords: true - primaryKeysArePresent: true primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true url_groups: + hasRecords: true streamHash: ee7e5cc175e211db97347bee383dc98e7f779dee hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + changes: + streamHash: 87018359ecaa1aa155a2d88859859141f4d613fe + hasResponse: true responsesAreSuccessful: true hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true - changes: + launchers: hasRecords: true - streamHash: 77c1c0a055652a17fad8d4c9fadeddd2b353fc64 + streamHash: f80cae968df5fcd35ccd8a354fee13489134ddbf hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true - launchers: - streamHash: f80cae968df5fcd35ccd8a354fee13489134ddbf - hasResponse: true - responsesAreSuccessful: true - hasRecords: true - primaryKeysArePresent: true - primaryKeysAreUnique: true tooltips: + hasRecords: true streamHash: 6d719a0f3e67e8990aa8777481cc912a5a41d0ee hasResponse: true - responsesAreSuccessful: true - hasRecords: true - primaryKeysArePresent: true primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true tours: + hasRecords: true streamHash: ad41bd55706c5c0df68a1f90ee8133a18ca66a43 hasResponse: true - responsesAreSuccessful: true - hasRecords: true - primaryKeysArePresent: true primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true surveys: - streamHash: 19fe636d735af502037ae6f017c3fb41ee3bf49e + streamHash: 4d13e65a770dcfd93a5e61c0d80c8d293e4b2362 hasResponse: true responsesAreSuccessful: true hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true survey_responses: - hasRecords: false - streamHash: 7484f1ba08160ff8c3ca2c4f2f0c41ccf935f8f1 + streamHash: 2a4e364e12be7a62bd26b4bd5a07bba2a4b9743a hasResponse: true - primaryKeysAreUnique: true - primaryKeysArePresent: true responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true assist: docsUrl: https://developers.chameleon.io/#/ @@ -947,9 +961,7 @@ schemas: additionalProperties: true properties: created_at: - type: - - string - - "null" + type: string experience_id: type: - string @@ -973,229 +985,30 @@ schemas: - object - "null" properties: - account_id: - type: - - string - - "null" - autoscroll: - type: - - boolean - - "null" - background_type: - type: - - string - - "null" body: type: - - string - - "null" - body_alignment: - type: - - string - - "null" - buttons: - type: - - object - - "null" - properties: - 66e8a3799660ed0020b9f4b7: - type: - - object - - "null" - properties: - action_element: - type: - - object - - "null" - properties: - button_id: - type: - - string - - "null" - id: - type: - - string - - "null" - kind: - type: - - string - - "null" - step_id: - type: - - string - - "null" - use: - type: - - array - - "null" - additional_actions: - type: - - array - - "null" - copied_button_id: - type: - - string - - "null" - enabled: - type: - - boolean - - "null" - id: - type: - - string - - "null" - order: - type: - - number - - "null" - position: - type: - - string - - "null" - step_id: - type: - - string - - "null" - style_button_roundness: - type: - - string - - "null" - style_color_border: - type: - - string - - "null" - style_color_fill: - type: - - string - - "null" - style_color_text: - type: - - string - - "null" - text: - type: - - string - - "null" - 66e8a3799660ed0020b9f4bb: - type: - - object - - "null" - properties: - action_element: - type: - - object - - "null" - properties: - button_id: - type: - - string - - "null" - id: - type: - - string - - "null" - kind: - type: - - string - - "null" - step_id: - type: - - string - - "null" - use: - type: - - array - - "null" - additional_actions: - type: - - array - - "null" - copied_button_id: - type: - - string - - "null" - enabled: - type: - - boolean - - "null" - id: - type: - - string - - "null" - order: - type: - - number - - "null" - position: - type: - - string - - "null" - step_id: - type: - - string - - "null" - style_button_roundness: - type: - - string - - "null" - style_color_border: - type: - - string - - "null" - style_color_fill: - type: - - string - - "null" - style_color_text: - type: - - string - - "null" - text: - type: - - string - - "null" - campaign_positions: - type: - - object - - "null" - capture_id: - type: - - string - - "null" - checklist_progressbar: - type: - - boolean - - "null" - completed_count: - type: - - number + - array - "null" + items: + type: + - string + - "null" completed_unpublish_count: - type: - - number - - "null" - components: type: - array - "null" items: - anyOf: - - type: string - - type: array - items: - type: string - copied_list_id: - type: - - string - - "null" - copied_step_id: - type: - - string - - "null" - copied_template_id: + type: + - number + - "null" + completed_unpublish_user_id: type: - - string + - array - "null" + items: + type: + - string + - "null" count_at: type: - array @@ -1204,143 +1017,155 @@ schemas: type: - string - "null" - cover_full_width: - type: - - boolean - - "null" - cover_height: + display_animation: type: - - string + - array - "null" - cover_position: + items: + type: + - string + - "null" + first_published_at: type: - - string + - array - "null" - cover_type: + items: + type: + - string + - "null" + id: type: - string - "null" - created_user_id: + kind: type: - string - "null" - css_syntax_errors: + name: type: - array - "null" - cta: + items: + type: + - string + - "null" + path: type: - string - "null" - cta_op: + path_index: type: - string - "null" - cta_position: + published_at: type: - - string + - array - "null" - cta_previous: + items: + type: + - string + - "null" + published_at_count: type: - - string + - array - "null" - cta_previous_position: + items: + type: + - number + - "null" + published_completed_unpublish_count: type: - - string + - array - "null" - dismiss_behavior: + items: + type: + - number + - "null" + published_run_at: type: - - string + - array - "null" - dismiss_later_amount: + items: + type: + - string + - "null" + published_run_at_count: type: - - number + - array - "null" - dismiss_later_behavior: - type: - - string - - "null" - dismiss_later_limit: - type: - - number - - "null" - dismiss_text: - type: - - string - - "null" - dismiss_type: - type: - - string - - "null" - display_animation: - type: - - string - - "null" - displayed_count: - type: - - number - - "null" - dropdown_items: + items: + type: + - number + - "null" + published_segment_ids: type: - array - "null" - dropdown_items2: + items: + type: + - array + - "null" + items: + type: + - string + - "null" + published_updated_at: type: - array - "null" - element_match_operator: - type: - - string - - "null" - element_match_time: - type: - - number - - "null" - element_match_time_additional: - type: - - number - - "null" - embed_height: - type: - - number - - "null" - embed_width: - type: - - number - - "null" - empty_capture_id: - type: - - string - - "null" - empty_cover_full_width: - type: - - boolean - - "null" - empty_css_syntax_errors: + items: + type: + - string + - "null" + published_user_id: type: - array - "null" - empty_embed_height: + items: + type: + - string + - "null" + recurrence_frequency: type: - - number + - array - "null" - empty_embed_width: + items: + type: + - number + - "null" + recurrence_kind: type: - - number + - array - "null" - empty_media_position: + items: + type: + - string + - "null" + secondary_trigger: type: - - string + - array - "null" - empty_state: + items: + type: + - string + - "null" + secondary_trigger_position: type: - - boolean + - array - "null" - engagement_options: + items: + type: + - string + - "null" + segment_at: type: - - object + - array - "null" - excluded_segment_ids: + items: + type: + - string + - "null" + segment_ids: type: - array - "null" @@ -1352,35 +1177,21 @@ schemas: type: - string - "null" - exit_any_click: - type: - - boolean - - "null" - exit_any_click_behavior: + selection_id: type: - string - "null" - exit_element: - type: - - object - - "null" - exited_count: - type: - - number - - "null" - experiment_range: + selector: + anyOf: + - type: string + - type: array + items: + type: string + step_id: type: - string - "null" - faded_description: - type: - - boolean - - "null" - feedback_zero: - type: - - object - - "null" - first_published_at: + step_trigger: type: - array - "null" @@ -1388,43 +1199,47 @@ schemas: type: - string - "null" - floating_dismiss: - type: - - boolean - - "null" - follow_up_delay: + style_relative_offset_x: type: - - number - - "null" - has_title: - type: - - boolean + - array - "null" - hero_cta: + items: + type: + - string + - "null" + style_trigger_offset_x: type: - - string + - array - "null" - highlight_click_through: + items: + type: + - string + - "null" + style_trigger_offset_y: type: - - boolean + - array - "null" - highlight_type: + items: + type: + - string + - "null" + style_trigger_scale_width: type: - - string + - array - "null" - icon_size: + items: + type: + - string + - "null" + tag: type: - string - "null" - id: + text: type: - string - "null" - iframe_embed_height: - type: - - number - - "null" - inline_position: + trigger_element_attachment_id: type: - array - "null" @@ -1432,768 +1247,544 @@ schemas: type: - string - "null" - input_type: + trigger_secondary_type: type: - - string + - array - "null" - input_type2: + items: + type: + - string + - "null" + use: type: - - string + - array - "null" - item_segment_ids: + items: + anyOf: + - type: string + - type: array + items: + type: string + width_with_units: type: - array - "null" - items: + items: + type: + - string + - "null" + options: + type: + - object + - "null" + properties: + capture_id: type: - array - "null" items: type: - - object + - string - "null" - properties: - description: - type: - - string - - "null" - copied_list_item_id: - type: - - string - - "null" - created_user_id: - type: - - string - - "null" - has_description: - type: - - boolean - - "null" - hide: - type: - - boolean - - "null" - id: - type: - - string - - "null" - kind: - type: - - string - - "null" - list_id: - type: - - string - - "null" - new_tab: - type: - - boolean - - "null" - position: - type: - - number - - "null" - redirect: - type: - - boolean - - "null" - redirect_url: - type: - - string - - "null" - style_color_divider: - type: - - string - - "null" - style_divider_size: - type: - - string - - "null" - style_font_size: - type: - - string - - "null" - title: - type: - - string - - "null" - url: - type: - - string - - "null" - user_id: - type: - - string - - "null" - key_meta: + trigger_element_attachment_url: type: - - boolean + - array - "null" - key_uid: + items: + type: + - string + - "null" + path: + type: + - string + - "null" + user: + type: + - object + - "null" + properties: + created_at: type: - string - "null" - kind: + email: type: - string - "null" - label_themes: - type: - - array - - "null" - last_count: + id: type: - - number + - string - "null" - last_count_elapsed: + name: type: - - number + - string - "null" - last_dropdown_items: + updated_at: type: - - array + - string - "null" - last_edited_css_at: - type: - - string - - "null" - last_edited_css_user_id: - type: - - string - - "null" - last_reviewer_ids: - type: - - array - - "null" - list_placement: - type: - - string - - "null" - list_type: - type: - - string - - "null" - margin_bottom: - type: - - number - - "null" - margin_left: - type: - - number - - "null" - margin_right: - type: - - number - - "null" - margin_top: - type: - - number - - "null" - media_position: - type: - - string - - "null" - modal_width: - type: - - string - - "null" - modal_width_exact: - type: - - number - - "null" - name: - type: - - string - - "null" - opts: - type: - - object - - "null" - persist_hotspot_trigger: - type: - - boolean - - "null" - placeholder: - type: - - string - - "null" - pointer_anchor: - type: - - string - - "null" - pointer_highlight: - type: - - boolean - - "null" - position: - type: - - number - - "null" - position_element: - type: - - object - - "null" - properties: - id: - type: - - string - - "null" - kind: - type: - - string - - "null" - list_id: - type: - - string - - "null" - use: - type: - - array - - "null" - position_type: - type: - - string - - "null" - previous_redirect_disabled: - type: - - boolean - - "null" - progress_bar_position: - type: - - string - - "null" - progress_position: - type: - - string - - "null" - progress_type: - type: - - string - - "null" - publish_note: - type: - - array - - "null" - items: + required: + - id + - created_at + launchers: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + excluded_segment_ids: + type: + - array + - "null" + icon_size: + type: + - string + - "null" + id: + type: string + items: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + description: type: - string - "null" - published_at: - type: - - array - - "null" - items: + created_at: type: - string - "null" - published_at_count: - anyOf: - - type: number - - type: array - items: - type: number - published_completed_unpublish_count: - type: - - number - - "null" - published_run_at: - type: - - array - - "null" - items: + hide: + type: + - boolean + - "null" + id: type: - string - "null" - published_run_at_count: - anyOf: - - type: number - - type: array - items: - type: number - published_segment_ids: - type: - - array - - "null" - items: + kind: type: - - array + - string - "null" - items: - type: - - string - - "null" - published_updated_at: - type: - - array - - "null" - items: + title: type: - string - "null" - published_url_group_ids: - type: - - array - - "null" - published_user_id: - type: - - array - - "null" - items: + list_type: + type: + - string + - "null" + name: + type: + - string + - "null" + position_type: + type: + - string + - "null" + quantifier_urls: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + id: type: - string - "null" - quantifier_op: - type: - - string - - "null" - quantifier_urls: - type: - - array - - "null" - items: + match_type: type: - - object + - string - "null" - properties: - id: - type: - - string - - "null" - match_type: - type: - - string - - "null" - url: - type: - - string - - "null" - recurrence_frequency: + url: + type: + - string + - "null" + screen_position: + type: + - string + - "null" + segment_ids: + type: + - array + - "null" + segments_op: + type: + - string + - "null" + stats: + type: + - object + - "null" + properties: + displayed_count: type: - number - "null" - recurrence_kind: - type: - - string - - "null" - recurrence_unit: - type: - - string - - "null" - screen_position: - type: - - string - - "null" - search: - type: - - boolean - - "null" - secondary_trigger: + started_count: type: - - string + - number - "null" - secondary_trigger_position: - type: - - string - - "null" - segment_at: - type: - - array - - "null" - items: - type: - - string - - "null" - segment_ids: - type: - - array - - "null" - items: - type: - - array - - "null" - items: - type: - - string - - "null" - segments_op: - type: - - string - - "null" - show_timed_dismiss: - type: - - boolean - - "null" - skip_trigger: + tag_ids: + type: + - array + - "null" + title: + type: + - string + - "null" + trigger: + type: + - string + - "null" + trigger_text: + type: + - string + - "null" + trigger_type: + type: + - string + - "null" + updated_at: + type: string + required: + - id + - updated_at + tooltips: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + position: + type: + - number + - "null" + published_at: + type: + - string + - "null" + tag_ids: + type: + - array + - "null" + updated_at: + type: string + required: + - id + - updated_at + tours: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + excluded_segment_ids: + type: + - array + - "null" + experiment_range: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + position: + type: + - number + - "null" + segment_ids: + type: + - array + - "null" + segments_op: + type: + - string + - "null" + stats: + type: + - object + - "null" + properties: + completed_count: type: - - boolean + - number - "null" - snap_position: + exited_count: type: - - string + - number - "null" started_count: type: - number - "null" - step_additional_trigger: - type: - - string - - "null" - step_trigger: - type: - - string - - "null" - steps_counts: - type: - - array - - "null" - items: - type: - - number - - "null" - style_button_corner_radius: - type: - - string - - "null" - style_canvas_width_setting: - type: - - string - - "null" - style_checklist_progressbar_position: - type: - - string - - "null" - style_color_background: - type: - - string - - "null" - style_color_button_border: - type: - - string - - "null" - style_color_button_highlight: - type: - - string - - "null" - style_color_button_text: - type: - - string - - "null" - style_color_checkmark: - type: - - string - - "null" - style_color_dismiss: - type: - - string - - "null" - style_color_gradient: + style: + type: + - string + - "null" + tag_ids: + type: + - array + - "null" + updated_at: + type: string + required: + - id + - updated_at + surveys: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + excluded_segment_ids: + type: + - array + - "null" + items: + type: + - string + - "null" + id: + type: string + last_dropdown_items: + type: + - array + - "null" + items: + type: + - string + - "null" + name: + type: + - string + - "null" + position: + type: + - number + - "null" + published_at: + type: + - string + - "null" + rate_unlimit_at: + type: + - string + - "null" + segment_id: + type: + - string + - "null" + segment_ids: + type: + - array + - "null" + items: + type: + - string + - "null" + segments_op: + type: + - string + - "null" + stats: + type: + - object + - "null" + properties: + completed_count: type: - - string + - number - "null" - style_color_gradient2: + exited_count: type: - - string + - number - "null" - style_color_icon: + last_completed_at: type: - string - "null" - style_color_icon_background: + last_exited_at: type: - string - "null" - style_color_link: + last_started_at: type: - string - "null" - style_color_name: + started_count: type: - - string + - number - "null" - style_color_secondary_button_border: - type: - - string - - "null" - style_color_secondary_button_highlight: - type: - - string - - "null" - style_color_secondary_button_text: - type: - - string - - "null" - style_color_text: - type: - - string - - "null" - style_corner_radius: - type: - - string - - "null" - style_cover_corner_radius: - type: - - string - - "null" - style_custom_css: - type: - - string - - "null" - style_empty_cover_corner_radius: - type: - - string - - "null" - style_font: - type: - - string - - "null" - style_font_size: - type: - - string - - "null" - style_item_color_highlight: - type: - - string - - "null" - style_position_dismiss: - type: - - string - - "null" - style_spacing_canvas: - type: - - string - - "null" - style_title_background_color: - type: - - string - - "null" - style_title_font_size: - type: - - string - - "null" - style_title_height: - type: - - string - - "null" - style_trigger_color_highlight: - type: - - string - - "null" - style_trigger_color_highlight2: - type: - - string - - "null" - style_trigger_color_highlight3: - type: - - string - - "null" - style_trigger_offset_x: - anyOf: - - type: string - - type: array - items: - type: - - "null" - - string - style_trigger_offset_y: - type: - - array - - "null" - items: - type: - - string - - "null" - style_welcome_cover_corner_radius: - type: - - string - - "null" - style_welcome_cta_border_color: - type: - - string - - "null" - style_welcome_cta_fill_color: - type: - - string - - "null" - style_widget_background_color: - type: - - array - - "null" - items: - type: - - string - - "null" - style_widget_border_color: - type: - - array - - "null" - items: - type: - - string - - "null" - style_widget_border_radius: - type: - - array - - "null" - items: - type: - - string - - "null" - style_widget_icon_color: - type: - - array - - "null" - items: - type: - - string - - "null" - style_widget_offset_x: - type: - - array - - "null" - items: - type: - - string - - "null" - style_widget_offset_y: - type: - - array - - "null" - items: - type: - - string - - "null" - style_widget_text_color: - type: - - array - - "null" - items: - type: - - string - - "null" - survey_alignment: - type: - - string - - "null" - tag_ids: - type: - - array - - "null" - template_id: - type: - - string - - "null" - time_on_page_amount: - type: - - number - - "null" - time_on_page_behavior: - type: - - string - - "null" - timed_dismiss: - type: - - boolean - - "null" - title: - type: - - string - - "null" - title_recent: - type: - - string - - "null" - to: - type: - - string - - "null" - tooltip_id: + tag_ids: + type: + - array + - "null" + updated_at: + type: string + required: + - id + - updated_at + survey_responses: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + button_id: + type: + - string + - "null" + button_order: + type: + - number + - "null" + button_text: + type: + - string + - "null" + comment_step_buttons_selected: + type: + - array + - "null" + comment_step_buttons_selected2: + type: + - array + - "null" + comment_step_dropdown_items: + type: + - array + - "null" + comment_step_dropdown_items2: + type: + - array + - "null" + comment_step_input_text: + type: + - string + - "null" + created_at: + type: + - string + - "null" + dropdown_items: + type: + - array + - "null" + finished_at: + type: + - string + - "null" + href: + type: + - string + - "null" + id: + type: string + input_text: + type: + - string + - "null" + profile: + type: + - object + - "null" + properties: + created_at: type: - string - "null" - tour_link_first_step: - type: - - boolean - - "null" - translations: - type: - - object - - "null" - trigger: + id: type: - string - "null" - trigger_additional_element: - type: - - object - - "null" - trigger_element: + options: type: - object - "null" properties: - id: + account_type: type: - string - "null" - kind: + active_connections: type: - - string - - "null" - list_id: - type: - - string + - number - "null" - use: + chameleon_launchers_started: type: - array - "null" - trigger_placement: - type: - - string - - "null" - trigger_position: - type: - - string - - "null" - trigger_secondary_element: - type: - - object - - "null" - properties: - attr_class: + items: + type: + - string + - "null" + clearbit_company_category_industry: type: - string - "null" - id: + clearbit_company_category_industry_group: type: - string - "null" - kind: + clearbit_company_category_naics_code: type: - - string + - number - "null" - path: + clearbit_company_category_sector: type: - string - "null" - selector: + clearbit_company_category_sic_code: + type: + - number + - "null" + clearbit_company_category_sub_industry: type: - string - "null" - step_id: + clearbit_company_crunchbase_handle: type: - string - "null" - tag: + clearbit_company_description: type: - string - "null" - text: + clearbit_company_domain: type: - string - "null" - use: + clearbit_company_domain_aliases: type: - array - "null" @@ -2201,487 +1792,577 @@ schemas: type: - string - "null" - trigger_secondary_type: - type: - - string - - "null" - trigger_text: - type: - - string - - "null" - trigger_type: - type: - - string - - "null" - updated_any_at: - type: - - string - - "null" - updated_at: - type: - - string - - "null" - url_group_ids: - type: - - array - - "null" - url_match_all: - type: - - boolean - - "null" - url_match_type: - type: - - string - - "null" - user_id: - type: - - string - - "null" - welcome_capture_id: - type: - - string - - "null" - welcome_cover_full_width: - type: - - boolean - - "null" - welcome_css_syntax_errors: - type: - - array - - "null" - welcome_cta_position: - type: - - string - - "null" - welcome_embed_height: - type: - - number - - "null" - welcome_embed_width: - type: - - number - - "null" - welcome_media_position: - type: - - string - - "null" - welcome_state: - type: - - boolean - - "null" - widget_attachment_size: - type: - - array - - "null" - items: - type: - - string - - "null" - widget_css_syntax_errors: - type: - - array - - "null" - widget_icon_uid: - type: - - array - - "null" - items: - type: - - string - - "null" - widget_position: - type: - - array - - "null" - items: - type: - - string - - "null" - widget_screen_position: - type: - - array - - "null" - items: - type: - - string - - "null" - widget_text: - type: - - array - - "null" - items: - type: - - string - - "null" - width_with_units: - type: - - string - - "null" - options: - type: - - object - - "null" - path: - type: - - string - - "null" - user: - type: - - object - - "null" - properties: - created_at: - type: - - string - - "null" - email: - type: - - string - - "null" - id: - type: - - string - - "null" - updated_at: - type: - - string - - "null" - required: - - id - launchers: - type: object - $schema: http://json-schema.org/schema# - additionalProperties: true - properties: - created_at: - type: - - string - - "null" - excluded_segment_ids: - type: - - array - - "null" - icon_size: - type: - - string - - "null" - id: - type: string - items: - type: - - array - - "null" - items: - type: - - object - - "null" - properties: - description: - type: - - string - - "null" - created_at: - type: - - string - - "null" - hide: - type: - - boolean - - "null" - id: - type: - - string - - "null" - kind: - type: - - string - - "null" - title: - type: - - string - - "null" - list_type: - type: - - string - - "null" - name: - type: - - string - - "null" - position_type: - type: - - string - - "null" - quantifier_urls: - type: - - array - - "null" - items: - type: - - object - - "null" - properties: - id: - type: - - string - - "null" - match_type: - type: - - string - - "null" - url: - type: - - string - - "null" - screen_position: - type: - - string - - "null" - segment_ids: - type: - - array - - "null" - segments_op: - type: - - string - - "null" - stats: - type: - - object - - "null" - properties: - displayed_count: - type: - - number - - "null" - started_count: - type: - - number - - "null" - tag_ids: - type: - - array - - "null" - title: - type: - - string - - "null" - trigger: - type: - - string - - "null" - trigger_text: - type: - - string - - "null" - trigger_type: - type: - - string - - "null" - updated_at: - type: string - required: - - id - - updated_at - tooltips: - type: object - $schema: http://json-schema.org/schema# - additionalProperties: true - properties: - created_at: - type: - - string - - "null" - id: - type: string - name: - type: - - string - - "null" - position: - type: - - number - - "null" - published_at: - type: - - string - - "null" - tag_ids: - type: - - array - - "null" - updated_at: - type: string - required: - - id - - updated_at - tours: - type: object - $schema: http://json-schema.org/schema# - additionalProperties: true - properties: - created_at: - type: - - string - - "null" - excluded_segment_ids: - type: - - array - - "null" - experiment_range: - type: - - string - - "null" - id: - type: string - name: - type: - - string - - "null" - position: - type: - - number - - "null" - segment_ids: - type: - - array - - "null" - segments_op: - type: - - string - - "null" - stats: - type: - - object - - "null" - properties: - completed_count: - type: - - number - - "null" - exited_count: + clearbit_company_email_provider: + type: + - boolean + - "null" + clearbit_company_facebook_handle: + type: + - string + - "null" + clearbit_company_founded_year: + type: + - number + - "null" + clearbit_company_geo_city: + type: + - string + - "null" + clearbit_company_geo_country: + type: + - string + - "null" + clearbit_company_geo_country_code: + type: + - string + - "null" + clearbit_company_geo_lat: + type: + - number + - "null" + clearbit_company_geo_lng: + type: + - number + - "null" + clearbit_company_geo_postal_code: + type: + - number + - string + - "null" + clearbit_company_geo_state: + type: + - string + - "null" + clearbit_company_geo_state_code: + type: + - string + - "null" + clearbit_company_geo_street_name: + type: + - string + - "null" + clearbit_company_geo_street_number: + type: + - number + - string + - "null" + clearbit_company_indexed_at: + type: + - string + - "null" + clearbit_company_legal_name: + type: + - string + - "null" + clearbit_company_linkedin_handle: + type: + - string + - "null" + clearbit_company_location: + type: + - string + - "null" + clearbit_company_logo: + type: + - string + - "null" + clearbit_company_metrics_alexa_global_rank: + type: + - number + - "null" + clearbit_company_metrics_alexa_us_rank: + type: + - number + - "null" + clearbit_company_metrics_employees: + type: + - number + - "null" + clearbit_company_metrics_employees_range: + type: + - string + - "null" + clearbit_company_metrics_estimated_annual_revenue: + type: + - string + - "null" + clearbit_company_metrics_raised: + type: + - number + - "null" + clearbit_company_name: + type: + - string + - "null" + clearbit_company_phone: + type: + - string + - "null" + clearbit_company_site_email_addresses: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_company_site_phone_numbers: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_company_tags: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_company_tech: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_company_time_zone: + type: + - string + - "null" + clearbit_company_twitter_followers: + type: + - number + - "null" + clearbit_company_twitter_following: + type: + - number + - "null" + clearbit_company_twitter_handle: + type: + - string + - "null" + clearbit_company_type: + type: + - string + - "null" + clearbit_company_utc_offset: + type: + - number + - "null" + clearbit_person_employment_domain: + type: + - string + - "null" + clearbit_person_employment_name: + type: + - string + - "null" + clearbit_person_employment_role: + type: + - string + - "null" + clearbit_person_employment_seniority: + type: + - string + - "null" + clearbit_person_employment_title: + type: + - string + - "null" + clearbit_person_fuzzy: + type: + - boolean + - "null" + clearbit_person_geo_city: + type: + - string + - "null" + clearbit_person_geo_country: + type: + - string + - "null" + clearbit_person_geo_country_code: + type: + - string + - "null" + clearbit_person_geo_lat: + type: + - number + - "null" + clearbit_person_geo_lng: + type: + - number + - "null" + clearbit_person_geo_state: + type: + - string + - "null" + clearbit_person_geo_state_code: + type: + - string + - "null" + clearbit_person_indexed_at: + type: + - string + - "null" + clearbit_person_linkedin_handle: + type: + - string + - "null" + clearbit_person_location: + type: + - string + - "null" + clearbit_person_name_family_name: + type: + - string + - "null" + clearbit_person_name_full_name: + type: + - string + - "null" + clearbit_person_name_given_name: + type: + - string + - "null" + clearbit_person_time_zone: + type: + - string + - "null" + clearbit_person_utc_offset: + type: + - number + - "null" + clearbit_reveal_company_category_industry: + type: + - string + - "null" + clearbit_reveal_company_category_industry_group: + type: + - string + - "null" + clearbit_reveal_company_category_naics_code: + type: + - number + - "null" + clearbit_reveal_company_category_sector: + type: + - string + - "null" + clearbit_reveal_company_category_sic_code: + type: + - number + - "null" + clearbit_reveal_company_category_sub_industry: + type: + - string + - "null" + clearbit_reveal_company_crunchbase_handle: + type: + - string + - "null" + clearbit_reveal_company_description: + type: + - string + - "null" + clearbit_reveal_company_domain: + type: + - string + - "null" + clearbit_reveal_company_domain_aliases: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_reveal_company_email_provider: + type: + - boolean + - "null" + clearbit_reveal_company_facebook_handle: + type: + - string + - "null" + clearbit_reveal_company_founded_year: + type: + - number + - "null" + clearbit_reveal_company_geo_city: + type: + - string + - "null" + clearbit_reveal_company_geo_country: + type: + - string + - "null" + clearbit_reveal_company_geo_country_code: + type: + - string + - "null" + clearbit_reveal_company_geo_lat: + type: + - number + - "null" + clearbit_reveal_company_geo_lng: + type: + - number + - "null" + clearbit_reveal_company_geo_postal_code: + type: + - number + - string + - "null" + clearbit_reveal_company_geo_state: + type: + - string + - "null" + clearbit_reveal_company_geo_state_code: + type: + - string + - "null" + clearbit_reveal_company_geo_street_name: + type: + - string + - "null" + clearbit_reveal_company_geo_street_number: + type: + - number + - string + - "null" + clearbit_reveal_company_geo_sub_premise: + type: + - string + - "null" + clearbit_reveal_company_indexed_at: + type: + - string + - "null" + clearbit_reveal_company_legal_name: + type: + - string + - "null" + clearbit_reveal_company_linkedin_handle: + type: + - string + - "null" + clearbit_reveal_company_location: + type: + - string + - "null" + clearbit_reveal_company_logo: + type: + - string + - "null" + clearbit_reveal_company_metrics_alexa_global_rank: + type: + - number + - "null" + clearbit_reveal_company_metrics_alexa_us_rank: + type: + - number + - "null" + clearbit_reveal_company_metrics_annual_revenue: + type: + - number + - "null" + clearbit_reveal_company_metrics_employees: + type: + - number + - "null" + clearbit_reveal_company_metrics_employees_range: + type: + - string + - "null" + clearbit_reveal_company_metrics_estimated_annual_revenue: + type: + - string + - "null" + clearbit_reveal_company_metrics_raised: + type: + - number + - "null" + clearbit_reveal_company_name: + type: + - string + - "null" + clearbit_reveal_company_phone: + type: + - string + - "null" + clearbit_reveal_company_site_email_addresses: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_reveal_company_site_phone_numbers: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_reveal_company_tags: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_reveal_company_tech: + type: + - array + - "null" + items: + type: + - string + - "null" + clearbit_reveal_company_time_zone: + type: + - string + - "null" + clearbit_reveal_company_twitter_followers: + type: + - number + - "null" + clearbit_reveal_company_twitter_following: + type: + - number + - "null" + clearbit_reveal_company_twitter_handle: + type: + - string + - "null" + clearbit_reveal_company_type: + type: + - string + - "null" + clearbit_reveal_company_utc_offset: + type: + - number + - "null" + clearbit_reveal_confidence_score: + type: + - string + - "null" + clearbit_reveal_fuzzy: + type: + - boolean + - "null" + clearbit_reveal_geo_ip_city: + type: + - string + - "null" + clearbit_reveal_geo_ip_country: + type: + - string + - "null" + clearbit_reveal_geo_ip_country_code: + type: + - string + - "null" + clearbit_reveal_geo_ip_state: + type: + - string + - "null" + clearbit_reveal_geo_ip_state_code: + type: + - string + - "null" + clearbit_reveal_role: + type: + - string + - "null" + clearbit_reveal_seniority: + type: + - string + - "null" + current_workspace_id: + type: + - string + - "null" + days_since_customer: + type: + - number + - "null" + email: + type: + - string + - "null" + first_close_date: + type: + - string + - "null" + first_sync_success: + type: + - string + - "null" + icp_score_category: + type: + - string + - "null" + is_corporate: + type: + - boolean + - "null" + provider: + type: + - string + - "null" + providers: + type: + - array + - "null" + items: + type: + - string + - "null" + salesforce_contact: + type: + - object + - "null" + properties: + email: + type: + - string + - "null" + trial_end_date: + type: + - string + - "null" + workspace_id: + type: + - string + - "null" + uid: type: - - number + - string - "null" - started_count: + updated_at: type: - - number + - string - "null" - style: - type: - - string - - "null" - tag_ids: - type: - - array - - "null" - updated_at: - type: string - required: - - id - - updated_at - surveys: - type: object - $schema: http://json-schema.org/schema# - additionalProperties: true - properties: - created_at: - type: - - string - - "null" - excluded_segment_ids: - type: - - array - - "null" - id: - type: string - last_dropdown_items: - type: - - array - - "null" - name: + profile_id: type: - string - "null" - position: - type: - - number - - "null" - published_at: - type: - - string - - "null" - segment_id: - type: - - string - - "null" - segment_ids: - type: - - array - - "null" - items: - type: - - string - - "null" - segments_op: + survey_id: type: - string - "null" - stats: - type: - - object - - "null" - properties: - completed_count: - type: - - number - - "null" - exited_count: - type: - - number - - "null" - started_count: - type: - - number - - "null" - tag_ids: - type: - - array - - "null" updated_at: type: string required: - id - updated_at - survey_responses: - type: object - $schema: http://json-schema.org/draft-07/schema# - required: - - id - properties: - id: - type: string - href: - type: string - button_text: - type: string - button_order: - type: integer - input_text: - type: string - finished_at: - type: string - profile: - type: object - properties: - id: - type: string - uid: - type: string - company: - type: object - properties: - id: - type: string - uid: - type: string diff --git a/airbyte-integrations/connectors/source-chameleon/metadata.yaml b/airbyte-integrations/connectors/source-chameleon/metadata.yaml index 0f72109581c22..22ffd41de391b 100644 --- a/airbyte-integrations/connectors/source-chameleon/metadata.yaml +++ b/airbyte-integrations/connectors/source-chameleon/metadata.yaml @@ -17,7 +17,7 @@ data: connectorSubtype: api connectorType: source definitionId: 64a0240a-81a4-4e40-8002-e063b17cfbbe - dockerImageTag: 0.0.2 + dockerImageTag: 0.1.0 dockerRepository: airbyte/source-chameleon githubIssueLabel: source-chameleon icon: icon.svg diff --git a/docs/integrations/sources/chameleon.md b/docs/integrations/sources/chameleon.md index 067c4f36ca5f8..e132b1187074d 100644 --- a/docs/integrations/sources/chameleon.md +++ b/docs/integrations/sources/chameleon.md @@ -26,7 +26,7 @@ Refer `https://app.chameleon.io/settings/tokens` for getting your API key. | segments | id | No pagination | ✅ | ✅ | | urls | id | No pagination | ✅ | ✅ | | url_groups | id | No pagination | ✅ | ✅ | -| changes | id | No pagination | ✅ | ❌ | +| changes | id | No pagination | ✅ | ✅ | | launchers | id | No pagination | ✅ | ✅ | | tooltips | id | No pagination | ✅ | ✅ | | tours | id | No pagination | ✅ | ✅ | @@ -38,9 +38,10 @@ Refer `https://app.chameleon.io/settings/tokens` for getting your API key.
Expand to review -| Version | Date | Pull Request | Subject | -| ------------------ | ------------ | --- | ---------------- | -| 0.0.2 | 2024-09-21 | [45708](https://github.com/airbytehq/airbyte/pull/45708) | Make end date optional | -| 0.0.1 | 2024-09-18 | [45658](https://github.com/airbytehq/airbyte/pull/45658) | Initial release by [@btkcodedev](https://github.com/btkcodedev) via Connector Builder | +| Version | Date | Pull Request | Subject | +|------------------|------------|--------------|----------------| +| 0.1.0 | 2024-09-29 |[46248](https://github.com/airbytehq/airbyte/pull/46248)| Fix survey_responses stream schema and icon | +| 0.0.2 | 2024-09-21 |[45708](https://github.com/airbytehq/airbyte/pull/45708)| Make end date optional | +| 0.0.1 | 2024-09-18 |[45658](https://github.com/airbytehq/airbyte/pull/45658)| Initial release by [@btkcodedev](https://github.com/btkcodedev) via Connector Builder|
\ No newline at end of file From 050deba30394a84229f76565f5a3ff2ed8b0e869 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:59:01 -0700 Subject: [PATCH 034/379] chore(deps): bump express from 4.19.2 to 4.21.0 in /docusaurus (#46365) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docusaurus/pnpm-lock.yaml | 164 ++++++++++++++++++++++++++++---------- 1 file changed, 120 insertions(+), 44 deletions(-) diff --git a/docusaurus/pnpm-lock.yaml b/docusaurus/pnpm-lock.yaml index fb4d02b94f277..660d5946e4c8e 100644 --- a/docusaurus/pnpm-lock.yaml +++ b/docusaurus/pnpm-lock.yaml @@ -2056,8 +2056,8 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} bonjour-service@1.2.0: @@ -2108,6 +2108,10 @@ packages: call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} @@ -2738,6 +2742,10 @@ packages: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -2874,6 +2882,10 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} @@ -2888,6 +2900,14 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} @@ -2984,8 +3004,8 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + express@4.21.0: + resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} engines: {node: '>= 0.10.0'} extend-shallow@2.0.1: @@ -3040,8 +3060,8 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} find-cache-dir@4.0.0: @@ -3142,6 +3162,10 @@ packages: get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -3226,6 +3250,9 @@ packages: has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} @@ -3874,8 +3901,8 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4355,8 +4382,8 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} path-to-regexp@1.8.0: resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} @@ -4879,8 +4906,8 @@ packages: resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} engines: {node: '>=12.20'} - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} queue-microtask@1.2.3: @@ -5206,8 +5233,8 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} serialize-javascript@6.0.1: @@ -5220,14 +5247,18 @@ packages: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} @@ -5257,8 +5288,9 @@ packages: engines: {node: '>=4'} hasBin: true - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -8366,7 +8398,7 @@ snapshots: binary-extensions@2.2.0: {} - body-parser@1.20.2: + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -8376,7 +8408,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -8452,6 +8484,14 @@ snapshots: get-intrinsic: 1.2.2 set-function-length: 1.1.1 + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + call-me-maybe@1.0.2: {} callsites@3.1.0: {} @@ -9137,6 +9177,12 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.1 + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + define-lazy-prop@2.0.0: {} define-properties@1.2.1: @@ -9275,6 +9321,8 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + enhanced-resolve@5.15.0: dependencies: graceful-fs: 4.2.11 @@ -9288,6 +9336,12 @@ snapshots: dependencies: is-arrayish: 0.2.1 + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + es-module-lexer@1.4.1: {} escalade@3.1.1: {} @@ -9377,34 +9431,34 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - express@4.19.2: + express@4.21.0: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -9468,10 +9522,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.2.0: + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -9568,6 +9622,14 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.0 + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + get-own-enumerable-property-symbols@3.0.2: {} get-stream@6.0.1: {} @@ -9669,6 +9731,10 @@ snapshots: dependencies: get-intrinsic: 1.2.2 + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + has-proto@1.0.1: {} has-symbols@1.0.3: {} @@ -10471,7 +10537,7 @@ snapshots: dependencies: fs-monkey: 1.0.5 - merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -11174,7 +11240,7 @@ snapshots: path-parse@1.0.7: {} - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.10: {} path-to-regexp@1.8.0: dependencies: @@ -11658,9 +11724,9 @@ snapshots: dependencies: escape-goat: 4.0.0 - qs@6.11.0: + qs@6.13.0: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 queue-microtask@1.2.3: {} @@ -12114,7 +12180,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - send@0.18.0: + send@0.19.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -12159,12 +12225,12 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.15.0: + serve-static@1.16.2: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 transitivePeerDependencies: - supports-color @@ -12175,6 +12241,15 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.1 + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + setprototypeof@1.1.0: {} setprototypeof@1.2.0: {} @@ -12199,10 +12274,11 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - side-channel@1.0.4: + side-channel@1.0.6: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 signal-exit@3.0.7: {} @@ -12710,7 +12786,7 @@ snapshots: compression: 1.7.4 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.19.2 + express: 4.21.0 graceful-fs: 4.2.11 html-entities: 2.4.0 http-proxy-middleware: 2.0.6(@types/express@4.17.21) @@ -12750,7 +12826,7 @@ snapshots: compression: 1.7.4 connect-history-api-fallback: 1.6.0 default-gateway: 6.0.3 - express: 4.19.2 + express: 4.21.0 graceful-fs: 4.2.11 html-entities: 2.4.0 http-proxy-middleware: 2.0.6(@types/express@4.17.21) From 5090fac85aa755f70b3b7ddcebf44c18be9b92a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:59:15 -0700 Subject: [PATCH 035/379] chore(deps): bump ws from 7.5.9 to 7.5.10 in /docusaurus (#46388) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Natik Gadzhi --- docusaurus/pnpm-lock.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docusaurus/pnpm-lock.yaml b/docusaurus/pnpm-lock.yaml index 660d5946e4c8e..33e2fc1e3621d 100644 --- a/docusaurus/pnpm-lock.yaml +++ b/docusaurus/pnpm-lock.yaml @@ -5830,8 +5830,8 @@ packages: write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12756,7 +12756,7 @@ snapshots: opener: 1.5.2 picocolors: 1.0.0 sirv: 2.0.4 - ws: 7.5.9 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -12932,7 +12932,7 @@ snapshots: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - ws@7.5.9: {} + ws@7.5.10: {} ws@8.16.0: {} From 948475e5f8d1913cad6ec1dd85201695c8cd6f46 Mon Sep 17 00:00:00 2001 From: btkcodedev Date: Sat, 5 Oct 2024 10:43:29 +0530 Subject: [PATCH 036/379] Source Onesignal: Migrate to manifest-only (#46372) Co-authored-by: Octavia Squidington III --- .../connectors/source-onesignal/README.md | 92 +- .../connectors/source-onesignal/__init__.py | 3 - .../acceptance-test-config.yml | 15 +- .../connectors/source-onesignal/main.py | 8 - .../connectors/source-onesignal/manifest.yaml | 1079 ++++++++++++ .../connectors/source-onesignal/metadata.yaml | 8 +- .../connectors/source-onesignal/poetry.lock | 1451 ----------------- .../source-onesignal/pyproject.toml | 29 - .../source_onesignal/__init__.py | 8 - .../source_onesignal/manifest.yaml | 142 -- .../source-onesignal/source_onesignal/run.py | 14 - .../source_onesignal/schemas/apps.json | 102 -- .../source_onesignal/schemas/devices.json | 71 - .../schemas/notifications.json | 397 ----- .../source_onesignal/schemas/outcomes.json | 16 - .../source_onesignal/source.py | 18 - .../source_onesignal/spec.yaml | 69 - docs/integrations/sources/onesignal.md | 1 + 18 files changed, 1119 insertions(+), 2404 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-onesignal/__init__.py delete mode 100644 airbyte-integrations/connectors/source-onesignal/main.py create mode 100644 airbyte-integrations/connectors/source-onesignal/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-onesignal/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-onesignal/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/__init__.py delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/run.py delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/apps.json delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/devices.json delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/notifications.json delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/outcomes.json delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/source.py delete mode 100644 airbyte-integrations/connectors/source-onesignal/source_onesignal/spec.yaml diff --git a/airbyte-integrations/connectors/source-onesignal/README.md b/airbyte-integrations/connectors/source-onesignal/README.md index cc2135b436a45..75f7cf4641f4d 100644 --- a/airbyte-integrations/connectors/source-onesignal/README.md +++ b/airbyte-integrations/connectors/source-onesignal/README.md @@ -1,49 +1,22 @@ -# Onesignal Source +# Onesignal source connector -This is the repository for the Onesignal configuration based source connector. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/onesignal). +This directory contains the manifest-only connector for `source-onesignal`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -## Local development - -### Prerequisites - -- Python (~=3.9) -- Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) - -### Installing the connector - -From this connector directory, run: - -```bash -poetry install --with dev -``` - -### Create credentials +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/onesignal). -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/onesignal) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_onesignal/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - -### Locally running the connector - -``` -poetry run source-onesignal spec -poetry run source-onesignal check --config secrets/config.json -poetry run source-onesignal discover --config secrets/config.json -poetry run source-onesignal read --config secrets/config.json --catalog integration_tests/configured_catalog.json -``` +## Local development -### Running unit tests +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! -To run unit tests locally, from the connector directory run: - -``` -poetry run pytest unit_tests -``` +If you prefer to develop locally, you can follow the instructions below. ### Building the docker image +You can build any manifest-only connector with `airbyte-ci`: + 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: @@ -53,18 +26,24 @@ airbyte-ci connectors --name=source-onesignal build An image will be available on your host with the tag `airbyte/source-onesignal:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/onesignal) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. + ### Running as a docker container -Then run any of the connector commands as follows: +Then run any of the standard source connector commands: -``` +```bash docker run --rm airbyte/source-onesignal:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-onesignal:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-onesignal:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-onesignal:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite +### Running the CI test suite You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): @@ -72,30 +51,15 @@ You can run our full test suite locally using [`airbyte-ci`](https://github.com/ airbyte-ci connectors --name=source-onesignal test ``` -### Customizing acceptance Tests - -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. - -### Dependency Management - -All of your dependencies should be managed via Poetry. -To add a new dependency, run: - -```bash -poetry add -``` - -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - -### Publishing a new version of the connector - -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? +## Publishing a new version of the connector -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-onesignal test` -2. Bump the connector version in `metadata.yaml`: increment the `dockerImageTag` value. Please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors). -3. Make sure the `metadata.yaml` content is up to date. -4. Make the connector documentation and its changelog is up to date (`docs/integrations/sources/onesignal.md`). +If you want to contribute changes to `source-onesignal`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-onesignal test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + - bump the `dockerImageTag` value in in `metadata.yaml` +4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/onesignal.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. 7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master. +8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry. \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-onesignal/__init__.py b/airbyte-integrations/connectors/source-onesignal/__init__.py deleted file mode 100644 index c941b30457953..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-onesignal/acceptance-test-config.yml b/airbyte-integrations/connectors/source-onesignal/acceptance-test-config.yml index b980dc9db0b05..1d0a3267b5d34 100644 --- a/airbyte-integrations/connectors/source-onesignal/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-onesignal/acceptance-test-config.yml @@ -2,7 +2,7 @@ connector_image: airbyte/source-onesignal:dev acceptance_tests: spec: tests: - - spec_path: "source_onesignal/spec.yaml" + - spec_path: "manifest.yaml" connection: tests: - config_path: "secrets/config.json" @@ -27,13 +27,12 @@ acceptance_tests: path: "integration_tests/expected_records.jsonl" exact_order: no fail_on_extra_columns: false - # TODO: enable incremental test after seeding the connector - # incremental: - # tests: - # - config_path: "secrets/config.json" - # configured_catalog_path: "integration_tests/configured_catalog.json" - # future_state: - # future_state_path: "integration_tests/abnormal_state.json" + incremental: + tests: + - config_path: "secrets/config.json" + configured_catalog_path: "integration_tests/configured_catalog.json" + future_state: + future_state_path: "integration_tests/abnormal_state.json" full_refresh: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-onesignal/main.py b/airbyte-integrations/connectors/source-onesignal/main.py deleted file mode 100644 index e735cf13bacbf..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_onesignal.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-onesignal/manifest.yaml b/airbyte-integrations/connectors/source-onesignal/manifest.yaml new file mode 100644 index 0000000000000..9772fd3c167fc --- /dev/null +++ b/airbyte-integrations/connectors/source-onesignal/manifest.yaml @@ -0,0 +1,1079 @@ +version: 5.10.2 + +type: DeclarativeSource + +description: >- + API Docs: https://documentation.onesignal.com/reference/quick-start-api-guide + + Auth Docs: + https://documentation.onesignal.com/reference/quick-start-api-guide#rest-api-key + + API Keys: https://dashboard.onesignal.com/profile + +check: + type: CheckStream + stream_names: + - apps + +definitions: + streams: + apps: + type: DeclarativeStream + name: apps + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: apps + http_method: GET + request_headers: + Authorization: Basic {{ config["user_auth_key"] }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/apps" + devices: + type: DeclarativeStream + name: devices + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: players + http_method: GET + request_parameters: + app_id: "{{ config['applications'][0]['app_id'] }}" + request_headers: + Authorization: Basic {{ config['applications'][0]['app_api_key'] }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - players + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 5 + inject_on_first_request: false + incremental_sync: + type: DatetimeBasedCursor + cursor_field: last_active + cursor_datetime_formats: + - "%s" + datetime_format: "%s" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/devices" + notifications: + type: DeclarativeStream + name: notifications + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: notifications + http_method: GET + request_parameters: + app_id: "{{ config['applications'][0]['app_id'] }}" + request_headers: + Authorization: Basic {{ config['applications'][0]['app_api_key'] }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - notifications + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 5 + inject_on_first_request: false + incremental_sync: + type: DatetimeBasedCursor + cursor_field: queued_at + cursor_datetime_formats: + - "%s" + datetime_format: "%s" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/notifications" + outcomes: + type: DeclarativeStream + name: outcomes + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: apps/{{ config['applications'][0]['app_id'] }}/outcomes + http_method: GET + request_parameters: + app_id: "{{ config['applications'][0]['app_id'] }}" + outcome_names: "{{ config[\"outcome_names\"] }}" + request_headers: + Authorization: Basic {{ config['applications'][0]['app_api_key'] }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + - type: DefaultErrorHandler + max_retries: 3 + response_filters: + - type: HttpResponseFilter + action: SUCCESS + http_codes: + - 400 + error_message: >- + Plan is not supported, please get a premium plan for + accessing stream + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - outcomes + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 5 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/outcomes" + base_requester: + type: HttpRequester + url_base: https://onesignal.com/api/v1/ + +streams: + - $ref: "#/definitions/streams/apps" + - $ref: "#/definitions/streams/devices" + - $ref: "#/definitions/streams/notifications" + - $ref: "#/definitions/streams/outcomes" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - user_auth_key + - applications + - start_date + - outcome_names + properties: + user_auth_key: + type: string + description: >- + OneSignal User Auth Key, see the docs + for more information on how to obtain this key. + order: 0 + title: User Auth Key + airbyte_secret: true + applications: + type: array + description: >- + Applications keys, see the docs + for more information on how to obtain this data + items: + type: object + required: + - app_id + - app_api_key + properties: + app_id: + type: string + order: 1 + title: OneSignal App ID + airbyte_secret: true + app_name: + type: string + order: 0 + title: OneSignal App Name + app_api_key: + type: string + order: 2 + title: REST API Key + airbyte_secret: true + order: 1 + title: Applications + start_date: + type: string + description: >- + The date from which you'd like to replicate data for OneSignal API, in + the format YYYY-MM-DDT00:00:00Z. All data generated after this date + will be replicated. + order: 2 + title: Start Date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + examples: + - "2020-11-16T00:00:00Z" + outcome_names: + type: string + description: >- + Comma-separated list of names and the value (sum/count) for the + returned outcome data. See the docs + for more details + order: 3 + title: Outcome Names + examples: + - os__session_duration.count,os__click.count,CustomOutcomeName.sum + additionalProperties: true + +metadata: + autoImportSchema: + apps: false + devices: false + notifications: false + outcomes: false + testedStreams: + apps: + streamHash: a72fc16ba03e9478f6dc527dc13b7f9517c0c2ca + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + devices: + streamHash: f15433b05e88e483b5ed0d9a1163344358db6dbd + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + notifications: + streamHash: f916aacb43ee8811baeea54d9b7950584e59b274 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + outcomes: + hasRecords: false + streamHash: e7734c12d5a9f26487ce4695deb5910d41bc81b1 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: false + assist: {} + +schemas: + apps: + type: object + $schema: https://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + id: + type: + - "null" + - string + name: + type: + - "null" + - string + players: + type: + - "null" + - integer + messageable_players: + type: + - "null" + - integer + updated_at: + type: + - "null" + - string + format: date-time + created_at: + type: + - "null" + - string + format: date-time + gcm_key: + type: + - "null" + - string + chrome_key: + type: + - "null" + - string + chrome_web_key: + type: + - "null" + - string + chrome_web_origin: + type: + - "null" + - string + chrome_web_gcm_sender_id: + type: + - "null" + - string + chrome_web_default_notification_icon: + type: + - "null" + - string + chrome_web_sub_domain: + type: + - "null" + - string + apns_env: + type: + - "null" + - string + apns_certificates: + type: + - "null" + - string + safari_apns_certificate: + type: + - "null" + - string + safari_site_origin: + type: + - "null" + - string + safari_push_id: + type: + - "null" + - string + safari_icon_16_16: + type: + - "null" + - string + safari_icon_32_32: + type: + - "null" + - string + safari_icon_64_64: + type: + - "null" + - string + safari_icon_128_128: + type: + - "null" + - string + safari_icon_256_256: + type: + - "null" + - string + site_name: + type: + - "null" + - string + basic_auth_key: + type: + - "null" + - string + additional_data_is_root_payload: + type: + - "null" + - boolean + apns_key_id: + type: + - "null" + - integer + fcm_v1_service_account_json: + type: + - "null" + - string + apns_p8: + type: + - "null" + - string + apns_bundle_id: + type: + - "null" + - integer + apns_team_id: + type: + - "null" + - integer + devices: + type: object + $schema: https://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + id: + type: string + identifier: + type: + - "null" + - string + session_count: + type: + - "null" + - integer + language: + type: + - "null" + - string + timezone: + type: + - "null" + - integer + game_version: + type: + - "null" + - string + device_os: + type: + - "null" + - string + device_type: + type: + - "null" + - integer + device_model: + type: + - "null" + - string + ad_id: + type: + - "null" + - string + tags: + type: + - "null" + - object + properties: {} + last_active: + type: + - "null" + - integer + amount_spent: + type: + - "null" + - number + created_at: + type: + - "null" + - integer + invalid_identifier: + type: + - "null" + - boolean + badge_count: + type: + - "null" + - integer + playtime: + type: + - "null" + - integer + sdk: + type: + - "null" + - string + test_type: + type: + - "null" + - string + ip: + type: + - "null" + - string + external_user_id: + type: + - "null" + - string + notifications: + type: object + $schema: https://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + adm_big_picture: + type: + - "null" + - string + adm_group: + type: + - "null" + - string + adm_group_message: + type: + - "null" + - object + properties: + en: + type: + - "null" + - string + adm_large_icon: + type: + - "null" + - string + adm_small_icon: + type: + - "null" + - string + adm_sound: + type: + - "null" + - string + spoken_text: + type: + - "null" + - object + properties: {} + alexa_ssml: + type: + - "null" + - string + alexa_display_title: + type: + - "null" + - string + amazon_background_data: + type: + - "null" + - boolean + android_accent_color: + type: + - "null" + - string + android_group: + type: + - "null" + - string + android_group_message: + type: + - "null" + - object + properties: + en: + type: + - "null" + - string + android_led_color: + type: + - "null" + - string + android_sound: + type: + - "null" + - string + android_visibility: + type: + - "null" + - integer + app_id: + type: string + big_picture: + type: + - "null" + - string + buttons: + type: + - "null" + - string + canceled: + type: + - "null" + - boolean + chrome_big_picture: + type: + - "null" + - string + chrome_icon: + type: + - "null" + - string + chrome_web_icon: + type: + - "null" + - string + chrome_web_image: + type: + - "null" + - string + chrome_web_badge: + type: + - "null" + - string + content_available: + type: + - "null" + - boolean + name: + type: + - "null" + - string + contents: + type: + - "null" + - object + properties: + en: + type: + - "null" + - string + converted: + type: + - "null" + - integer + data: + type: + - "null" + - object + properties: {} + delayed_option: + type: + - "null" + - string + delivery_time_of_day: + type: + - "null" + - string + errored: + type: + - "null" + - integer + excluded_segments: + type: + - "null" + - array + items: + type: string + failed: + type: + - "null" + - integer + firefox_icon: + type: + - "null" + - string + global_image: + type: + - "null" + - string + headings: + type: + - "null" + - object + properties: + en: + type: + - "null" + - string + huawei_accent_color: + type: + - "null" + - string + huawei_big_picture: + type: + - "null" + - string + huawei_channel_id: + type: + - "null" + - string + huawei_existing_channel_id: + type: + - "null" + - string + huawei_group: + type: + - "null" + - string + huawei_group_message: + type: + - "null" + - string + huawei_large_icon: + type: + - "null" + - string + huawei_led_color: + type: + - "null" + - string + huawei_msg_type: + type: + - "null" + - string + huawei_small_icon: + type: + - "null" + - string + huawei_sound: + type: + - "null" + - string + huawei_visibility: + type: + - "null" + - string + id: + type: string + include_player_ids: + type: + - "null" + - string + include_external_user_ids: + type: + - "null" + - string + included_segments: + type: array + items: + type: string + thread_id: + type: + - "null" + - string + ios_badgeCount: + type: + - "null" + - integer + ios_badgeType: + type: + - "null" + - string + ios_category: + type: + - "null" + - string + ios_interruption_level: + type: + - "null" + - string + ios_relevance_score: + type: + - "null" + - number + ios_sound: + type: + - "null" + - string + apns_alert: + type: + - "null" + - object + properties: {} + target_content_identifier: + type: + - "null" + - string + isAdm: + type: + - "null" + - boolean + isAndroid: + type: + - "null" + - boolean + isChrome: + type: + - "null" + - boolean + isChromeWeb: + type: + - "null" + - boolean + isAlexa: + type: + - "null" + - boolean + isFirefox: + type: + - "null" + - boolean + isIos: + type: + - "null" + - boolean + isSafari: + type: + - "null" + - boolean + isWP: + type: + - "null" + - boolean + isWP_WNS: + type: + - "null" + - boolean + isEdge: + type: + - "null" + - boolean + isHuawei: + type: + - "null" + - boolean + isSMS: + type: + - "null" + - boolean + large_icon: + type: + - "null" + - string + priority: + type: + - "null" + - integer + queued_at: + type: integer + remaining: + type: + - "null" + - integer + send_after: + type: + - "null" + - integer + completed_at: + type: + - "null" + - integer + small_icon: + type: + - "null" + - string + successful: + type: + - "null" + - integer + received: + type: + - "null" + - integer + tags: + type: + - "null" + - object + properties: {} + filters: + type: + - "null" + - string + template_id: + type: + - "null" + - string + ttl: + type: + - "null" + - integer + url: + type: + - "null" + - string + web_url: + type: + - "null" + - string + app_url: + type: + - "null" + - string + web_buttons: + type: + - "null" + - string + web_push_topic: + type: + - "null" + - string + wp_sound: + type: + - "null" + - string + wp_wns_sound: + type: + - "null" + - string + platform_delivery_stats: + type: object + properties: + android: + type: + - "null" + - object + properties: + successful: + type: integer + errored: + type: integer + failed: + type: integer + converted: + type: integer + received: + type: integer + ios: + type: + - "null" + - object + properties: + successful: + type: integer + errored: + type: integer + failed: + type: integer + converted: + type: integer + received: + type: integer + ios_attachments: + type: + - "null" + - object + properties: + id: + type: + - "null" + - string + throttle_rate_per_minute: + type: + - "null" + - integer + sms_from: + type: + - "null" + - string + sms_media_urls: + type: + - "null" + - string + email_click_tracking_disabled: + type: + - "null" + - boolean + fcap_group_ids: + type: + - "null" + - string + fcap_status: + type: + - "null" + - string + outcomes: + type: object + $schema: https://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + id: + type: string + value: + type: integer + aggregation: + type: string diff --git a/airbyte-integrations/connectors/source-onesignal/metadata.yaml b/airbyte-integrations/connectors/source-onesignal/metadata.yaml index 6fd28ac34ed32..3c7df552c62e0 100644 --- a/airbyte-integrations/connectors/source-onesignal/metadata.yaml +++ b/airbyte-integrations/connectors/source-onesignal/metadata.yaml @@ -3,7 +3,7 @@ data: hosts: - onesignal.com connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a connectorSubtype: api connectorTestSuitesOptions: - suite: liveTests @@ -19,7 +19,7 @@ data: type: GSM connectorType: source definitionId: bb6afd81-87d5-47e3-97c4-e2c2901b1cf8 - dockerImageTag: 1.1.14 + dockerImageTag: 1.2.0 dockerRepository: airbyte/source-onesignal documentationUrl: https://docs.airbyte.com/integrations/sources/onesignal githubIssueLabel: source-onesignal @@ -35,10 +35,10 @@ data: releaseStage: alpha remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-onesignal supportLevel: community tags: - - language:python - cdk:low-code + - language:manifest-only metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-onesignal/poetry.lock b/airbyte-integrations/connectors/source-onesignal/poetry.lock deleted file mode 100644 index 502bdf0bf9845..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/poetry.lock +++ /dev/null @@ -1,1451 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "1.8.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-1.8.0-py3-none-any.whl", hash = "sha256:ca23d7877005fe87ffc4a3a3de29ee55eed625d874eb59b49664b156f9ae9ee2"}, - {file = "airbyte_cdk-1.8.0.tar.gz", hash = "sha256:ac82fbfd6b650b7ed015900748e30fdd2a4c574caa54d1bcc03cb584a17f1533"}, -] - -[package.dependencies] -airbyte-protocol-models = ">=0.9.0,<1.0" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.1.6,<3.0.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.13.0" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.13.0-py3-none-any.whl", hash = "sha256:fa8b7e1a85f9ae171c50b30d23b317da1740d051994fd3ed648f9dfba00250e2"}, - {file = "airbyte_protocol_models-0.13.0.tar.gz", hash = "sha256:09d8900ba8674a9315fa1799d17026f6b38d2187c08160449540ee93331ed2e7"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.8" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.2.0" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.2.0-py3-none-any.whl", hash = "sha256:b330a375ded0a0d2ed404440f6c6a715deae5313af40bbb01c8a41d891900576"}, - {file = "dpath-2.2.0.tar.gz", hash = "sha256:34f7e630dc55ea3f219e555726f5da4b4b25f2200319c8e6902c394258dd6a3e"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "freezegun" -version = "1.5.1" -description = "Let your Python tests travel through time" -optional = false -python-versions = ">=3.7" -files = [ - {file = "freezegun-1.5.1-py3-none-any.whl", hash = "sha256:bf111d7138a8abe55ab48a71755673dbaa4ab87f4cff5634a4442dfec34c15f1"}, - {file = "freezegun-1.5.1.tar.gz", hash = "sha256:b29dedfcda6d5e8e083ce71b2b542753ad48cfec44037b3fc79702e2980a89e9"}, -] - -[package.dependencies] -python-dateutil = ">=2.7" - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.5" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.129" -description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} -requests = ">=2,<3" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "orjson" -version = "3.10.7" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "8.3.3" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "be36c0d517039957c3be9a6e11c78ba031a902b2160f8c64141abfee3d2f2e30" diff --git a/airbyte-integrations/connectors/source-onesignal/pyproject.toml b/airbyte-integrations/connectors/source-onesignal/pyproject.toml deleted file mode 100644 index 8472e9c7328a6..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/pyproject.toml +++ /dev/null @@ -1,29 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "1.1.14" -name = "source-onesignal" -description = "Source implementation for One Signal." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/source-onesignal" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_onesignal" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "^1" - -[tool.poetry.scripts] -source-onesignal = "source_onesignal.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "^1.11.0" -pytest = "^8.0.0" -freezegun = "^1.4.0" -pytest-mock = "^3.6.1" diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/__init__.py b/airbyte-integrations/connectors/source-onesignal/source_onesignal/__init__.py deleted file mode 100644 index ac064edbc409e..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceOnesignal - -__all__ = ["SourceOnesignal"] diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/manifest.yaml b/airbyte-integrations/connectors/source-onesignal/source_onesignal/manifest.yaml deleted file mode 100644 index aef1c029398ec..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/manifest.yaml +++ /dev/null @@ -1,142 +0,0 @@ -version: "0.29.0" - -definitions: - selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: ["{{ parameters.extractorPath }}"] - - user_auth_requester: - type: HttpRequester - url_base: "https://onesignal.com/api/v1/" - http_method: "GET" - authenticator: - type: BearerAuthenticator - api_token: "{{ config['user_auth_key'] }}" - request_parameters: - app_id: "{{ config['applications'][0]['app_id'] }}" - - rest_api_requester: - type: HttpRequester - url_base: "https://onesignal.com/api/v1" - http_method: "GET" - authenticator: - type: BearerAuthenticator - api_token: "{{ config['applications'][0]['app_api_key'] }}" - request_parameters: - app_id: "{{ config['applications'][0]['app_id'] }}" - - retriever_with_pagination: - type: SimpleRetriever - record_selector: - $ref: "#/definitions/selector" - paginator: - type: "DefaultPaginator" - page_size_option: - type: "RequestOption" - inject_into: "request_parameter" - field_name: "limit" - pagination_strategy: - type: "OffsetIncrement" - page_size: 5 - page_token_option: - type: "RequestOption" - field_name: "offset" - inject_into: "request_parameter" - requester: - $ref: "#/definitions/rest_api_requester" - - user_auth_base_stream: - type: DeclarativeStream - retriever: - type: SimpleRetriever - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - paginator: - type: NoPagination - requester: - $ref: "#/definitions/user_auth_requester" - - rest_api_key_auth_base_stream: - type: DeclarativeStream - retriever: - type: SimpleRetriever - record_selector: - $ref: "#/definitions/selector" - paginator: - type: NoPagination - requester: - $ref: "#/definitions/rest_api_requester" - - apps_stream: - $ref: "#/definitions/user_auth_base_stream" - name: "apps" - primary_key: "id" - $parameters: - path: "apps" - - incremental_sync_base: - type: DatetimeBasedCursor - cursor_field: "{{ parameters.incremental_cursor }}" - datetime_format: "%s" - cursor_granularity: "PT0.000001S" - lookback_window: "P31D" - start_datetime: - datetime: "{{ config['start_date'] }}" - datetime_format: "%Y-%m-%dT%H:%M:%SZ" - end_datetime: - datetime: "{{ today_utc() }}" - datetime_format: "%Y-%m-%d" - step: "P1M" - - devices_stream: - $ref: "#/definitions/rest_api_key_auth_base_stream" - $parameters: - name: "devices" - primary_key: "id" - extractorPath: "players" - incremental_cursor: "last_active" - path: "players" - incremental_sync: - $ref: "#/definitions/incremental_sync_base" - retriever: - $ref: "#/definitions/retriever_with_pagination" - - notifications_stream: - $ref: "#/definitions/rest_api_key_auth_base_stream" - $parameters: - name: "notifications" - primary_key: "id" - extractorPath: "notifications" - incremental_cursor: "queued_at" - path: "notifications" - incremental_sync: - $ref: "#/definitions/incremental_sync_base" - retriever: - $ref: "#/definitions/retriever_with_pagination" - - outcomes_stream: - $ref: "#/definitions/rest_api_key_auth_base_stream" - name: "outcomes" - primary_key: "id" - $parameters: - extractorPath: "outcomes" - path: "apps/{{ config['applications'][0]['app_id'] }}/outcomes" - -streams: - - "#/definitions/apps_stream" - - "#/definitions/devices_stream" - - "#/definitions/notifications_stream" - - "#/definitions/outcomes_stream" - -check: - type: CheckStream - stream_names: - - "apps" - - "devices" - - "notifications" - - "outcomes" diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/run.py b/airbyte-integrations/connectors/source-onesignal/source_onesignal/run.py deleted file mode 100644 index e5690d762c47b..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_onesignal import SourceOnesignal - - -def run(): - source = SourceOnesignal() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/apps.json b/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/apps.json deleted file mode 100644 index e69c6d865c2da..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/apps.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "players": { - "type": ["null", "integer"] - }, - "messageable_players": { - "type": ["null", "integer"] - }, - "updated_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "created_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "gcm_key": { - "type": ["null", "string"] - }, - "chrome_key": { - "type": ["null", "string"] - }, - "chrome_web_key": { - "type": ["null", "string"] - }, - "chrome_web_origin": { - "type": ["null", "string"] - }, - "chrome_web_gcm_sender_id": { - "type": ["null", "string"] - }, - "chrome_web_default_notification_icon": { - "type": ["null", "string"] - }, - "chrome_web_sub_domain": { - "type": ["null", "string"] - }, - "apns_env": { - "type": ["null", "string"] - }, - "apns_certificates": { - "type": ["null", "string"] - }, - "safari_apns_certificate": { - "type": ["null", "string"] - }, - "safari_site_origin": { - "type": ["null", "string"] - }, - "safari_push_id": { - "type": ["null", "string"] - }, - "safari_icon_16_16": { - "type": ["null", "string"] - }, - "safari_icon_32_32": { - "type": ["null", "string"] - }, - "safari_icon_64_64": { - "type": ["null", "string"] - }, - "safari_icon_128_128": { - "type": ["null", "string"] - }, - "safari_icon_256_256": { - "type": ["null", "string"] - }, - "site_name": { - "type": ["null", "string"] - }, - "basic_auth_key": { - "type": ["null", "string"] - }, - "additional_data_is_root_payload": { - "type": ["null", "boolean"] - }, - "apns_key_id": { - "type": ["null", "integer"] - }, - "fcm_v1_service_account_json": { - "type": ["null", "string"] - }, - "apns_p8": { - "type": ["null", "string"] - }, - "apns_bundle_id": { - "type": ["null", "integer"] - }, - "apns_team_id": { - "type": ["null", "integer"] - } - } -} diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/devices.json b/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/devices.json deleted file mode 100644 index fb99daae90127..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/devices.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "string" - }, - "identifier": { - "type": ["null", "string"] - }, - "session_count": { - "type": ["null", "integer"] - }, - "language": { - "type": ["null", "string"] - }, - "timezone": { - "type": ["null", "integer"] - }, - "game_version": { - "type": ["null", "string"] - }, - "device_os": { - "type": ["null", "string"] - }, - "device_type": { - "type": ["null", "integer"] - }, - "device_model": { - "type": ["null", "string"] - }, - "ad_id": { - "type": ["null", "string"] - }, - "tags": { - "type": ["null", "object"], - "properties": {} - }, - "last_active": { - "type": ["null", "integer"] - }, - "amount_spent": { - "type": ["null", "number"] - }, - "created_at": { - "type": ["null", "integer"] - }, - "invalid_identifier": { - "type": ["null", "boolean"] - }, - "badge_count": { - "type": ["null", "integer"] - }, - "playtime": { - "type": ["null", "integer"] - }, - "sdk": { - "type": ["null", "string"] - }, - "test_type": { - "type": ["null", "string"] - }, - "ip": { - "type": ["null", "string"] - }, - "external_user_id": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/notifications.json b/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/notifications.json deleted file mode 100644 index a33cec41b845b..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/notifications.json +++ /dev/null @@ -1,397 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "adm_big_picture": { - "type": ["null", "string"] - }, - "adm_group": { - "type": ["null", "string"] - }, - "adm_group_message": { - "type": ["null", "object"], - "properties": { - "en": { - "type": ["null", "string"] - } - } - }, - "adm_large_icon": { - "type": ["null", "string"] - }, - "adm_small_icon": { - "type": ["null", "string"] - }, - "adm_sound": { - "type": ["null", "string"] - }, - "spoken_text": { - "type": ["null", "object"], - "properties": {} - }, - "alexa_ssml": { - "type": ["null", "string"] - }, - "alexa_display_title": { - "type": ["null", "string"] - }, - "amazon_background_data": { - "type": ["null", "boolean"] - }, - "android_accent_color": { - "type": ["null", "string"] - }, - "android_group": { - "type": ["null", "string"] - }, - "android_group_message": { - "type": ["null", "object"], - "properties": { - "en": { - "type": ["null", "string"] - } - } - }, - "android_led_color": { - "type": ["null", "string"] - }, - "android_sound": { - "type": ["null", "string"] - }, - "android_visibility": { - "type": ["null", "integer"] - }, - "app_id": { - "type": "string" - }, - "big_picture": { - "type": ["null", "string"] - }, - "buttons": { - "type": ["null", "string"] - }, - "canceled": { - "type": ["null", "boolean"] - }, - "chrome_big_picture": { - "type": ["null", "string"] - }, - "chrome_icon": { - "type": ["null", "string"] - }, - "chrome_web_icon": { - "type": ["null", "string"] - }, - "chrome_web_image": { - "type": ["null", "string"] - }, - "chrome_web_badge": { - "type": ["null", "string"] - }, - "content_available": { - "type": ["null", "boolean"] - }, - "name": { - "type": ["null", "string"] - }, - "contents": { - "type": ["null", "object"], - "properties": { - "en": { - "type": ["null", "string"] - } - } - }, - "converted": { - "type": ["null", "integer"] - }, - "data": { - "type": ["null", "object"], - "properties": {} - }, - "delayed_option": { - "type": ["null", "string"] - }, - "delivery_time_of_day": { - "type": ["null", "string"] - }, - "errored": { - "type": ["null", "integer"] - }, - "excluded_segments": { - "type": ["null", "array"], - "items": { - "type": "string" - } - }, - "failed": { - "type": ["null", "integer"] - }, - "firefox_icon": { - "type": ["null", "string"] - }, - "global_image": { - "type": ["null", "string"] - }, - "headings": { - "type": ["null", "object"], - "properties": { - "en": { - "type": ["null", "string"] - } - } - }, - - "huawei_accent_color": { - "type": ["null", "string"] - }, - "huawei_big_picture": { - "type": ["null", "string"] - }, - "huawei_channel_id": { - "type": ["null", "string"] - }, - "huawei_existing_channel_id": { - "type": ["null", "string"] - }, - "huawei_group": { - "type": ["null", "string"] - }, - "huawei_group_message": { - "type": ["null", "string"] - }, - "huawei_large_icon": { - "type": ["null", "string"] - }, - "huawei_led_color": { - "type": ["null", "string"] - }, - "huawei_msg_type": { - "type": ["null", "string"] - }, - "huawei_small_icon": { - "type": ["null", "string"] - }, - "huawei_sound": { - "type": ["null", "string"] - }, - "huawei_visibility": { - "type": ["null", "string"] - }, - "id": { - "type": "string" - }, - "include_player_ids": { - "type": ["null", "string"] - }, - "include_external_user_ids": { - "type": ["null", "string"] - }, - "included_segments": { - "type": "array", - "items": { - "type": "string" - } - }, - "thread_id": { - "type": ["null", "string"] - }, - "ios_badgeCount": { - "type": ["null", "integer"] - }, - "ios_badgeType": { - "type": ["null", "string"] - }, - "ios_category": { - "type": ["null", "string"] - }, - "ios_interruption_level": { - "type": ["null", "string"] - }, - "ios_relevance_score": { - "type": ["null", "number"] - }, - "ios_sound": { - "type": ["null", "string"] - }, - "apns_alert": { - "type": ["null", "object"], - "properties": {} - }, - "target_content_identifier": { - "type": ["null", "string"] - }, - "isAdm": { - "type": ["null", "boolean"] - }, - "isAndroid": { - "type": ["null", "boolean"] - }, - "isChrome": { - "type": ["null", "boolean"] - }, - "isChromeWeb": { - "type": ["null", "boolean"] - }, - "isAlexa": { - "type": ["null", "boolean"] - }, - "isFirefox": { - "type": ["null", "boolean"] - }, - "isIos": { - "type": ["null", "boolean"] - }, - "isSafari": { - "type": ["null", "boolean"] - }, - "isWP": { - "type": ["null", "boolean"] - }, - "isWP_WNS": { - "type": ["null", "boolean"] - }, - "isEdge": { - "type": ["null", "boolean"] - }, - "isHuawei": { - "type": ["null", "boolean"] - }, - "isSMS": { - "type": ["null", "boolean"] - }, - "large_icon": { - "type": ["null", "string"] - }, - "priority": { - "type": ["null", "integer"] - }, - "queued_at": { - "type": "integer" - }, - "remaining": { - "type": ["null", "integer"] - }, - "send_after": { - "type": ["null", "integer"] - }, - "completed_at": { - "type": ["null", "integer"] - }, - "small_icon": { - "type": ["null", "string"] - }, - "successful": { - "type": ["null", "integer"] - }, - "received": { - "type": ["null", "integer"] - }, - "tags": { - "type": ["null", "object"], - "properties": {} - }, - "filters": { - "type": ["null", "string"] - }, - "template_id": { - "type": ["null", "string"] - }, - "ttl": { - "type": ["null", "integer"] - }, - "url": { - "type": ["null", "string"] - }, - "web_url": { - "type": ["null", "string"] - }, - "app_url": { - "type": ["null", "string"] - }, - "web_buttons": { - "type": ["null", "string"] - }, - "web_push_topic": { - "type": ["null", "string"] - }, - "wp_sound": { - "type": ["null", "string"] - }, - "wp_wns_sound": { - "type": ["null", "string"] - }, - "platform_delivery_stats": { - "type": "object", - "properties": { - "android": { - "type": ["null", "object"], - "properties": { - "successful": { - "type": "integer" - }, - "errored": { - "type": "integer" - }, - "failed": { - "type": "integer" - }, - "converted": { - "type": "integer" - }, - "received": { - "type": "integer" - } - } - }, - "ios": { - "type": ["null", "object"], - "properties": { - "successful": { - "type": "integer" - }, - "errored": { - "type": "integer" - }, - "failed": { - "type": "integer" - }, - "converted": { - "type": "integer" - }, - "received": { - "type": "integer" - } - } - } - } - }, - "ios_attachments": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "string"] - } - } - }, - "throttle_rate_per_minute": { - "type": ["null", "integer"] - }, - "sms_from": { - "type": ["null", "string"] - }, - "sms_media_urls": { - "type": ["null", "string"] - }, - "email_click_tracking_disabled": { - "type": ["null", "boolean"] - }, - "fcap_group_ids": { - "type": ["null", "string"] - }, - "fcap_status": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/outcomes.json b/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/outcomes.json deleted file mode 100644 index e5cde1806a1ca..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/schemas/outcomes.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "string" - }, - "value": { - "type": "integer" - }, - "aggregation": { - "type": "string" - } - } -} diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/source.py b/airbyte-integrations/connectors/source-onesignal/source_onesignal/source.py deleted file mode 100644 index c203c5f38c30e..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceOnesignal(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-onesignal/source_onesignal/spec.yaml b/airbyte-integrations/connectors/source-onesignal/source_onesignal/spec.yaml deleted file mode 100644 index 889703c95da15..0000000000000 --- a/airbyte-integrations/connectors/source-onesignal/source_onesignal/spec.yaml +++ /dev/null @@ -1,69 +0,0 @@ -documentationUrl: https://docs.airbyte.com/integrations/sources/onesignal -connectionSpecification: - $schema: https://json-schema.org/draft-07/schema# - title: OneSignal Source Spec - type: object - required: - - user_auth_key - - start_date - - outcome_names - - applications - additionalProperties: true - properties: - user_auth_key: - type: string - title: User Auth Key - description: - OneSignal User Auth Key, see the docs - for more information on how to obtain this key. - airbyte_secret: true - order: 0 - applications: - type: array - title: Applications - description: - Applications keys, see the docs - for more information on how to obtain this data - items: - type: object - properties: - app_name: - type: string - title: OneSignal App Name - order: 0 - app_id: - type: string - title: OneSignal App ID - order: 1 - airbyte_secret: true - app_api_key: - type: string - title: REST API Key - order: 2 - airbyte_secret: true - required: - - app_id - - app_api_key - order: 1 - start_date: - type: string - title: Start Date - description: - The date from which you'd like to replicate data for OneSignal - API, in the format YYYY-MM-DDT00:00:00Z. All data generated after this date - will be replicated. - examples: - - "2020-11-16T00:00:00Z" - pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$" - format: date-time - order: 2 - outcome_names: - type: string - title: Outcome Names - description: - Comma-separated list of names and the value (sum/count) for the - returned outcome data. See the docs - for more details - examples: - - os__session_duration.count,os__click.count,CustomOutcomeName.sum - order: 3 diff --git a/docs/integrations/sources/onesignal.md b/docs/integrations/sources/onesignal.md index 0088a05985595..8efeb4f7b6943 100644 --- a/docs/integrations/sources/onesignal.md +++ b/docs/integrations/sources/onesignal.md @@ -78,6 +78,7 @@ The connector is restricted by normal OneSignal [rate limits](https://documentat | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------- | +| 1.2.0 | 2024-10-05 | [46372](https://github.com/airbytehq/airbyte/pull/46372) | Converting to manifest-only format | | 1.1.14 | 2024-09-28 | [46184](https://github.com/airbytehq/airbyte/pull/46184) | Update dependencies | | 1.1.13 | 2024-09-21 | [45788](https://github.com/airbytehq/airbyte/pull/45788) | Update dependencies | | 1.1.12 | 2024-09-14 | [45528](https://github.com/airbytehq/airbyte/pull/45528) | Update dependencies | From 3f9c032b2e74848da8d2914e3aa3635bf116c2cd Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Sat, 5 Oct 2024 14:13:47 +0100 Subject: [PATCH 037/379] =?UTF-8?q?=E2=9C=A8=20Source=20Datadog=20:=20Migr?= =?UTF-8?q?ate=20to=20Manifest-only=20(#46387)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Natik Gadzhi --- .../connectors/source-datadog/README.md | 81 +- .../connectors/source-datadog/__init__.py | 3 - .../source-datadog/acceptance-test-config.yml | 2 +- .../connectors/source-datadog/main.py | 8 - .../{source_datadog => }/manifest.yaml | 121 +- .../connectors/source-datadog/metadata.yaml | 8 +- .../connectors/source-datadog/poetry.lock | 1685 ----------------- .../connectors/source-datadog/pyproject.toml | 28 - .../source-datadog/source_datadog/__init__.py | 8 - .../source-datadog/source_datadog/run.py | 14 - .../source-datadog/source_datadog/source.py | 18 - docs/integrations/sources/datadog.md | 1 + 12 files changed, 94 insertions(+), 1883 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-datadog/__init__.py delete mode 100644 airbyte-integrations/connectors/source-datadog/main.py rename airbyte-integrations/connectors/source-datadog/{source_datadog => }/manifest.yaml (96%) delete mode 100644 airbyte-integrations/connectors/source-datadog/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-datadog/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-datadog/source_datadog/__init__.py delete mode 100644 airbyte-integrations/connectors/source-datadog/source_datadog/run.py delete mode 100644 airbyte-integrations/connectors/source-datadog/source_datadog/source.py diff --git a/airbyte-integrations/connectors/source-datadog/README.md b/airbyte-integrations/connectors/source-datadog/README.md index 8218099f06a03..598e715210af5 100644 --- a/airbyte-integrations/connectors/source-datadog/README.md +++ b/airbyte-integrations/connectors/source-datadog/README.md @@ -1,92 +1,65 @@ # Datadog source connector +This directory contains the manifest-only connector for `source-datadog`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -This is the repository for the Datadog source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/datadog). +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/datadog). ## Local development -### Prerequisites -* Python (~=3.9) -* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! +If you prefer to develop locally, you can follow the instructions below. -### Installing the connector -From this connector directory, run: - -```bash -poetry install --with dev -``` - - -### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/datadog) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_datadog/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `integration_tests/sample_config.json` for a sample config file. - +### Building the docker image -### Locally running the connector -``` -poetry run source-datadog spec -poetry run source-datadog check --config secrets/config.json -poetry run source-datadog discover --config secrets/config.json -poetry run source-datadog read --config secrets/config.json --catalog integration_tests/configured_catalog.json -``` +You can build any manifest-only connector with `airbyte-ci`: -### Running unit tests -To run unit tests locally, from the connector directory run: -``` -poetry run pytest unit_tests -``` - -### Building the docker image 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: + ```bash airbyte-ci connectors --name=source-datadog build ``` An image will be available on your host with the tag `airbyte/source-datadog:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/datadog) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. ### Running as a docker container -Then run any of the connector commands as follows: -``` + +Then run any of the standard source connector commands: + +```bash docker run --rm airbyte/source-datadog:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-datadog:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-datadog:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-datadog:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite +### Running the CI test suite You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -```bash -airbyte-ci connectors --name=source-datadog test -``` - -### Customizing acceptance Tests -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. -### Dependency Management -All of your dependencies should be managed via Poetry. -To add a new dependency, run: ```bash -poetry add +airbyte-ci connectors --name=source-datadog test ``` -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-datadog test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + +If you want to contribute changes to `source-datadog`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-datadog test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/datadog.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. 7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master. -8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry. +8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry. \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-datadog/__init__.py b/airbyte-integrations/connectors/source-datadog/__init__.py deleted file mode 100644 index c941b30457953..0000000000000 --- a/airbyte-integrations/connectors/source-datadog/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-datadog/acceptance-test-config.yml b/airbyte-integrations/connectors/source-datadog/acceptance-test-config.yml index 2237765cee5f0..562a1c5aedaed 100644 --- a/airbyte-integrations/connectors/source-datadog/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-datadog/acceptance-test-config.yml @@ -4,7 +4,7 @@ connector_image: airbyte/source-datadog:dev acceptance_tests: spec: tests: - - spec_path: "source_datadog/spec.yaml" + - spec_path: "manifest.yaml" backward_compatibility_tests_config: disable_for_version: "0.4.15" # Set default start and end date for incremental sync connection: diff --git a/airbyte-integrations/connectors/source-datadog/main.py b/airbyte-integrations/connectors/source-datadog/main.py deleted file mode 100644 index d8e7d33f093e2..0000000000000 --- a/airbyte-integrations/connectors/source-datadog/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_datadog.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-datadog/source_datadog/manifest.yaml b/airbyte-integrations/connectors/source-datadog/manifest.yaml similarity index 96% rename from airbyte-integrations/connectors/source-datadog/source_datadog/manifest.yaml rename to airbyte-integrations/connectors/source-datadog/manifest.yaml index e536c0fed0b2e..4696f49081282 100644 --- a/airbyte-integrations/connectors/source-datadog/source_datadog/manifest.yaml +++ b/airbyte-integrations/connectors/source-datadog/manifest.yaml @@ -1,4 +1,4 @@ -version: 4.3.2 +version: 5.7.5 type: DeclarativeSource @@ -17,8 +17,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v2" - path: audit/events + $ref: "#/definitions/base_requester" + path: v2/audit/events http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -52,8 +52,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v1" - path: dashboard + $ref: "#/definitions/base_requester" + path: v1/dashboard http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -75,8 +75,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v1" - path: downtime + $ref: "#/definitions/base_requester" + path: v1/downtime http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -97,8 +97,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v2" - path: teams + $ref: "#/definitions/base_requester" + path: v2/teams http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -127,8 +127,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v2" - path: incidents + $ref: "#/definitions/base_requester" + path: v2/incidents http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -147,8 +147,11 @@ definitions: pagination_strategy: type: CursorPagination cursor_value: >- - {{ last_record['meta']['pagination']['next_offset'] if last_record - else None }} + {{ response.get("meta", {}).get("pagination", + {}).get("next_offset", {}) }} + stop_condition: >- + {{ not response.get("meta", {}).get("pagination", + {}).get("next_offset", {}) }} schema_loader: type: InlineSchemaLoader schema: @@ -161,8 +164,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v2" - path: logs/events + $ref: "#/definitions/base_requester" + path: v2/logs/events http_method: GET request_parameters: filter[query]: "{{ config['query'] }}" @@ -204,6 +207,7 @@ definitions: cursor_field: sync_date lookback_window: P31D cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" - "%Y-%m-%dT%H:%M:%SZ" datetime_format: "%Y-%m-%dT%H:%M:%SZ" start_datetime: @@ -224,6 +228,12 @@ definitions: datetime_format: "%Y-%m-%dT%H:%M:%SZ" step: P1M cursor_granularity: PT0.000001S + transformations: + - type: AddFields + fields: + - path: + - sync_date + value: "{{ record['attributes']['timestamp'] }}" schema_loader: type: InlineSchemaLoader schema: @@ -236,8 +246,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v2" - path: metrics + $ref: "#/definitions/base_requester" + path: v2/metrics http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -259,8 +269,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v1" - path: monitor + $ref: "#/definitions/base_requester" + path: v1/monitor http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -281,8 +291,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v1" - path: slo + $ref: "#/definitions/base_requester" + path: v1/slo http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -302,8 +312,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v1" - path: synthetics/tests + $ref: "#/definitions/base_requester" + path: v1/synthetics/tests http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -325,8 +335,8 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: "#/definitions/base_requester_v2" - path: users + $ref: "#/definitions/base_requester" + path: v2/users http_method: GET request_headers: DD-APPLICATION-KEY: "{{ config['application_key'] }}" @@ -353,19 +363,9 @@ definitions: type: InlineSchemaLoader schema: $ref: "#/schemas/users" - base_requester_v1: - type: HttpRequester - url_base: https://api.{{ config['site'] }}/api/v1/ - authenticator: - type: ApiKeyAuthenticator - api_token: '{{ config["api_key"] }}' - inject_into: - type: RequestOption - field_name: DD-API-KEY - inject_into: header - base_requester_v2: + base_requester: type: HttpRequester - url_base: https://api.{{ config['site'] }}/api/v2/ + url_base: https://api.{{ config['site'] }}/api/ authenticator: type: ApiKeyAuthenticator api_token: '{{ config["api_key"] }}' @@ -510,82 +510,83 @@ metadata: users: false testedStreams: audit_logs: - streamHash: 3120cc4ea60fe42d20e6f755a4f3d2f1f872642a + streamHash: 4938d5b333c624c8f301eac284c5a174d944f466 hasResponse: true responsesAreSuccessful: true - hasRecords: false + hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true dashboards: - streamHash: ccf126d779c38738bb296dfe1ede33addf7609a7 + streamHash: 277a1ea39fde86d246bc648ae60ff3b8ebd8ec41 hasResponse: true responsesAreSuccessful: true hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true downtimes: - streamHash: 436e7603ff5e27d49318282b058b2384075a4622 + streamHash: d2cc478d2160b90412e4e9f6745cd3161820d6fb hasResponse: true responsesAreSuccessful: true - hasRecords: false + hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true incident_teams: - streamHash: d11d730339f869d1e26779abd5ae2064a0aabdc9 + streamHash: 0d8bc56787c599e1011cfab5b7c0e84b2c851557 hasResponse: true responsesAreSuccessful: true - hasRecords: false + hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true incidents: - streamHash: ab19fbb8c0522940c9ddaee6b97e5900343d1ec3 + streamHash: 47cc0e8fd035e7db2846b26520ab729458984f44 hasResponse: true responsesAreSuccessful: true hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true logs: - streamHash: 529b609d71adf271af2b9fc4f55afe0e663ea15f + streamHash: da4ac7b454e4b259796ed3314bad785bd9336e16 hasResponse: true - responsesAreSuccessful: false - hasRecords: false + responsesAreSuccessful: true + hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true - monitors: - streamHash: 1627d8435fbe1cbba0018bd96537d1daf7c31122 + metrics: + streamHash: f4ec990f551bab54c17838ed70867b1ec35f43e5 hasResponse: true responsesAreSuccessful: true hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true - service_level_objectives: - streamHash: a78ca24666edd1f8ca80652d7134f6bb0355847c + monitors: + streamHash: a062c312b114a0c93de6cf544cb3866a4d740cd0 hasResponse: true responsesAreSuccessful: true - hasRecords: false + hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true - synthetic_tests: - streamHash: d9bb8580df6620a0faec41f91386334a39e8af48 + service_level_objectives: + streamHash: 7fd5b7991c51fb67325aa0a7ff96577be2a7987d hasResponse: true responsesAreSuccessful: true - hasRecords: false + hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true - users: - streamHash: f36dda4ac376220e578488a647e87c81ad15a315 + synthetic_tests: + streamHash: c81afc074ea369f5ac1d5ee5c73431c3094912d2 hasResponse: true responsesAreSuccessful: true hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true - metrics: - streamHash: 730b847ada6a9eb114431fd35d32fb8b4e810a9f + users: + streamHash: b5f9f6ef4f26ab4ba4a9485496e18506c4fb3184 hasResponse: true responsesAreSuccessful: true hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true + assist: {} schemas: audit_logs: diff --git a/airbyte-integrations/connectors/source-datadog/metadata.yaml b/airbyte-integrations/connectors/source-datadog/metadata.yaml index bb2a75ad11f64..568a9066e7747 100644 --- a/airbyte-integrations/connectors/source-datadog/metadata.yaml +++ b/airbyte-integrations/connectors/source-datadog/metadata.yaml @@ -8,7 +8,7 @@ data: - ddog-gov.com remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-datadog registryOverrides: oss: @@ -23,7 +23,7 @@ data: connectorSubtype: api connectorType: source definitionId: 1cfc30c7-82db-43f4-9fd7-ac1b42312cda - dockerImageTag: 1.0.6 + dockerImageTag: 1.1.0 dockerRepository: airbyte/source-datadog githubIssueLabel: source-datadog icon: datadog.svg @@ -34,7 +34,7 @@ data: supportLevel: community documentationUrl: https://docs.airbyte.com/integrations/sources/datadog tags: - - language:python + - language:manifest-only - cdk:low-code ab_internal: sl: 100 @@ -52,5 +52,5 @@ data: type: GSM alias: airbyte-connector-testing-secret-store connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.7.5@sha256:4832cc13b262b4cae4ba72b07da544e6ee2f5d216b7147483480d5ebc5d0d7ca metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-datadog/poetry.lock b/airbyte-integrations/connectors/source-datadog/poetry.lock deleted file mode 100644 index 7c5f1b1710435..0000000000000 --- a/airbyte-integrations/connectors/source-datadog/poetry.lock +++ /dev/null @@ -1,1685 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "4.6.2" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.10" -files = [ - {file = "airbyte_cdk-4.6.2-py3-none-any.whl", hash = "sha256:3a37bd96c4b4f874b15fc18839b1e163eb30d1e4ef80d7dde2854e6a48efe934"}, - {file = "airbyte_cdk-4.6.2.tar.gz", hash = "sha256:c034f11ba6abe73dd7346ce2bc7017ff71ef0db1fd1ae86fb86beaeae35d8baf"}, -] - -[package.dependencies] -airbyte-protocol-models-pdv2 = ">=0.12.2,<0.13.0" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.1.6,<3.0.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -nltk = "3.8.1" -orjson = ">=3.10.7,<4.0.0" -pendulum = "<3.0.0" -pydantic = ">=2.7,<3.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pandas (==2.2.0)", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models-pdv2" -version = "0.12.2" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models_pdv2-0.12.2-py3-none-any.whl", hash = "sha256:8b3f9d0388928547cdf2e9134c0d589e4bcaa6f63bf71a21299f6824bfb7ad0e"}, - {file = "airbyte_protocol_models_pdv2-0.12.2.tar.gz", hash = "sha256:130c9ab289f3f53749ce63ff1abbfb67a44b7e5bd2794865315a2976138b672b"}, -] - -[package.dependencies] -pydantic = ">=2.7.2,<3.0.0" - -[[package]] -name = "annotated-types" -version = "0.7.0" -description = "Reusable constraint types to use with typing.Annotated" -optional = false -python-versions = ">=3.8" -files = [ - {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, - {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, -] - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.8" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.2.0" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.2.0-py3-none-any.whl", hash = "sha256:b330a375ded0a0d2ed404440f6c6a715deae5313af40bbb01c8a41d891900576"}, - {file = "dpath-2.2.0.tar.gz", hash = "sha256:34f7e630dc55ea3f219e555726f5da4b4b25f2200319c8e6902c394258dd6a3e"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.5" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "joblib" -version = "1.4.2" -description = "Lightweight pipelining with Python functions" -optional = false -python-versions = ">=3.8" -files = [ - {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, - {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, -] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.129" -description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} -requests = ">=2,<3" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "nltk" -version = "3.8.1" -description = "Natural Language Toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"}, - {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"}, -] - -[package.dependencies] -click = "*" -joblib = "*" -regex = ">=2021.8.3" -tqdm = "*" - -[package.extras] -all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] -corenlp = ["requests"] -machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] -plot = ["matplotlib"] -tgrep = ["pyparsing"] -twitter = ["twython"] - -[[package]] -name = "orjson" -version = "3.10.7" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "2.9.2" -description = "Data validation using Python type hints" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, -] - -[package.dependencies] -annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} - -[package.extras] -email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] - -[[package]] -name = "pydantic-core" -version = "2.23.4" -description = "Core functionality for Pydantic validation and serialization" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" - -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "8.3.3" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "regex" -version = "2024.9.11" -description = "Alternative regular expression module, to replace re." -optional = false -python-versions = ">=3.8" -files = [ - {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, - {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, - {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, - {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, - {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, - {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, - {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, - {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, - {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, - {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, - {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, - {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, - {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, - {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, - {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, - {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, - {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, - {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, - {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, - {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, - {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, - {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, - {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, - {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, - {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, - {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, - {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, - {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, - {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, - {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, - {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, - {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, - {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, - {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, - {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, - {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, - {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, - {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, - {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, - {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, - {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, - {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, - {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] - -[[package]] -name = "tqdm" -version = "4.66.5" -description = "Fast, Extensible Progress Meter" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] -notebook = ["ipywidgets (>=6)"] -slack = ["slack-sdk"] -telegram = ["requests"] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.10,<3.12" -content-hash = "4322007328fdc64bbc75b8d8e18ce2d275329f90f2b690f6dd052c9836156e3e" diff --git a/airbyte-integrations/connectors/source-datadog/pyproject.toml b/airbyte-integrations/connectors/source-datadog/pyproject.toml deleted file mode 100644 index 2074a411daffe..0000000000000 --- a/airbyte-integrations/connectors/source-datadog/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "1.0.6" -name = "source-datadog" -description = "Source implementation for Datadog." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/datadog" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_datadog" - -[tool.poetry.dependencies] -python = "^3.10,<3.12" -airbyte-cdk = "^4" - -[tool.poetry.scripts] -source-datadog = "source_datadog.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "*" -pytest = "*" -pytest-mock = "*" diff --git a/airbyte-integrations/connectors/source-datadog/source_datadog/__init__.py b/airbyte-integrations/connectors/source-datadog/source_datadog/__init__.py deleted file mode 100644 index 283ad17afffdf..0000000000000 --- a/airbyte-integrations/connectors/source-datadog/source_datadog/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceDatadog - -__all__ = ["SourceDatadog"] diff --git a/airbyte-integrations/connectors/source-datadog/source_datadog/run.py b/airbyte-integrations/connectors/source-datadog/source_datadog/run.py deleted file mode 100644 index 62adbe197666a..0000000000000 --- a/airbyte-integrations/connectors/source-datadog/source_datadog/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_datadog import SourceDatadog - - -def run(): - source = SourceDatadog() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-datadog/source_datadog/source.py b/airbyte-integrations/connectors/source-datadog/source_datadog/source.py deleted file mode 100644 index 36418d6a96694..0000000000000 --- a/airbyte-integrations/connectors/source-datadog/source_datadog/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceDatadog(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/docs/integrations/sources/datadog.md b/docs/integrations/sources/datadog.md index 57c858335a048..fe08e11128654 100644 --- a/docs/integrations/sources/datadog.md +++ b/docs/integrations/sources/datadog.md @@ -76,6 +76,7 @@ The Datadog source connector supports the following [sync modes](https://docs.ai | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------| +| 1.1.0 | 2023-10-04 | [46387](https://github.com/airbytehq/airbyte/pull/46387) | Migrate to manifest only | | 1.0.6 | 2024-09-28 | [46190](https://github.com/airbytehq/airbyte/pull/46190) | Update dependencies | | 1.0.5 | 2024-09-21 | [45771](https://github.com/airbytehq/airbyte/pull/45771) | Update dependencies | | 1.0.4 | 2024-09-14 | [45581](https://github.com/airbytehq/airbyte/pull/45581) | Update dependencies | From fe77c7d7285d4b0820740289f32f73056367fa1a Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Sat, 5 Oct 2024 13:39:18 -0700 Subject: [PATCH 038/379] =?UTF-8?q?Bulk=20Load=20CDK=20Stream=20Incomplete?= =?UTF-8?q?=20Prep=20Refactor:=20Memory=20manager=20provide=E2=80=A6=20(#4?= =?UTF-8?q?6386)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cdk/message/DestinationMessageQueue.kt | 19 +++----- .../io/airbyte/cdk/state/MemoryManager.kt | 44 ++++++++++++++++--- .../io/airbyte/cdk/util/CoroutineUtils.kt | 12 +++++ .../io/airbyte/cdk/state/MemoryManagerTest.kt | 4 +- spotbugs-exclude-filter-file.xml | 3 ++ 5 files changed, 62 insertions(+), 20 deletions(-) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt index 694d1d29e1bcc..1ee527b257953 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt @@ -13,7 +13,6 @@ import jakarta.inject.Singleton import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.atomic.AtomicLong import java.util.concurrent.locks.ReentrantLock -import kotlin.concurrent.withLock import kotlinx.coroutines.runBlocking /** @@ -60,7 +59,8 @@ class DestinationMessageQueue( ConcurrentHashMap() private val totalQueueSizeBytes = AtomicLong(0L) - private val maxQueueSizeBytes: Long + private val reservedMemory: MemoryManager.Reservation + private val reservedMemoryManager: MemoryManager private val memoryLock = ReentrantLock() private val memoryLockCondition = memoryLock.newCondition() @@ -69,23 +69,16 @@ class DestinationMessageQueue( val adjustedRatio = config.maxMessageQueueMemoryUsageRatio / (1.0 + config.estimatedRecordMemoryOverheadRatio) - maxQueueSizeBytes = runBlocking { memoryManager.reserveRatio(adjustedRatio) } + reservedMemory = runBlocking { memoryManager.reserveRatio(adjustedRatio) } + reservedMemoryManager = reservedMemory.getReservationManager() } override suspend fun acquireQueueBytesBlocking(bytes: Long) { - memoryLock.withLock { - while (totalQueueSizeBytes.get() + bytes > maxQueueSizeBytes) { - memoryLockCondition.await() - } - totalQueueSizeBytes.addAndGet(bytes) - } + reservedMemoryManager.reserveBlocking(bytes) } override suspend fun releaseQueueBytes(bytes: Long) { - memoryLock.withLock { - totalQueueSizeBytes.addAndGet(-bytes) - memoryLockCondition.signalAll() - } + reservedMemoryManager.release(bytes) } override suspend fun getChannel( diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt index f5511f58fcc1e..1babd2c449b30 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt @@ -4,8 +4,10 @@ package io.airbyte.cdk.state +import io.airbyte.cdk.util.CloseableCoroutine import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton +import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicLong import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.sync.Mutex @@ -19,17 +21,47 @@ import kotlinx.coroutines.sync.withLock * TODO: Some degree of logging/monitoring around how accurate we're actually being? */ @Singleton -class MemoryManager(private val availableMemoryProvider: AvailableMemoryProvider) { - private val totalMemoryBytes: Long = availableMemoryProvider.availableMemoryBytes +class MemoryManager(availableMemoryProvider: AvailableMemoryProvider) { + // This is slightly awkward, but Micronaut only injects the primary constructor + constructor( + availableMemory: Long + ) : this( + object : AvailableMemoryProvider { + override val availableMemoryBytes: Long = availableMemory + } + ) + + private val totalMemoryBytes = availableMemoryProvider.availableMemoryBytes private var usedMemoryBytes = AtomicLong(0L) private val mutex = Mutex() private val syncChannel = Channel(Channel.UNLIMITED) + /** + * Releasable reservation of memory. For large blocks (ie, from [reserveRatio], provides a + * submanager that can be used to manage allocating the reservation). + */ + inner class Reservation(val bytes: Long) : CloseableCoroutine { + private var released = AtomicBoolean(false) + + suspend fun release() { + if (!released.compareAndSet(false, true)) { + return + } + release(bytes) + } + + fun getReservationManager(): MemoryManager = MemoryManager(bytes) + + override suspend fun close() { + release() + } + } + val remainingMemoryBytes: Long get() = totalMemoryBytes - usedMemoryBytes.get() /* Attempt to reserve memory. If enough memory is not available, waits until it is, then reserves. */ - suspend fun reserveBlocking(memoryBytes: Long) { + suspend fun reserveBlocking(memoryBytes: Long): Reservation { if (memoryBytes > totalMemoryBytes) { throw IllegalArgumentException( "Requested ${memoryBytes}b memory exceeds ${totalMemoryBytes}b total" @@ -41,13 +73,15 @@ class MemoryManager(private val availableMemoryProvider: AvailableMemoryProvider syncChannel.receive() } usedMemoryBytes.addAndGet(memoryBytes) + + return Reservation(memoryBytes) } } - suspend fun reserveRatio(ratio: Double): Long { + suspend fun reserveRatio(ratio: Double): Reservation { val estimatedSize = (totalMemoryBytes.toDouble() * ratio).toLong() reserveBlocking(estimatedSize) - return estimatedSize + return Reservation(estimatedSize) } suspend fun release(memoryBytes: Long) { diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt index fc497653f36d9..522efcf9eed2c 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt @@ -11,3 +11,15 @@ fun Flow.takeUntilInclusive(predicate: (T) -> Boolean): Flow = transfo emit(value) !predicate(value) } + +interface CloseableCoroutine { + suspend fun close() +} + +suspend fun T.use(block: suspend (T) -> Unit) { + try { + block(this) + } finally { + close() + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt index 5bc28a27cda17..556301830abde 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt @@ -17,11 +17,11 @@ import kotlinx.coroutines.withTimeout import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test -@MicronautTest +@MicronautTest(environments = ["MemoryManagerTest"]) class MemoryManagerTest { @Singleton @Replaces(MemoryManager::class) - @Requires(env = ["test"]) + @Requires(env = ["MemoryManagerTest"]) class MockAvailableMemoryProvider : AvailableMemoryProvider { override val availableMemoryBytes: Long = 1000 } diff --git a/spotbugs-exclude-filter-file.xml b/spotbugs-exclude-filter-file.xml index e1b34ccfb57ea..6b825caa6c30f 100644 --- a/spotbugs-exclude-filter-file.xml +++ b/spotbugs-exclude-filter-file.xml @@ -19,4 +19,7 @@ + + + From b5dfcb58c3166a3173576440e9f7938df104483c Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:17:42 +0300 Subject: [PATCH 039/379] =?UTF-8?q?=F0=9F=90=99=20source-recharge:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46510)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-recharge/metadata.yaml | 2 +- .../connectors/source-recharge/poetry.lock | 35 +++++++++++++------ .../connectors/source-recharge/pyproject.toml | 2 +- docs/integrations/sources/recharge.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-recharge/metadata.yaml b/airbyte-integrations/connectors/source-recharge/metadata.yaml index 528d6bf745734..907f73e49cd62 100644 --- a/airbyte-integrations/connectors/source-recharge/metadata.yaml +++ b/airbyte-integrations/connectors/source-recharge/metadata.yaml @@ -7,7 +7,7 @@ data: connectorBuildOptions: baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 definitionId: 45d2e135-2ede-49e1-939f-3e3ec357a65e - dockerImageTag: 2.4.10 + dockerImageTag: 2.4.11 dockerRepository: airbyte/source-recharge githubIssueLabel: source-recharge icon: recharge.svg diff --git a/airbyte-integrations/connectors/source-recharge/poetry.lock b/airbyte-integrations/connectors/source-recharge/poetry.lock index fea97a8f77214..e284f9a146407 100644 --- a/airbyte-integrations/connectors/source-recharge/poetry.lock +++ b/airbyte-integrations/connectors/source-recharge/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -524,13 +524,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -541,7 +541,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -716,13 +716,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -730,6 +730,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1493,6 +1494,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-recharge/pyproject.toml b/airbyte-integrations/connectors/source-recharge/pyproject.toml index cf0ef47484906..e880d2d39bf86 100644 --- a/airbyte-integrations/connectors/source-recharge/pyproject.toml +++ b/airbyte-integrations/connectors/source-recharge/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.4.10" +version = "2.4.11" name = "source-recharge" description = "Source implementation for Recharge." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/recharge.md b/docs/integrations/sources/recharge.md index 43f8633adeeec..6600076f0adae 100644 --- a/docs/integrations/sources/recharge.md +++ b/docs/integrations/sources/recharge.md @@ -79,6 +79,7 @@ The Recharge connector should gracefully handle Recharge API limitations under n | Version | Date | Pull Request | Subject | |:--------|:-----------| :------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------| +| 2.4.11 | 2024-10-05 | [46510](https://github.com/airbytehq/airbyte/pull/46510) | Update dependencies | | 2.4.10 | 2024-09-28 | [46110](https://github.com/airbytehq/airbyte/pull/46110) | Update dependencies | | 2.4.9 | 2024-09-21 | [45739](https://github.com/airbytehq/airbyte/pull/45739) | Update dependencies | | 2.4.8 | 2024-09-14 | [45520](https://github.com/airbytehq/airbyte/pull/45520) | Update dependencies | From b40239a180d1982df615fd73bbfbfab3aabfdeb0 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:17:45 +0300 Subject: [PATCH 040/379] =?UTF-8?q?=F0=9F=90=99=20source-postmarkapp:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46509)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-postmarkapp/metadata.yaml | 2 +- .../connectors/source-postmarkapp/poetry.lock | 6 +++--- .../connectors/source-postmarkapp/pyproject.toml | 2 +- docs/integrations/sources/postmarkapp.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-postmarkapp/metadata.yaml b/airbyte-integrations/connectors/source-postmarkapp/metadata.yaml index b75a203574ad2..b4d5666799261 100644 --- a/airbyte-integrations/connectors/source-postmarkapp/metadata.yaml +++ b/airbyte-integrations/connectors/source-postmarkapp/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: cde75ca1-1e28-4a0f-85bb-90c546de9f1f - dockerImageTag: 0.1.20 + dockerImageTag: 0.1.21 dockerRepository: airbyte/source-postmarkapp documentationUrl: https://docs.airbyte.com/integrations/sources/postmarkapp githubIssueLabel: source-postmarkapp diff --git a/airbyte-integrations/connectors/source-postmarkapp/poetry.lock b/airbyte-integrations/connectors/source-postmarkapp/poetry.lock index 45c71fcab3eb8..ce10b819fdf7e 100644 --- a/airbyte-integrations/connectors/source-postmarkapp/poetry.lock +++ b/airbyte-integrations/connectors/source-postmarkapp/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-postmarkapp/pyproject.toml b/airbyte-integrations/connectors/source-postmarkapp/pyproject.toml index 52e63beef53e1..f68072ee819db 100644 --- a/airbyte-integrations/connectors/source-postmarkapp/pyproject.toml +++ b/airbyte-integrations/connectors/source-postmarkapp/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.20" +version = "0.1.21" name = "source-postmarkapp" description = "Source implementation for Postmarkapp." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/postmarkapp.md b/docs/integrations/sources/postmarkapp.md index 0bf4d15d8d41a..5104a00f6cc5e 100644 --- a/docs/integrations/sources/postmarkapp.md +++ b/docs/integrations/sources/postmarkapp.md @@ -58,6 +58,7 @@ The Postmarkapp source connector supports the following [sync modes](https://doc | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.1.21 | 2024-10-05 | [46509](https://github.com/airbytehq/airbyte/pull/46509) | Update dependencies | | 0.1.20 | 2024-09-28 | [45793](https://github.com/airbytehq/airbyte/pull/45793) | Update dependencies | | 0.1.19 | 2024-09-14 | [45535](https://github.com/airbytehq/airbyte/pull/45535) | Update dependencies | | 0.1.18 | 2024-09-07 | [45259](https://github.com/airbytehq/airbyte/pull/45259) | Update dependencies | From ac2fb8e1ad7189f5e32cabd60f3e5af2ecd9909c Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:17:47 +0300 Subject: [PATCH 041/379] =?UTF-8?q?=F0=9F=90=99=20source-tplcentral:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46508)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-tplcentral/metadata.yaml | 2 +- .../connectors/source-tplcentral/poetry.lock | 6 +++--- .../connectors/source-tplcentral/pyproject.toml | 2 +- docs/integrations/sources/tplcentral.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-tplcentral/metadata.yaml b/airbyte-integrations/connectors/source-tplcentral/metadata.yaml index 71a7d22930300..de1aa989575b9 100644 --- a/airbyte-integrations/connectors/source-tplcentral/metadata.yaml +++ b/airbyte-integrations/connectors/source-tplcentral/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: f9b6c538-ee12-42fe-8d4b-0c10f5955417 - dockerImageTag: 0.1.22 + dockerImageTag: 0.1.23 dockerRepository: airbyte/source-tplcentral githubIssueLabel: source-tplcentral icon: tplcentral.svg diff --git a/airbyte-integrations/connectors/source-tplcentral/poetry.lock b/airbyte-integrations/connectors/source-tplcentral/poetry.lock index 5c2b32aff3c04..4ac157bdd8b2d 100644 --- a/airbyte-integrations/connectors/source-tplcentral/poetry.lock +++ b/airbyte-integrations/connectors/source-tplcentral/poetry.lock @@ -106,13 +106,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-tplcentral/pyproject.toml b/airbyte-integrations/connectors/source-tplcentral/pyproject.toml index 0b1aef3ec3334..edb964f8fa593 100644 --- a/airbyte-integrations/connectors/source-tplcentral/pyproject.toml +++ b/airbyte-integrations/connectors/source-tplcentral/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.22" +version = "0.1.23" name = "source-tplcentral" description = "Source implementation for Tplcentral." authors = [ "Labanoras Tech ",] diff --git a/docs/integrations/sources/tplcentral.md b/docs/integrations/sources/tplcentral.md index c490a63a450f1..233b93d7cc514 100644 --- a/docs/integrations/sources/tplcentral.md +++ b/docs/integrations/sources/tplcentral.md @@ -49,6 +49,7 @@ Please read [How to get your APIs credentials](https://help.3plcentral.com/hc/en | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------- | +| 0.1.23 | 2024-10-05 | [46508](https://github.com/airbytehq/airbyte/pull/46508) | Update dependencies | | 0.1.22 | 2024-09-28 | [46188](https://github.com/airbytehq/airbyte/pull/46188) | Update dependencies | | 0.1.21 | 2024-09-21 | [45761](https://github.com/airbytehq/airbyte/pull/45761) | Update dependencies | | 0.1.20 | 2024-09-14 | [45559](https://github.com/airbytehq/airbyte/pull/45559) | Update dependencies | From b3bfec917ec2969328c98be217ba8b13912ab1b1 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:17:50 +0300 Subject: [PATCH 042/379] =?UTF-8?q?=F0=9F=90=99=20source-trustpilot:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46507)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-trustpilot/metadata.yaml | 2 +- .../connectors/source-trustpilot/poetry.lock | 43 +++++++++++++------ .../source-trustpilot/pyproject.toml | 2 +- docs/integrations/sources/trustpilot.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-trustpilot/metadata.yaml b/airbyte-integrations/connectors/source-trustpilot/metadata.yaml index f58266cb26b9b..73545c637975e 100644 --- a/airbyte-integrations/connectors/source-trustpilot/metadata.yaml +++ b/airbyte-integrations/connectors/source-trustpilot/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: d7e23ea6-d741-4314-9209-a33c91a2e945 - dockerImageTag: 0.2.12 + dockerImageTag: 0.2.13 dockerRepository: airbyte/source-trustpilot githubIssueLabel: source-trustpilot icon: trustpilot.svg diff --git a/airbyte-integrations/connectors/source-trustpilot/poetry.lock b/airbyte-integrations/connectors/source-trustpilot/poetry.lock index 887ccfa30d058..cb49d9e5d5a19 100644 --- a/airbyte-integrations/connectors/source-trustpilot/poetry.lock +++ b/airbyte-integrations/connectors/source-trustpilot/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -473,13 +473,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -490,7 +490,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -654,13 +654,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -668,6 +668,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1228,6 +1229,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1287,13 +1302,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-trustpilot/pyproject.toml b/airbyte-integrations/connectors/source-trustpilot/pyproject.toml index 3dd9056d743da..e2fd3f80fb0c4 100644 --- a/airbyte-integrations/connectors/source-trustpilot/pyproject.toml +++ b/airbyte-integrations/connectors/source-trustpilot/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.12" +version = "0.2.13" name = "source-trustpilot" description = "Source implementation for Trustpilot." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/trustpilot.md b/docs/integrations/sources/trustpilot.md index 255085898d264..d9847417f307e 100644 --- a/docs/integrations/sources/trustpilot.md +++ b/docs/integrations/sources/trustpilot.md @@ -61,6 +61,7 @@ The Trustpilot connector should not run into any limits under normal usage. Plea | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------- | +| 0.2.13 | 2024-10-05 | [46507](https://github.com/airbytehq/airbyte/pull/46507) | Update dependencies | | 0.2.12 | 2024-09-28 | [46134](https://github.com/airbytehq/airbyte/pull/46134) | Update dependencies | | 0.2.11 | 2024-09-21 | [45789](https://github.com/airbytehq/airbyte/pull/45789) | Update dependencies | | 0.2.10 | 2024-09-14 | [45558](https://github.com/airbytehq/airbyte/pull/45558) | Update dependencies | From 127c49deb8b4334bd899a3e18c1fcae306e38388 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:17:53 +0300 Subject: [PATCH 043/379] =?UTF-8?q?=F0=9F=90=99=20source-greenhouse:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46506)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-greenhouse/metadata.yaml | 2 +- .../connectors/source-greenhouse/poetry.lock | 6 +++--- .../connectors/source-greenhouse/pyproject.toml | 2 +- docs/integrations/sources/greenhouse.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-greenhouse/metadata.yaml b/airbyte-integrations/connectors/source-greenhouse/metadata.yaml index b4d81aecb181a..8c910ad69f21f 100644 --- a/airbyte-integrations/connectors/source-greenhouse/metadata.yaml +++ b/airbyte-integrations/connectors/source-greenhouse/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 59f1e50a-331f-4f09-b3e8-2e8d4d355f44 - dockerImageTag: 0.5.21 + dockerImageTag: 0.5.22 dockerRepository: airbyte/source-greenhouse documentationUrl: https://docs.airbyte.com/integrations/sources/greenhouse githubIssueLabel: source-greenhouse diff --git a/airbyte-integrations/connectors/source-greenhouse/poetry.lock b/airbyte-integrations/connectors/source-greenhouse/poetry.lock index 22f11d33ec7b4..60f8fd09e821f 100644 --- a/airbyte-integrations/connectors/source-greenhouse/poetry.lock +++ b/airbyte-integrations/connectors/source-greenhouse/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-greenhouse/pyproject.toml b/airbyte-integrations/connectors/source-greenhouse/pyproject.toml index ed4e776432b02..bd45c9c7c2e3f 100644 --- a/airbyte-integrations/connectors/source-greenhouse/pyproject.toml +++ b/airbyte-integrations/connectors/source-greenhouse/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.5.21" +version = "0.5.22" name = "source-greenhouse" description = "Source implementation for Greenhouse." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/greenhouse.md b/docs/integrations/sources/greenhouse.md index 07cb40b083ed9..ce330301b2dfe 100644 --- a/docs/integrations/sources/greenhouse.md +++ b/docs/integrations/sources/greenhouse.md @@ -74,6 +74,7 @@ The Greenhouse connector should not run into Greenhouse API limitations under no | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.5.22 | 2024-10-05 | [46506](https://github.com/airbytehq/airbyte/pull/46506) | Update dependencies | | 0.5.21 | 2024-09-28 | [46159](https://github.com/airbytehq/airbyte/pull/46159) | Update dependencies | | 0.5.20 | 2024-09-21 | [45834](https://github.com/airbytehq/airbyte/pull/45834) | Update dependencies | | 0.5.19 | 2024-09-17 | [45625](https://github.com/airbytehq/airbyte/pull/45625) | Change check stream | From 61035dc88f035f0d94573d47c0c374373dd7ab81 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:17:55 +0300 Subject: [PATCH 044/379] =?UTF-8?q?=F0=9F=90=99=20source-fastbill:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46505)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-fastbill/metadata.yaml | 2 +- airbyte-integrations/connectors/source-fastbill/poetry.lock | 6 +++--- .../connectors/source-fastbill/pyproject.toml | 2 +- docs/integrations/sources/fastbill.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-fastbill/metadata.yaml b/airbyte-integrations/connectors/source-fastbill/metadata.yaml index a5fc92d310029..a2d04036c2890 100644 --- a/airbyte-integrations/connectors/source-fastbill/metadata.yaml +++ b/airbyte-integrations/connectors/source-fastbill/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: eb3e9c1c-0467-4eb7-a172-5265e04ccd0a - dockerImageTag: 0.2.22 + dockerImageTag: 0.2.23 dockerRepository: airbyte/source-fastbill documentationUrl: https://docs.airbyte.com/integrations/sources/fastbill githubIssueLabel: source-fastbill diff --git a/airbyte-integrations/connectors/source-fastbill/poetry.lock b/airbyte-integrations/connectors/source-fastbill/poetry.lock index 462697af46685..53765542f27b9 100644 --- a/airbyte-integrations/connectors/source-fastbill/poetry.lock +++ b/airbyte-integrations/connectors/source-fastbill/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-fastbill/pyproject.toml b/airbyte-integrations/connectors/source-fastbill/pyproject.toml index 94279b55145f9..1fb285519094e 100644 --- a/airbyte-integrations/connectors/source-fastbill/pyproject.toml +++ b/airbyte-integrations/connectors/source-fastbill/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.22" +version = "0.2.23" name = "source-fastbill" description = "Source implementation for Fastbill." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/fastbill.md b/docs/integrations/sources/fastbill.md index 6f25e1c71055f..79c0d0e6e0291 100644 --- a/docs/integrations/sources/fastbill.md +++ b/docs/integrations/sources/fastbill.md @@ -64,6 +64,7 @@ The Fastbill source connector supports the following [sync modes](https://docs.a | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.2.23 | 2024-10-05 | [46505](https://github.com/airbytehq/airbyte/pull/46505) | Update dependencies | | 0.2.22 | 2024-09-28 | [46172](https://github.com/airbytehq/airbyte/pull/46172) | Update dependencies | | 0.2.21 | 2024-09-21 | [45751](https://github.com/airbytehq/airbyte/pull/45751) | Update dependencies | | 0.2.20 | 2024-09-14 | [45486](https://github.com/airbytehq/airbyte/pull/45486) | Update dependencies | From bd6f479466f8c8da9404efb69d2489a1392a081d Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:17:58 +0300 Subject: [PATCH 045/379] =?UTF-8?q?=F0=9F=90=99=20source-bing-ads:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46504)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-bing-ads/metadata.yaml | 2 +- .../connectors/source-bing-ads/poetry.lock | 35 +++++++++++++------ .../connectors/source-bing-ads/pyproject.toml | 2 +- docs/integrations/sources/bing-ads.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-bing-ads/metadata.yaml b/airbyte-integrations/connectors/source-bing-ads/metadata.yaml index 0ebd4da85e7d9..9a513d0aae22b 100644 --- a/airbyte-integrations/connectors/source-bing-ads/metadata.yaml +++ b/airbyte-integrations/connectors/source-bing-ads/metadata.yaml @@ -16,7 +16,7 @@ data: connectorSubtype: api connectorType: source definitionId: 47f25999-dd5e-4636-8c39-e7cea2453331 - dockerImageTag: 2.7.7 + dockerImageTag: 2.7.8 dockerRepository: airbyte/source-bing-ads documentationUrl: https://docs.airbyte.com/integrations/sources/bing-ads erdUrl: https://dbdocs.io/airbyteio/source-bing-ads?view=relationships diff --git a/airbyte-integrations/connectors/source-bing-ads/poetry.lock b/airbyte-integrations/connectors/source-bing-ads/poetry.lock index b5c9fbe0dd78b..7ba6861563f12 100644 --- a/airbyte-integrations/connectors/source-bing-ads/poetry.lock +++ b/airbyte-integrations/connectors/source-bing-ads/poetry.lock @@ -145,13 +145,13 @@ suds-community = ">=1.1.0" [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -549,13 +549,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -566,7 +566,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -741,13 +741,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -755,6 +755,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1634,6 +1635,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-bing-ads/pyproject.toml b/airbyte-integrations/connectors/source-bing-ads/pyproject.toml index a2518d5f28410..42496cc9577c5 100644 --- a/airbyte-integrations/connectors/source-bing-ads/pyproject.toml +++ b/airbyte-integrations/connectors/source-bing-ads/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.7.7" +version = "2.7.8" name = "source-bing-ads" description = "Source implementation for Bing Ads." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/bing-ads.md b/docs/integrations/sources/bing-ads.md index 09a860bc0eac8..a5a57395c00f1 100644 --- a/docs/integrations/sources/bing-ads.md +++ b/docs/integrations/sources/bing-ads.md @@ -261,6 +261,7 @@ The Bing Ads API limits the number of requests for all Microsoft Advertising cli | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- | +| 2.7.8 | 2024-10-05 | [46504](https://github.com/airbytehq/airbyte/pull/46504) | Update dependencies | | 2.7.7 | 2024-09-28 | [46151](https://github.com/airbytehq/airbyte/pull/46151) | Update dependencies | | 2.7.6 | 2024-09-21 | [45512](https://github.com/airbytehq/airbyte/pull/45512) | Update dependencies | | 2.7.5 | 2024-09-07 | [45246](https://github.com/airbytehq/airbyte/pull/45246) | Update dependencies | From 19912efac59e1a8aee8f2fff14a44918dbe6ac47 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:00 +0300 Subject: [PATCH 046/379] =?UTF-8?q?=F0=9F=90=99=20source-klaviyo:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46503)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-klaviyo/metadata.yaml | 2 +- .../connectors/source-klaviyo/poetry.lock | 35 +++++++++++++------ .../connectors/source-klaviyo/pyproject.toml | 2 +- docs/integrations/sources/klaviyo.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-klaviyo/metadata.yaml b/airbyte-integrations/connectors/source-klaviyo/metadata.yaml index 681ef35c4776e..64f5066ae545b 100644 --- a/airbyte-integrations/connectors/source-klaviyo/metadata.yaml +++ b/airbyte-integrations/connectors/source-klaviyo/metadata.yaml @@ -8,7 +8,7 @@ data: definitionId: 95e8cffd-b8c4-4039-968e-d32fb4a69bde connectorBuildOptions: baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 - dockerImageTag: 2.10.7 + dockerImageTag: 2.10.8 dockerRepository: airbyte/source-klaviyo githubIssueLabel: source-klaviyo icon: klaviyo.svg diff --git a/airbyte-integrations/connectors/source-klaviyo/poetry.lock b/airbyte-integrations/connectors/source-klaviyo/poetry.lock index 1d1a181d23f53..9da799ee1f48a 100644 --- a/airbyte-integrations/connectors/source-klaviyo/poetry.lock +++ b/airbyte-integrations/connectors/source-klaviyo/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -510,13 +510,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -527,7 +527,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -702,13 +702,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -716,6 +716,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1479,6 +1480,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-klaviyo/pyproject.toml b/airbyte-integrations/connectors/source-klaviyo/pyproject.toml index 63abb046d5cae..a5efb6708cbd5 100644 --- a/airbyte-integrations/connectors/source-klaviyo/pyproject.toml +++ b/airbyte-integrations/connectors/source-klaviyo/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.10.7" +version = "2.10.8" name = "source-klaviyo" description = "Source implementation for Klaviyo." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/klaviyo.md b/docs/integrations/sources/klaviyo.md index 51032973a4a47..26606f18b7ce9 100644 --- a/docs/integrations/sources/klaviyo.md +++ b/docs/integrations/sources/klaviyo.md @@ -95,6 +95,7 @@ contain the `predictive_analytics` field and workflows depending on this field w | Version | Date | Pull Request | Subject | |:--------|:-----------|:-----------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------| +| 2.10.8 | 2024-10-05 | [46503](https://github.com/airbytehq/airbyte/pull/46503) | Update dependencies | | 2.10.7 | 2024-09-28 | [46174](https://github.com/airbytehq/airbyte/pull/46174) | Update dependencies | | 2.10.6 | 2024-09-21 | [45813](https://github.com/airbytehq/airbyte/pull/45813) | Update dependencies | | 2.10.5 | 2024-09-14 | [45530](https://github.com/airbytehq/airbyte/pull/45530) | Update dependencies | From 5eab735329f8098812676d5f728c92abf36eb53b Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:04 +0300 Subject: [PATCH 047/379] =?UTF-8?q?=F0=9F=90=99=20source-asana:=20run=20up?= =?UTF-8?q?-to-date=20pipeline=20[2024-10-05]=20(#46501)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-asana/metadata.yaml | 2 +- .../connectors/source-asana/poetry.lock | 43 +++++++++++++------ .../connectors/source-asana/pyproject.toml | 2 +- docs/integrations/sources/asana.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-asana/metadata.yaml b/airbyte-integrations/connectors/source-asana/metadata.yaml index 471147eef218a..bdd43acbfe784 100644 --- a/airbyte-integrations/connectors/source-asana/metadata.yaml +++ b/airbyte-integrations/connectors/source-asana/metadata.yaml @@ -28,7 +28,7 @@ data: connectorSubtype: api connectorType: source definitionId: d0243522-dccf-4978-8ba0-37ed47a0bdbf - dockerImageTag: 1.2.10 + dockerImageTag: 1.2.11 dockerRepository: airbyte/source-asana githubIssueLabel: source-asana icon: asana.svg diff --git a/airbyte-integrations/connectors/source-asana/poetry.lock b/airbyte-integrations/connectors/source-asana/poetry.lock index 887ccfa30d058..cb49d9e5d5a19 100644 --- a/airbyte-integrations/connectors/source-asana/poetry.lock +++ b/airbyte-integrations/connectors/source-asana/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -473,13 +473,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -490,7 +490,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -654,13 +654,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -668,6 +668,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1228,6 +1229,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1287,13 +1302,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-asana/pyproject.toml b/airbyte-integrations/connectors/source-asana/pyproject.toml index 2aacb40d895f0..a03a0465a1d5a 100644 --- a/airbyte-integrations/connectors/source-asana/pyproject.toml +++ b/airbyte-integrations/connectors/source-asana/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.2.10" +version = "1.2.11" name = "source-asana" description = "Source implementation for asana." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/asana.md b/docs/integrations/sources/asana.md index f73c557c1beb5..5b48662ba789b 100644 --- a/docs/integrations/sources/asana.md +++ b/docs/integrations/sources/asana.md @@ -106,6 +106,7 @@ The connector is restricted by [Asana rate limits](https://developers.asana.com/ | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------| +| 1.2.11 | 2024-10-05 | [46501](https://github.com/airbytehq/airbyte/pull/46501) | Update dependencies | | 1.2.10 | 2024-09-28 | [46166](https://github.com/airbytehq/airbyte/pull/46166) | Update dependencies | | 1.2.9 | 2024-09-21 | [45754](https://github.com/airbytehq/airbyte/pull/45754) | Update dependencies | | 1.2.8 | 2024-09-14 | [45547](https://github.com/airbytehq/airbyte/pull/45547) | Update dependencies | From 06a8cce20a8419439443758000221eea4e8dd7c6 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:07 +0300 Subject: [PATCH 048/379] =?UTF-8?q?=F0=9F=90=99=20source-bamboo-hr:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46500)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-bamboo-hr/metadata.yaml | 2 +- .../connectors/source-bamboo-hr/poetry.lock | 43 +++++++++++++------ .../source-bamboo-hr/pyproject.toml | 2 +- docs/integrations/sources/bamboo-hr.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-bamboo-hr/metadata.yaml b/airbyte-integrations/connectors/source-bamboo-hr/metadata.yaml index 9eab90a5bfdb3..71c296a616ffb 100644 --- a/airbyte-integrations/connectors/source-bamboo-hr/metadata.yaml +++ b/airbyte-integrations/connectors/source-bamboo-hr/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 90916976-a132-4ce9-8bce-82a03dd58788 - dockerImageTag: 0.4.11 + dockerImageTag: 0.4.12 dockerRepository: airbyte/source-bamboo-hr documentationUrl: https://docs.airbyte.com/integrations/sources/bamboo-hr githubIssueLabel: source-bamboo-hr diff --git a/airbyte-integrations/connectors/source-bamboo-hr/poetry.lock b/airbyte-integrations/connectors/source-bamboo-hr/poetry.lock index 887ccfa30d058..cb49d9e5d5a19 100644 --- a/airbyte-integrations/connectors/source-bamboo-hr/poetry.lock +++ b/airbyte-integrations/connectors/source-bamboo-hr/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -473,13 +473,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -490,7 +490,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -654,13 +654,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -668,6 +668,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1228,6 +1229,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1287,13 +1302,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-bamboo-hr/pyproject.toml b/airbyte-integrations/connectors/source-bamboo-hr/pyproject.toml index f7b2767050fbd..4945814c715ce 100644 --- a/airbyte-integrations/connectors/source-bamboo-hr/pyproject.toml +++ b/airbyte-integrations/connectors/source-bamboo-hr/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.4.11" +version = "0.4.12" name = "source-bamboo-hr" description = "Source implementation for Bamboo Hr." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/bamboo-hr.md b/docs/integrations/sources/bamboo-hr.md index bec88d4a2ccdb..016fa4bbb8c7c 100644 --- a/docs/integrations/sources/bamboo-hr.md +++ b/docs/integrations/sources/bamboo-hr.md @@ -91,6 +91,7 @@ Please [create an issue](https://github.com/airbytehq/airbyte/issues) if you see | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.4.12 | 2024-10-05 | [46500](https://github.com/airbytehq/airbyte/pull/46500) | Update dependencies | | 0.4.11 | 2024-09-28 | [46157](https://github.com/airbytehq/airbyte/pull/46157) | Update dependencies | | 0.4.10 | 2024-09-21 | [45766](https://github.com/airbytehq/airbyte/pull/45766) | Update dependencies | | 0.4.9 | 2024-09-14 | [45542](https://github.com/airbytehq/airbyte/pull/45542) | Update dependencies | From 02e67ec16cc57e85f3f71bc6f1f742d879ca280d Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:09 +0300 Subject: [PATCH 049/379] =?UTF-8?q?=F0=9F=90=99=20source-aws-cloudtrail:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46498)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-aws-cloudtrail/metadata.yaml | 2 +- .../source-aws-cloudtrail/poetry.lock | 43 +++++++++++++------ .../source-aws-cloudtrail/pyproject.toml | 2 +- docs/integrations/sources/aws-cloudtrail.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-aws-cloudtrail/metadata.yaml b/airbyte-integrations/connectors/source-aws-cloudtrail/metadata.yaml index 7279201ceefc1..d352e69f7754d 100644 --- a/airbyte-integrations/connectors/source-aws-cloudtrail/metadata.yaml +++ b/airbyte-integrations/connectors/source-aws-cloudtrail/metadata.yaml @@ -24,7 +24,7 @@ data: connectorSubtype: api connectorType: source definitionId: 6ff047c0-f5d5-4ce5-8c81-204a830fa7e1 - dockerImageTag: 1.0.16 + dockerImageTag: 1.0.17 dockerRepository: airbyte/source-aws-cloudtrail githubIssueLabel: source-aws-cloudtrail icon: aws-cloudtrail.svg diff --git a/airbyte-integrations/connectors/source-aws-cloudtrail/poetry.lock b/airbyte-integrations/connectors/source-aws-cloudtrail/poetry.lock index 91a8bda9c2540..392338d0d53e4 100644 --- a/airbyte-integrations/connectors/source-aws-cloudtrail/poetry.lock +++ b/airbyte-integrations/connectors/source-aws-cloudtrail/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -473,13 +473,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -490,7 +490,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -654,13 +654,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -668,6 +668,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1228,6 +1229,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1287,13 +1302,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-aws-cloudtrail/pyproject.toml b/airbyte-integrations/connectors/source-aws-cloudtrail/pyproject.toml index 8a5258ef18aa3..dae945b37489b 100644 --- a/airbyte-integrations/connectors/source-aws-cloudtrail/pyproject.toml +++ b/airbyte-integrations/connectors/source-aws-cloudtrail/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.0.16" +version = "1.0.17" name = "source-aws-cloudtrail" description = "Source implementation for aws-cloudtrail." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/aws-cloudtrail.md b/docs/integrations/sources/aws-cloudtrail.md index 7421343d4ca60..f371dbe7571e9 100644 --- a/docs/integrations/sources/aws-cloudtrail.md +++ b/docs/integrations/sources/aws-cloudtrail.md @@ -54,6 +54,7 @@ Please, follow this [steps](https://docs.aws.amazon.com/powershell/latest/usergu | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 1.0.17 | 2024-10-05 | [46498](https://github.com/airbytehq/airbyte/pull/46498) | Update dependencies | | 1.0.16 | 2024-09-28 | [46156](https://github.com/airbytehq/airbyte/pull/46156) | Update dependencies | | 1.0.15 | 2024-09-21 | [45819](https://github.com/airbytehq/airbyte/pull/45819) | Update dependencies | | 1.0.14 | 2024-09-14 | [45574](https://github.com/airbytehq/airbyte/pull/45574) | Update dependencies | From 628a4613514a3b3af5389a759794d1d938a3e995 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:12 +0300 Subject: [PATCH 050/379] =?UTF-8?q?=F0=9F=90=99=20source-commercetools:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46497)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-commercetools/metadata.yaml | 2 +- .../source-commercetools/poetry.lock | 35 +++++++++++++------ .../source-commercetools/pyproject.toml | 2 +- docs/integrations/sources/commercetools.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-commercetools/metadata.yaml b/airbyte-integrations/connectors/source-commercetools/metadata.yaml index b893658ec3693..3355525c2c184 100644 --- a/airbyte-integrations/connectors/source-commercetools/metadata.yaml +++ b/airbyte-integrations/connectors/source-commercetools/metadata.yaml @@ -15,7 +15,7 @@ data: connectorSubtype: api connectorType: source definitionId: 008b2e26-11a3-11ec-82a8-0242ac130003 - dockerImageTag: 0.2.18 + dockerImageTag: 0.2.19 dockerRepository: airbyte/source-commercetools githubIssueLabel: source-commercetools icon: commercetools.svg diff --git a/airbyte-integrations/connectors/source-commercetools/poetry.lock b/airbyte-integrations/connectors/source-commercetools/poetry.lock index 68a741ee8ec78..1aa5b5c1ab01e 100644 --- a/airbyte-integrations/connectors/source-commercetools/poetry.lock +++ b/airbyte-integrations/connectors/source-commercetools/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-commercetools/pyproject.toml b/airbyte-integrations/connectors/source-commercetools/pyproject.toml index 9e896b0c5f5fb..c30a5b0f91bdc 100644 --- a/airbyte-integrations/connectors/source-commercetools/pyproject.toml +++ b/airbyte-integrations/connectors/source-commercetools/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.18" +version = "0.2.19" name = "source-commercetools" description = "Source implementation for Commercetools." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/commercetools.md b/docs/integrations/sources/commercetools.md index bc6866a5c81a0..604799d1da56d 100644 --- a/docs/integrations/sources/commercetools.md +++ b/docs/integrations/sources/commercetools.md @@ -52,6 +52,7 @@ Commercetools has some [rate limit restrictions](https://docs.commercetools.com/ | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------ | +| 0.2.19 | 2024-10-05 | [46497](https://github.com/airbytehq/airbyte/pull/46497) | Update dependencies | | 0.2.18 | 2024-09-28 | [46103](https://github.com/airbytehq/airbyte/pull/46103) | Update dependencies | | 0.2.17 | 2024-09-21 | [45778](https://github.com/airbytehq/airbyte/pull/45778) | Update dependencies | | 0.2.16 | 2024-09-14 | [45552](https://github.com/airbytehq/airbyte/pull/45552) | Update dependencies | From e9140fa31067f8415a02a185a309ae3a32078f2c Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:15 +0300 Subject: [PATCH 051/379] =?UTF-8?q?=F0=9F=90=99=20source-braintree:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46496)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-braintree/metadata.yaml | 2 +- .../connectors/source-braintree/poetry.lock | 6 +++--- .../connectors/source-braintree/pyproject.toml | 2 +- docs/integrations/sources/braintree.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-braintree/metadata.yaml b/airbyte-integrations/connectors/source-braintree/metadata.yaml index 3949a7a3ed2e2..791162f9f3ef1 100644 --- a/airbyte-integrations/connectors/source-braintree/metadata.yaml +++ b/airbyte-integrations/connectors/source-braintree/metadata.yaml @@ -5,7 +5,7 @@ data: connectorSubtype: api connectorType: source definitionId: 63cea06f-1c75-458d-88fe-ad48c7cb27fd - dockerImageTag: 0.3.17 + dockerImageTag: 0.3.18 dockerRepository: airbyte/source-braintree documentationUrl: https://docs.airbyte.com/integrations/sources/braintree githubIssueLabel: source-braintree diff --git a/airbyte-integrations/connectors/source-braintree/poetry.lock b/airbyte-integrations/connectors/source-braintree/poetry.lock index 3e44b2717a010..1a00590f7ea31 100644 --- a/airbyte-integrations/connectors/source-braintree/poetry.lock +++ b/airbyte-integrations/connectors/source-braintree/poetry.lock @@ -91,13 +91,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-braintree/pyproject.toml b/airbyte-integrations/connectors/source-braintree/pyproject.toml index 1b4f6e7cd4676..aa110c43c396f 100644 --- a/airbyte-integrations/connectors/source-braintree/pyproject.toml +++ b/airbyte-integrations/connectors/source-braintree/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.3.17" +version = "0.3.18" name = "source-braintree" description = "Source implementation for Braintree." authors = ["Airbyte "] diff --git a/docs/integrations/sources/braintree.md b/docs/integrations/sources/braintree.md index 00adf6954cda9..36c47cb2f9f6e 100644 --- a/docs/integrations/sources/braintree.md +++ b/docs/integrations/sources/braintree.md @@ -72,6 +72,7 @@ The Braintree connector should not run into Braintree API limitations under norm | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------------------------- | +| 0.3.18 | 2024-10-05 | [46496](https://github.com/airbytehq/airbyte/pull/46496) | Update dependencies | | 0.3.17 | 2024-09-28 | [46180](https://github.com/airbytehq/airbyte/pull/46180) | Update dependencies | | 0.3.16 | 2024-09-21 | [45810](https://github.com/airbytehq/airbyte/pull/45810) | Update dependencies | | 0.3.15 | 2024-09-14 | [45555](https://github.com/airbytehq/airbyte/pull/45555) | Update dependencies | From 6a7b61591a22758f251e6f45385d780075ac7e05 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:18 +0300 Subject: [PATCH 052/379] =?UTF-8?q?=F0=9F=90=99=20source-rki-covid:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46495)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-rki-covid/metadata.yaml | 2 +- .../connectors/source-rki-covid/poetry.lock | 6 +++--- .../connectors/source-rki-covid/pyproject.toml | 2 +- docs/integrations/sources/rki-covid.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-rki-covid/metadata.yaml b/airbyte-integrations/connectors/source-rki-covid/metadata.yaml index f6900301545cd..4fc6f7d127e76 100644 --- a/airbyte-integrations/connectors/source-rki-covid/metadata.yaml +++ b/airbyte-integrations/connectors/source-rki-covid/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: d78e5de0-aa44-4744-aa4f-74c818ccfe19 - dockerImageTag: 0.1.21 + dockerImageTag: 0.1.22 dockerRepository: airbyte/source-rki-covid githubIssueLabel: source-rki-covid icon: rki.svg diff --git a/airbyte-integrations/connectors/source-rki-covid/poetry.lock b/airbyte-integrations/connectors/source-rki-covid/poetry.lock index 45c71fcab3eb8..ce10b819fdf7e 100644 --- a/airbyte-integrations/connectors/source-rki-covid/poetry.lock +++ b/airbyte-integrations/connectors/source-rki-covid/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-rki-covid/pyproject.toml b/airbyte-integrations/connectors/source-rki-covid/pyproject.toml index c77f1fccf3d4d..5bc1bfe370d30 100644 --- a/airbyte-integrations/connectors/source-rki-covid/pyproject.toml +++ b/airbyte-integrations/connectors/source-rki-covid/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.21" +version = "0.1.22" name = "source-rki-covid" description = "Source implementation for Rki Covid." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/rki-covid.md b/docs/integrations/sources/rki-covid.md index 7d70f4c08817c..db9a27cb28bce 100644 --- a/docs/integrations/sources/rki-covid.md +++ b/docs/integrations/sources/rki-covid.md @@ -56,6 +56,7 @@ Select start date | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------- | +| 0.1.22 | 2024-10-05 | [46495](https://github.com/airbytehq/airbyte/pull/46495) | Update dependencies | | 0.1.21 | 2024-09-28 | [46123](https://github.com/airbytehq/airbyte/pull/46123) | Update dependencies | | 0.1.20 | 2024-09-21 | [45833](https://github.com/airbytehq/airbyte/pull/45833) | Update dependencies | | 0.1.19 | 2024-09-14 | [45478](https://github.com/airbytehq/airbyte/pull/45478) | Update dependencies | From 083148282c09f38bbba4ee7f0079e0afa8316c61 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:20 +0300 Subject: [PATCH 053/379] =?UTF-8?q?=F0=9F=90=99=20source-hubspot:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46494)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-hubspot/metadata.yaml | 2 +- .../connectors/source-hubspot/poetry.lock | 35 +++++++++++++------ .../connectors/source-hubspot/pyproject.toml | 2 +- docs/integrations/sources/hubspot.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-hubspot/metadata.yaml b/airbyte-integrations/connectors/source-hubspot/metadata.yaml index 781d06aec2fd7..9d0040a8303bc 100644 --- a/airbyte-integrations/connectors/source-hubspot/metadata.yaml +++ b/airbyte-integrations/connectors/source-hubspot/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 36c891d9-4bd9-43ac-bad2-10e12756272c - dockerImageTag: 4.2.22 + dockerImageTag: 4.2.23 dockerRepository: airbyte/source-hubspot documentationUrl: https://docs.airbyte.com/integrations/sources/hubspot erdUrl: https://dbdocs.io/airbyteio/source-hubspot?view=relationships diff --git a/airbyte-integrations/connectors/source-hubspot/poetry.lock b/airbyte-integrations/connectors/source-hubspot/poetry.lock index 64dff8b3d585a..90ccf5017cd3f 100644 --- a/airbyte-integrations/connectors/source-hubspot/poetry.lock +++ b/airbyte-integrations/connectors/source-hubspot/poetry.lock @@ -129,13 +129,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -509,13 +509,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -526,7 +526,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -690,13 +690,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -704,6 +704,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1355,6 +1356,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-hubspot/pyproject.toml b/airbyte-integrations/connectors/source-hubspot/pyproject.toml index 39f775e02d2bc..1917f50e2e949 100644 --- a/airbyte-integrations/connectors/source-hubspot/pyproject.toml +++ b/airbyte-integrations/connectors/source-hubspot/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "4.2.22" +version = "4.2.23" name = "source-hubspot" description = "Source implementation for HubSpot." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/hubspot.md b/docs/integrations/sources/hubspot.md index 765db3686d048..2e9605bb3be7a 100644 --- a/docs/integrations/sources/hubspot.md +++ b/docs/integrations/sources/hubspot.md @@ -336,6 +336,7 @@ The connector is restricted by normal HubSpot [rate limitations](https://legacyd | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 4.2.23 | 2024-10-05 | [46494](https://github.com/airbytehq/airbyte/pull/46494) | Update dependencies | | 4.2.22 | 2024-09-28 | [46160](https://github.com/airbytehq/airbyte/pull/46160) | Update dependencies | | 4.2.21 | 2024-09-23 | [42688](https://github.com/airbytehq/airbyte/pull/44899) | Fix incremental search to use primary key as placeholder instead of lastModifiedDate | | 4.2.20 | 2024-09-21 | [45753](https://github.com/airbytehq/airbyte/pull/45753) | Update dependencies | From 5f6947fbca87305c579c76fa49756bf4cd774f03 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:23 +0300 Subject: [PATCH 054/379] =?UTF-8?q?=F0=9F=90=99=20source-hardcoded-records?= =?UTF-8?q?:=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46492)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-hardcoded-records/metadata.yaml | 2 +- .../source-hardcoded-records/poetry.lock | 205 ++++++++++-------- .../source-hardcoded-records/pyproject.toml | 2 +- .../integrations/sources/hardcoded-records.md | 1 + 4 files changed, 122 insertions(+), 88 deletions(-) diff --git a/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml b/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml index fa27b47a6b71b..9781d5f0e1c20 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml +++ b/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: api connectorType: source definitionId: 084124ab-22db-4019-b36d-630418541bf7 - dockerImageTag: 0.0.14 + dockerImageTag: 0.0.15 dockerRepository: airbyte/source-hardcoded-records documentationUrl: https://docs.airbyte.com/integrations/sources/hardcoded-records githubIssueLabel: source-hardcoded-records diff --git a/airbyte-integrations/connectors/source-hardcoded-records/poetry.lock b/airbyte-integrations/connectors/source-hardcoded-records/poetry.lock index 66bd4d0cea020..3e1cc14eff42b 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/poetry.lock +++ b/airbyte-integrations/connectors/source-hardcoded-records/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.7.5" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.7.5-py3-none-any.whl", hash = "sha256:57f1ba57f0ffdff384a2b1095143b527ab7320a4b2d9732faa2ea9b4b471e756"}, - {file = "airbyte_cdk-5.7.5.tar.gz", hash = "sha256:3a549fe4c987b900a08d8392a2910ab92c387406bb26ead2c48dc34e605ddb3b"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -26,7 +26,7 @@ jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" nltk = "3.8.1" orjson = ">=3.10.7,<4.0.0" -pandas = "2.2.0" +pandas = "2.2.2" pendulum = "<3.0.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" @@ -141,13 +141,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -520,13 +520,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -537,7 +537,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -712,13 +712,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -729,6 +729,7 @@ pydantic = [ {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, ] requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -826,47 +827,64 @@ twitter = ["twython"] [[package]] name = "numpy" -version = "1.26.4" +version = "2.1.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, ] [[package]] @@ -948,47 +966,47 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, - {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1013,6 +1031,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -1595,6 +1614,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "serpyco-rs" version = "1.11.0" diff --git a/airbyte-integrations/connectors/source-hardcoded-records/pyproject.toml b/airbyte-integrations/connectors/source-hardcoded-records/pyproject.toml index cf6014e3bae56..9ee5c56bd03cc 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/pyproject.toml +++ b/airbyte-integrations/connectors/source-hardcoded-records/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.0.14" +version = "0.0.15" name = "source-hardcoded-records" description = "Source implementation for hardcoded recprds." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/hardcoded-records.md b/docs/integrations/sources/hardcoded-records.md index 34d552cabe7e5..989bea36c0f21 100644 --- a/docs/integrations/sources/hardcoded-records.md +++ b/docs/integrations/sources/hardcoded-records.md @@ -149,6 +149,7 @@ None! | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-------------------------| +| 0.0.15 | 2024-10-05 | [46492](https://github.com/airbytehq/airbyte/pull/46492) | Update dependencies | | 0.0.14 | 2024-09-28 | [46200](https://github.com/airbytehq/airbyte/pull/46200) | Update dependencies | | 0.0.13 | 2024-09-21 | [45756](https://github.com/airbytehq/airbyte/pull/45756) | Update dependencies | | 0.0.12 | 2024-09-14 | [45496](https://github.com/airbytehq/airbyte/pull/45496) | Update dependencies | From bf8aa088265323e73cb37fdfc8970bef9ee47d42 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:26 +0300 Subject: [PATCH 055/379] =?UTF-8?q?=F0=9F=90=99=20source-salesloft:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46491)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-salesloft/metadata.yaml | 2 +- .../connectors/source-salesloft/poetry.lock | 35 +++++++++++++------ .../source-salesloft/pyproject.toml | 2 +- docs/integrations/sources/salesloft.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-salesloft/metadata.yaml b/airbyte-integrations/connectors/source-salesloft/metadata.yaml index 85a51a071eaf1..5bece014921fc 100644 --- a/airbyte-integrations/connectors/source-salesloft/metadata.yaml +++ b/airbyte-integrations/connectors/source-salesloft/metadata.yaml @@ -22,7 +22,7 @@ data: connectorSubtype: api connectorType: source definitionId: 41991d12-d4b5-439e-afd0-260a31d4c53f - dockerImageTag: 1.2.21 + dockerImageTag: 1.2.22 dockerRepository: airbyte/source-salesloft githubIssueLabel: source-salesloft icon: icon.svg diff --git a/airbyte-integrations/connectors/source-salesloft/poetry.lock b/airbyte-integrations/connectors/source-salesloft/poetry.lock index 00ef36b7eeea1..2fbd372f10dfc 100644 --- a/airbyte-integrations/connectors/source-salesloft/poetry.lock +++ b/airbyte-integrations/connectors/source-salesloft/poetry.lock @@ -117,13 +117,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -482,13 +482,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -499,7 +499,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -663,13 +663,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -677,6 +677,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1239,6 +1240,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-salesloft/pyproject.toml b/airbyte-integrations/connectors/source-salesloft/pyproject.toml index 4ec32cd6aac2d..fabda3c2c213c 100644 --- a/airbyte-integrations/connectors/source-salesloft/pyproject.toml +++ b/airbyte-integrations/connectors/source-salesloft/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.2.21" +version = "1.2.22" name = "source-salesloft" description = "Source implementation for Salesloft." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/salesloft.md b/docs/integrations/sources/salesloft.md index b6640b977fd80..5ede4e7e1bb2a 100644 --- a/docs/integrations/sources/salesloft.md +++ b/docs/integrations/sources/salesloft.md @@ -105,6 +105,7 @@ Salesloft has the [rate limits](hhttps://developers.salesloft.com/api.html#!/Top | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :---------------------------------------------------------------- | +| 1.2.22 | 2024-10-05 | [46491](https://github.com/airbytehq/airbyte/pull/46491) | Update dependencies | | 1.2.21 | 2024-09-28 | [46186](https://github.com/airbytehq/airbyte/pull/46186) | Update dependencies | | 1.2.20 | 2024-09-21 | [45726](https://github.com/airbytehq/airbyte/pull/45726) | Update dependencies | | 1.2.19 | 2024-09-14 | [45500](https://github.com/airbytehq/airbyte/pull/45500) | Update dependencies | From c6330b8a099fb72e224c5148c10857d7ccb4aea9 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:29 +0300 Subject: [PATCH 056/379] =?UTF-8?q?=F0=9F=90=99=20source-unleash:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46490)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-unleash/metadata.yaml | 2 +- airbyte-integrations/connectors/source-unleash/poetry.lock | 6 +++--- .../connectors/source-unleash/pyproject.toml | 2 +- docs/integrations/sources/unleash.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-unleash/metadata.yaml b/airbyte-integrations/connectors/source-unleash/metadata.yaml index df32851694020..b956f107c94c1 100644 --- a/airbyte-integrations/connectors/source-unleash/metadata.yaml +++ b/airbyte-integrations/connectors/source-unleash/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: f77914a1-442b-4195-9355-8810a1f4ed3f - dockerImageTag: 0.1.17 + dockerImageTag: 0.1.18 dockerRepository: airbyte/source-unleash githubIssueLabel: source-unleash icon: unleash.svg diff --git a/airbyte-integrations/connectors/source-unleash/poetry.lock b/airbyte-integrations/connectors/source-unleash/poetry.lock index f46b9f785e722..4db559b53ed78 100644 --- a/airbyte-integrations/connectors/source-unleash/poetry.lock +++ b/airbyte-integrations/connectors/source-unleash/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-unleash/pyproject.toml b/airbyte-integrations/connectors/source-unleash/pyproject.toml index 173e7231bcacb..986eedbce7c2b 100644 --- a/airbyte-integrations/connectors/source-unleash/pyproject.toml +++ b/airbyte-integrations/connectors/source-unleash/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.17" +version = "0.1.18" name = "source-unleash" description = "Source implementation for Unleash." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/unleash.md b/docs/integrations/sources/unleash.md index c6581d17d803f..cd8c3853f70b5 100644 --- a/docs/integrations/sources/unleash.md +++ b/docs/integrations/sources/unleash.md @@ -58,6 +58,7 @@ The API key that you are assigned is rate-limited. | Version | Date | Pull Request | Subject | | :------ | :--------- | :-------------------------------------------------------- | :------------------------------------ | +| 0.1.18 | 2024-10-05 | [46490](https://github.com/airbytehq/airbyte/pull/46490) | Update dependencies | | 0.1.17 | 2024-09-28 | [46113](https://github.com/airbytehq/airbyte/pull/46113) | Update dependencies | | 0.1.16 | 2024-09-21 | [45817](https://github.com/airbytehq/airbyte/pull/45817) | Update dependencies | | 0.1.15 | 2024-09-14 | [45295](https://github.com/airbytehq/airbyte/pull/45295) | Update dependencies | From 5eed6a6451619fb4ec1ea839c9ffb2c1d02a6adc Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:31 +0300 Subject: [PATCH 057/379] =?UTF-8?q?=F0=9F=90=99=20source-amplitude:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46489)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-amplitude/metadata.yaml | 2 +- .../connectors/source-amplitude/poetry.lock | 35 +++++++++++++------ .../source-amplitude/pyproject.toml | 2 +- docs/integrations/sources/amplitude.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-amplitude/metadata.yaml b/airbyte-integrations/connectors/source-amplitude/metadata.yaml index ed9fa6c444a93..a40cb4503c2f4 100644 --- a/airbyte-integrations/connectors/source-amplitude/metadata.yaml +++ b/airbyte-integrations/connectors/source-amplitude/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: fa9f58c6-2d03-4237-aaa4-07d75e0c1396 - dockerImageTag: 0.6.9 + dockerImageTag: 0.6.10 dockerRepository: airbyte/source-amplitude documentationUrl: https://docs.airbyte.com/integrations/sources/amplitude githubIssueLabel: source-amplitude diff --git a/airbyte-integrations/connectors/source-amplitude/poetry.lock b/airbyte-integrations/connectors/source-amplitude/poetry.lock index 12a4bf845ed24..58a9b2a41b931 100644 --- a/airbyte-integrations/connectors/source-amplitude/poetry.lock +++ b/airbyte-integrations/connectors/source-amplitude/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -510,13 +510,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -527,7 +527,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -702,13 +702,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -716,6 +716,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1479,6 +1480,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-amplitude/pyproject.toml b/airbyte-integrations/connectors/source-amplitude/pyproject.toml index eec01e9ed054f..d142e6801c832 100644 --- a/airbyte-integrations/connectors/source-amplitude/pyproject.toml +++ b/airbyte-integrations/connectors/source-amplitude/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.6.9" +version = "0.6.10" name = "source-amplitude" description = "Source implementation for Amplitude." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/amplitude.md b/docs/integrations/sources/amplitude.md index 2327c598c44bb..81d779bec5b90 100644 --- a/docs/integrations/sources/amplitude.md +++ b/docs/integrations/sources/amplitude.md @@ -58,6 +58,7 @@ The Amplitude connector ideally should gracefully handle Amplitude API limitatio | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------------------- | +| 0.6.10 | 2024-10-05 | [46489](https://github.com/airbytehq/airbyte/pull/46489) | Update dependencies | | 0.6.9 | 2024-09-28 | [46121](https://github.com/airbytehq/airbyte/pull/46121) | Update dependencies | | 0.6.8 | 2024-09-21 | [45732](https://github.com/airbytehq/airbyte/pull/45732) | Update dependencies | | 0.6.7 | 2024-09-14 | [45501](https://github.com/airbytehq/airbyte/pull/45501) | Update dependencies | From 49e016b99409a0042ad90af8e9ee487b380b4cb1 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:34 +0300 Subject: [PATCH 058/379] =?UTF-8?q?=F0=9F=90=99=20source-alpha-vantage:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46488)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-alpha-vantage/metadata.yaml | 2 +- .../source-alpha-vantage/poetry.lock | 35 +++++++++++++------ .../source-alpha-vantage/pyproject.toml | 2 +- docs/integrations/sources/alpha-vantage.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-alpha-vantage/metadata.yaml b/airbyte-integrations/connectors/source-alpha-vantage/metadata.yaml index bbd916b061309..b4d454104a332 100644 --- a/airbyte-integrations/connectors/source-alpha-vantage/metadata.yaml +++ b/airbyte-integrations/connectors/source-alpha-vantage/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: db385323-9333-4fec-bec3-9e0ca9326c90 - dockerImageTag: 0.1.20 + dockerImageTag: 0.1.21 dockerRepository: airbyte/source-alpha-vantage githubIssueLabel: source-alpha-vantage icon: alpha-vantage.svg diff --git a/airbyte-integrations/connectors/source-alpha-vantage/poetry.lock b/airbyte-integrations/connectors/source-alpha-vantage/poetry.lock index 116b0d191d745..b5f0e47b6b507 100644 --- a/airbyte-integrations/connectors/source-alpha-vantage/poetry.lock +++ b/airbyte-integrations/connectors/source-alpha-vantage/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-alpha-vantage/pyproject.toml b/airbyte-integrations/connectors/source-alpha-vantage/pyproject.toml index d33cf1b0c4f90..fab8e7776ab07 100644 --- a/airbyte-integrations/connectors/source-alpha-vantage/pyproject.toml +++ b/airbyte-integrations/connectors/source-alpha-vantage/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.20" +version = "0.1.21" name = "source-alpha-vantage" description = "Source implementation for Alpha Vantage." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/alpha-vantage.md b/docs/integrations/sources/alpha-vantage.md index 9b7c36711aae6..63fc4dccfcb76 100644 --- a/docs/integrations/sources/alpha-vantage.md +++ b/docs/integrations/sources/alpha-vantage.md @@ -61,6 +61,7 @@ The following fields are required fields for the connector to work: | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------------------- | +| 0.1.21 | 2024-10-05 | [46488](https://github.com/airbytehq/airbyte/pull/46488) | Update dependencies | | 0.1.20 | 2024-09-28 | [46152](https://github.com/airbytehq/airbyte/pull/46152) | Update dependencies | | 0.1.19 | 2024-09-21 | [45750](https://github.com/airbytehq/airbyte/pull/45750) | Update dependencies | | 0.1.18 | 2024-09-14 | [45554](https://github.com/airbytehq/airbyte/pull/45554) | Update dependencies | From 53139e0aaeea0ce35fe584579309340f6ba412f6 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:36 +0300 Subject: [PATCH 059/379] =?UTF-8?q?=F0=9F=90=99=20source-pipedrive:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46487)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-pipedrive/metadata.yaml | 2 +- .../connectors/source-pipedrive/poetry.lock | 35 +++++++++++++------ .../source-pipedrive/pyproject.toml | 2 +- docs/integrations/sources/pipedrive.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-pipedrive/metadata.yaml b/airbyte-integrations/connectors/source-pipedrive/metadata.yaml index b38908fb72b94..11f5e3c68ad44 100644 --- a/airbyte-integrations/connectors/source-pipedrive/metadata.yaml +++ b/airbyte-integrations/connectors/source-pipedrive/metadata.yaml @@ -17,7 +17,7 @@ data: connectorSubtype: api connectorType: source definitionId: d8286229-c680-4063-8c59-23b9b391c700 - dockerImageTag: 2.2.21 + dockerImageTag: 2.2.22 dockerRepository: airbyte/source-pipedrive documentationUrl: https://docs.airbyte.com/integrations/sources/pipedrive githubIssueLabel: source-pipedrive diff --git a/airbyte-integrations/connectors/source-pipedrive/poetry.lock b/airbyte-integrations/connectors/source-pipedrive/poetry.lock index c0553210a0a5a..f561335a40858 100644 --- a/airbyte-integrations/connectors/source-pipedrive/poetry.lock +++ b/airbyte-integrations/connectors/source-pipedrive/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1234,6 +1235,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-pipedrive/pyproject.toml b/airbyte-integrations/connectors/source-pipedrive/pyproject.toml index 22e20a957a7bd..298c256fed7bb 100644 --- a/airbyte-integrations/connectors/source-pipedrive/pyproject.toml +++ b/airbyte-integrations/connectors/source-pipedrive/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.2.21" +version = "2.2.22" name = "source-pipedrive" description = "Source implementation for Pipedrive." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/pipedrive.md b/docs/integrations/sources/pipedrive.md index 5c1365b079e11..ca4660ed5a211 100644 --- a/docs/integrations/sources/pipedrive.md +++ b/docs/integrations/sources/pipedrive.md @@ -112,6 +112,7 @@ The Pipedrive connector will gracefully handle rate limits. For more information | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------- | +| 2.2.22 | 2024-10-05 | [46487](https://github.com/airbytehq/airbyte/pull/46487) | Update dependencies | | 2.2.21 | 2024-09-28 | [46132](https://github.com/airbytehq/airbyte/pull/46132) | Update dependencies | | 2.2.20 | 2024-09-21 | [45748](https://github.com/airbytehq/airbyte/pull/45748) | Update dependencies | | 2.2.19 | 2024-09-14 | [45556](https://github.com/airbytehq/airbyte/pull/45556) | Update dependencies | From c16113edc0fd3ead3bcf14ae00bc868a9d194beb Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:39 +0300 Subject: [PATCH 060/379] =?UTF-8?q?=F0=9F=90=99=20source-zendesk-sunshine:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46486)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-zendesk-sunshine/metadata.yaml | 2 +- .../connectors/source-zendesk-sunshine/poetry.lock | 6 +++--- .../connectors/source-zendesk-sunshine/pyproject.toml | 2 +- docs/integrations/sources/zendesk-sunshine.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-zendesk-sunshine/metadata.yaml b/airbyte-integrations/connectors/source-zendesk-sunshine/metadata.yaml index e3861f3f449f5..f5f3083d32d59 100644 --- a/airbyte-integrations/connectors/source-zendesk-sunshine/metadata.yaml +++ b/airbyte-integrations/connectors/source-zendesk-sunshine/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 325e0640-e7b3-4e24-b823-3361008f603f - dockerImageTag: 0.2.22 + dockerImageTag: 0.2.23 dockerRepository: airbyte/source-zendesk-sunshine documentationUrl: https://docs.airbyte.com/integrations/sources/zendesk-sunshine githubIssueLabel: source-zendesk-sunshine diff --git a/airbyte-integrations/connectors/source-zendesk-sunshine/poetry.lock b/airbyte-integrations/connectors/source-zendesk-sunshine/poetry.lock index f46b9f785e722..4db559b53ed78 100644 --- a/airbyte-integrations/connectors/source-zendesk-sunshine/poetry.lock +++ b/airbyte-integrations/connectors/source-zendesk-sunshine/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-zendesk-sunshine/pyproject.toml b/airbyte-integrations/connectors/source-zendesk-sunshine/pyproject.toml index a879c5b029402..c546bb36dcd5a 100644 --- a/airbyte-integrations/connectors/source-zendesk-sunshine/pyproject.toml +++ b/airbyte-integrations/connectors/source-zendesk-sunshine/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.22" +version = "0.2.23" name = "source-zendesk-sunshine" description = "Source implementation for Zendesk Sunshine." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/zendesk-sunshine.md b/docs/integrations/sources/zendesk-sunshine.md index f83d64ce47846..3b6e6a0eeb0eb 100644 --- a/docs/integrations/sources/zendesk-sunshine.md +++ b/docs/integrations/sources/zendesk-sunshine.md @@ -68,6 +68,7 @@ We recommend creating a restricted, read-only key specifically for Airbyte acces | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.2.23 | 2024-10-05 | [46486](https://github.com/airbytehq/airbyte/pull/46486) | Update dependencies | | 0.2.22 | 2024-09-28 | [46102](https://github.com/airbytehq/airbyte/pull/46102) | Update dependencies | | 0.2.21 | 2024-09-21 | [45769](https://github.com/airbytehq/airbyte/pull/45769) | Update dependencies | | 0.2.20 | 2024-09-14 | [45546](https://github.com/airbytehq/airbyte/pull/45546) | Update dependencies | From 0ee49e55c25103a155bc3b4fe9002d3385716824 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:42 +0300 Subject: [PATCH 061/379] =?UTF-8?q?=F0=9F=90=99=20source-instatus:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46484)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-instatus/metadata.yaml | 2 +- .../connectors/source-instatus/poetry.lock | 35 +++++++++++++------ .../connectors/source-instatus/pyproject.toml | 2 +- docs/integrations/sources/instatus.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-instatus/metadata.yaml b/airbyte-integrations/connectors/source-instatus/metadata.yaml index 74394bfeee931..9a0f65cef2c99 100644 --- a/airbyte-integrations/connectors/source-instatus/metadata.yaml +++ b/airbyte-integrations/connectors/source-instatus/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: 1901024c-0249-45d0-bcac-31a954652927 - dockerImageTag: 0.1.20 + dockerImageTag: 0.1.21 dockerRepository: airbyte/source-instatus githubIssueLabel: source-instatus icon: instatus.svg diff --git a/airbyte-integrations/connectors/source-instatus/poetry.lock b/airbyte-integrations/connectors/source-instatus/poetry.lock index 68a741ee8ec78..1aa5b5c1ab01e 100644 --- a/airbyte-integrations/connectors/source-instatus/poetry.lock +++ b/airbyte-integrations/connectors/source-instatus/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-instatus/pyproject.toml b/airbyte-integrations/connectors/source-instatus/pyproject.toml index a9a439dc72728..572c7a29dc591 100644 --- a/airbyte-integrations/connectors/source-instatus/pyproject.toml +++ b/airbyte-integrations/connectors/source-instatus/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.20" +version = "0.1.21" name = "source-instatus" description = "Source implementation for Instatus." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/instatus.md b/docs/integrations/sources/instatus.md index 98f5380773679..150945f8a0ae7 100644 --- a/docs/integrations/sources/instatus.md +++ b/docs/integrations/sources/instatus.md @@ -67,6 +67,7 @@ The Instatus source connector supports the following [sync modes](https://docs.a | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :---------------------- | +| 0.1.21 | 2024-10-05 | [46484](https://github.com/airbytehq/airbyte/pull/46484) | Update dependencies | | 0.1.20 | 2024-09-28 | [46115](https://github.com/airbytehq/airbyte/pull/46115) | Update dependencies | | 0.1.19 | 2024-09-21 | [45731](https://github.com/airbytehq/airbyte/pull/45731) | Update dependencies | | 0.1.18 | 2024-09-14 | [45514](https://github.com/airbytehq/airbyte/pull/45514) | Update dependencies | From e69d1f5917b0ba228b969871f46e6b5151b8984c Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:44 +0300 Subject: [PATCH 062/379] =?UTF-8?q?=F0=9F=90=99=20destination-milvus:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46483)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-milvus/metadata.yaml | 2 +- .../connectors/destination-milvus/poetry.lock | 244 ++++++++++-------- .../destination-milvus/pyproject.toml | 2 +- docs/integrations/destinations/milvus.md | 1 + 4 files changed, 135 insertions(+), 114 deletions(-) diff --git a/airbyte-integrations/connectors/destination-milvus/metadata.yaml b/airbyte-integrations/connectors/destination-milvus/metadata.yaml index 38244af39c34e..14160c57d3058 100644 --- a/airbyte-integrations/connectors/destination-milvus/metadata.yaml +++ b/airbyte-integrations/connectors/destination-milvus/metadata.yaml @@ -22,7 +22,7 @@ data: connectorSubtype: vectorstore connectorType: destination definitionId: 65de8962-48c9-11ee-be56-0242ac120002 - dockerImageTag: 0.0.34 + dockerImageTag: 0.0.35 dockerRepository: airbyte/destination-milvus githubIssueLabel: destination-milvus icon: milvus.svg diff --git a/airbyte-integrations/connectors/destination-milvus/poetry.lock b/airbyte-integrations/connectors/destination-milvus/poetry.lock index 2dfcf67c1af80..52695d129ee0b 100644 --- a/airbyte-integrations/connectors/destination-milvus/poetry.lock +++ b/airbyte-integrations/connectors/destination-milvus/poetry.lock @@ -2,113 +2,113 @@ [[package]] name = "aiohappyeyeballs" -version = "2.4.2" +version = "2.4.3" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "aiohappyeyeballs-2.4.2-py3-none-any.whl", hash = "sha256:8522691d9a154ba1145b157d6d5c15e5c692527ce6a53c5e5f9876977f6dab2f"}, - {file = "aiohappyeyeballs-2.4.2.tar.gz", hash = "sha256:4ca893e6c5c1f5bf3888b04cb5a3bee24995398efef6e0b9f747b5e89d84fd74"}, + {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, + {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, ] [[package]] name = "aiohttp" -version = "3.10.7" +version = "3.10.9" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df23cb35bec54b73fba371c7c904994433651458acf8bfb7c84464fef5834c0a"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33a6d023b207ad8227e607814c0020b42c53e01a66004fc0f2555e1a4941282"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d23df9f01c8945d03cffcdd9ba9bfd88aa21ac567a39d0ac4d0c80499ed0d23"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ddf2c8c9ec6bb3f5c057e5c95605adb8e3f1e2d999e8801736f448aff29280e"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d09e40e2ae6723af487ffde019055d0b6ce4eae0749fcfe9de624b61f1af6ec"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc1f4e0f4b1ae9289b4d0cc3bf5d6d55176c38ef1d41484550f3f9a0a78bedae"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636e3efb0bb024817cefa1ef86d678d1a73eb210ae162aff4234214060011ff5"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bab2544f09cd1db154c105e03b1c941032fd7237da5da184595771999ca90daa"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:431852e77cd72f60a0278f8cf557c8e568cd856f755a4b6c5232c7d8c6343d2e"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6bae913cbb183cd34863905088ef26a17c75332bd6bdd451ee8bf158c987cf19"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:278cd430ba93a157ad1faf490fdd6051801085ffa31a27762133472555e56888"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e083e29b6db8e34a507cd678f89eab3ae5f307486ea6010c6473436d3769628d"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:150deb28d5302cfec89fc31ea4bce774df06f5c03d95519f7588ca6517a472d7"}, - {file = "aiohttp-3.10.7-cp310-cp310-win32.whl", hash = "sha256:e19337d6552af197ebb8c886daea0b938ae34eff776c1fa914ad433f6db3970f"}, - {file = "aiohttp-3.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:bff7ef30cb6fc186ea6dda9e19d6105b1c213e3a3f759b5a23c271c778027260"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1378164474a3866f7684a95efede1bee4016cd104bc10bf885e492c4459b715a"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:87d0e52b2905dbc1aeffcbf0611fa82e27874764332c11b984293a4b91cc8e9f"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2783754bfcee0b13b8e55932b418cf8984c17099fd1b37341d4696447d0c328"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d26881d98274ef0dbd4f069f383e5e90eb6e42e957289db14c47186386832ce"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e152296b2c50417445eacdb2353d3c10e702f6593aa774277510fb7761304302"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf1cd9bfd598899396bdb8a4dc5234144a77e482e7489972b7956cf66e272872"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871c2bf68ecc55056e5e3b0ae5929a1149f41c4255bbf99b1f858005f63360d1"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd8a0a0ef895e4c3f1afd31c2a6f89d68a94baacdbe2eb9bf90ac54b997cf99b"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99c11c5d632fa2222cc5805105841f6f3c40df116368fde40fbd71f8b14ea692"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8fbf91559400fe1a98d84af36f5a66aa59c359ac3cb113b17d304ced6a4601b4"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:73f151a1e21369a84d56b91a209590c23270c847463029fdcbda710516217644"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:80531f6f4fff5a1f7e495afbc4aff5c4230b605f26d56c40ecad27a269665608"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:164068b338c52dfe44f3490c70ef7b33c0e73d441c89f599ae2d93f7dcf3e395"}, - {file = "aiohttp-3.10.7-cp311-cp311-win32.whl", hash = "sha256:a84fe27904dbb43a236532d6d841d6132200b7bb53ba73d0300b0b586ceab6cc"}, - {file = "aiohttp-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:beda1abd7b23d489a5b66a46eba5a9e0db58e4ad91d68697409eeabda343fb9d"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:68120c12c98bfc0e024ef1279be5f41327a54a5094710adc970ecc9724b91871"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e1a9b4026b6fe41adde784e308b0ad0d6a8b5cc9062f9c349125fd57149bc8a9"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85d8a1d716516ef92c769eadb020600d27223899018ef8d07c09c117001cc7d5"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87652147515031dafc1b37c9c3c42fbe9e2697af6264ec26080a6fe603cc5196"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c6140d6cbf8eebbcf1528364ce0b26d0a95788111659cfc008fba3a12fc874f"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:342600665e74eea20b3286045ebeb0aa2f9cececf2eb0acc6f6817205b112b29"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b7794b3d23451e355b4a87959943125afff8dd31d8059651c2734de12f9e7f2"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d8d12d6a192f7b9f8a335cad8634a4f081d8319b75dd42257a1a3e557848d00"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b5d8c94fd23f41007799ec657e18661f9f8c5b566a1e4fe944e3514e505a6b49"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a1fe407bec2f14a3d79ec92aa767b930857a6782589ea87ac76fd8081dea3dab"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7ed4435dcf507ef2de5b4be64276933eb19c78e5c7d00ca376fcd9a67d0139a0"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c161f9e353f291d23069a8f67180fd52c76d72d4671f4f53602ea9ac29f47d50"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:caf083bf26b1e286ab1929dbd8d8cab6230160576a0ed5e3bfb3487bb19474c2"}, - {file = "aiohttp-3.10.7-cp312-cp312-win32.whl", hash = "sha256:4296dd120e7e9728625eef1091039aff1a454c7147913d47839876c94b202226"}, - {file = "aiohttp-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:10d19997f2f8d49d53b76163b71e263bb7b23f48041d0d4050a43445a0052c35"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:582536d3d7f95a6d4d072d2326dd03eeb1549c1cc86d02c9bcec71899f4c66f2"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:365eff442a47b13e0e12c37240a6f75940ebee0b7943af43c84d5b43643fc80c"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2e0083e6f9f9cb0a0bedd694782e7fb8a54eb4de40e1743d9bb526f1c1eea88"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da5a03cbe746f182f7b61e119dde24d388cf77965fea320bc8aba61b75039d06"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b210484fccff00cafa9bd8abedea8749b6d975df8c8e21c82d92bb25403db85"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b75cfa1e5fc7c87fc5f9de7124bb039b898791bb87207d2107bed5e3509670f"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b4aa816cd3ab876f96ce8c6986648392137cbd6feddbf4189322515f34e1f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3915944c87c9bf488db4ca1ae6edca40b5bc77c4c2cf2f49b69886bc47b97db1"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd658aeaa65fb99fcc3b93882bb33cbd600501d40473488aec163a981d7b05ee"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aeea07c89a5a53463c70957feb85d4b846982c0f054b521fc44f52862e7871cf"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f8aaa0bc8e39352684982b378ba3f7e32e78a746da433aaeceb7e93d7fdf9ce3"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f25a79ac4ac0bd94cf283d3e86e6f3ec78fc39e2de6949b902c342148b7b5f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fc3538efae4e4df222a563559f8766234f49e845e8dbb2dd477eb8f3fd97242"}, - {file = "aiohttp-3.10.7-cp313-cp313-win32.whl", hash = "sha256:eea89c47ae8d592f7563f4355132fe844b5e2f8660292deacc292253bef291cd"}, - {file = "aiohttp-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:7ce1b54feaaf264e28a4474e13635d302a59aafb720b18c3c2885b8f35ce5040"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7a372f9ea521741667cec2ef4a64419448030411af2e844dfa8dbbb8074baea6"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:feff2170b23921a526f31d78c8f76bbb9cde825e78035286d8571ce0c81901ab"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa42c4e78925a438a6f7df0d9b165d29cdc0a44fc5ce838d6c293a0161a2bd9a"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ced77f4dd0c4f0107ee96f8df162b984470ac9f94ef93dd44dba62838fd85cde"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13085c0129a906b001d87dd43e247155f6c76820d98147c079b746e8a0665b17"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92100555f86b314ed840ed61d937fc30ca39ad453c9aa9020414a3cce955d9b"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77bc82d7b10f377957ba8e99bb1b13d946e9e9038fe89ba0888ad0b12e60c9c0"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6052d92b47b8cf3736b1f01ac8f83cf02f188ef7542848055a5e227db0e16cb"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:82fa5fb983922b03f2b08d1140550c68b50313305115639e19b13489c284c30c"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:0246659d9a54a23a83f11842bdd58f335a1370aa66b376eeae16b7cf29009dde"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:befc2f0794bc4bbbb1f8d0e245d32ee13331205b58f54910789e9e78d2a6fbf5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:9cd67e5c84cb75a471b2e35f3fb0da52e6d359d1794d3465a87052fb240e64b5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:af10344fb1ee195b2cd5840b61d8c8121b16d3b3baa2da5a86cf4001a7e5bd98"}, - {file = "aiohttp-3.10.7-cp38-cp38-win32.whl", hash = "sha256:81d3fc1b187656b6b465ed4ed4c9858f16ff2d9864da6225d80b8018abd7739b"}, - {file = "aiohttp-3.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:b6fb89edeadfd69df75f8cea97c3533805a9960cc56034ad296abe9b18771842"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:318824b98a2bdf84e9a21d413737a3c4f27bbad0a9ce16141488f631dbffb9b2"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63c9de949e05a5f729aecba6bf4b3d5403846caf546ea5020f8b9bf315bd8f12"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0245e1a71f3503b01d2c304529779a70277ccc0fe9847b48d437363de6e4336e"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14dbfb208ffe3388e0770fd23bf9114cc933c10bb1dba35b538f3c9d685334d8"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f6b014f2176d2774b759b8e2951af4a613385ebcc08841cb5c0ca6d5dee74ee"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcfabf9338fed009fd9e11bf496a927ea67b1ce15d34847cb0a98aa6f042b989"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171f1f5364a0ef5873480e6fddc3870ee37f1dfe216fa67507bbd4c91306f110"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87e243b1df27ff685ab08228b7a938c0530beb60ad3dea7554da1554d46c9ad4"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fee4d2246b091b7e252cd5bcdbd4362fa21c3cc6a445fef54de793731546ab24"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bfa8c8af8c92e3d6c1eff02cf5127f62c1e7564e7b0f1a9767035f81a2e6bb20"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f44f09b67a458400215d9efedb9cfb5e3256dbeb2cc2da68e4592b7b36bac0c9"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b5f8270946777d6971c27479cb6e7f54578be960928a8922cb59130e856d8484"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e8ccaa99871303323bd2cda120043039729497642da5c6f53e066b19f73d9df8"}, - {file = "aiohttp-3.10.7-cp39-cp39-win32.whl", hash = "sha256:ce7c12bfbb1579e81cdf2e7db4338f8c768da2493aa0db60a858a542d551563c"}, - {file = "aiohttp-3.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:189979c7e9d8f40236534760daf5b41d2026d5ebabdf913e771d9b6bfbc992af"}, - {file = "aiohttp-3.10.7.tar.gz", hash = "sha256:18c72a69ba20713f26fa40932cac17437b0c1d25edff2e27437a204c12275bd9"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8b3fb28a9ac8f2558760d8e637dbf27aef1e8b7f1d221e8669a1074d1a266bb2"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91aa966858593f64c8a65cdefa3d6dc8fe3c2768b159da84c1ddbbb2c01ab4ef"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63649309da83277f06a15bbdc2a54fbe75efb92caa2c25bb57ca37762789c746"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e7fabedb3fe06933f47f1538df7b3a8d78e13d7167195f51ca47ee12690373"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c070430fda1a550a1c3a4c2d7281d3b8cfc0c6715f616e40e3332201a253067"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d0a4901b27272ae54e42067bc4b9a90e619a690b4dc43ea5950eb3070afc32"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fec5fac7aea6c060f317f07494961236434928e6f4374e170ef50b3001e14581"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:172ad884bb61ad31ed7beed8be776eb17e7fb423f1c1be836d5cb357a096bf12"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d646fdd74c25bbdd4a055414f0fe32896c400f38ffbdfc78c68e62812a9e0257"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e86260b76786c28acf0b5fe31c8dca4c2add95098c709b11e8c35b424ebd4f5b"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d7cafc11d70fdd8801abfc2ff276744ae4cb39d8060b6b542c7e44e5f2cfc2"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc262c3df78c8ff6020c782d9ce02e4bcffe4900ad71c0ecdad59943cba54442"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:482c85cf3d429844396d939b22bc2a03849cb9ad33344689ad1c85697bcba33a"}, + {file = "aiohttp-3.10.9-cp310-cp310-win32.whl", hash = "sha256:aeebd3061f6f1747c011e1d0b0b5f04f9f54ad1a2ca183e687e7277bef2e0da2"}, + {file = "aiohttp-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:fa430b871220dc62572cef9c69b41e0d70fcb9d486a4a207a5de4c1f25d82593"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16e6a51d8bc96b77f04a6764b4ad03eeef43baa32014fce71e882bd71302c7e4"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8bd9125dd0cc8ebd84bff2be64b10fdba7dc6fd7be431b5eaf67723557de3a31"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dcf354661f54e6a49193d0b5653a1b011ba856e0b7a76bda2c33e4c6892f34ea"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42775de0ca04f90c10c5c46291535ec08e9bcc4756f1b48f02a0657febe89b10"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d1e4185c5d7187684d41ebb50c9aeaaaa06ca1875f4c57593071b0409d2444"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2695c61cf53a5d4345a43d689f37fc0f6d3a2dc520660aec27ec0f06288d1f9"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a3f063b41cc06e8d0b3fcbbfc9c05b7420f41287e0cd4f75ce0a1f3d80729e6"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d37f4718002863b82c6f391c8efd4d3a817da37030a29e2682a94d2716209de"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2746d8994ebca1bdc55a1e998feff4e94222da709623bb18f6e5cfec8ec01baf"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6f3c6648aa123bcd73d6f26607d59967b607b0da8ffcc27d418a4b59f4c98c7c"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:558b3d223fd631ad134d89adea876e7fdb4c93c849ef195049c063ada82b7d08"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4e6cb75f8ddd9c2132d00bc03c9716add57f4beff1263463724f6398b813e7eb"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:608cecd8d58d285bfd52dbca5b6251ca8d6ea567022c8a0eaae03c2589cd9af9"}, + {file = "aiohttp-3.10.9-cp311-cp311-win32.whl", hash = "sha256:36d4fba838be5f083f5490ddd281813b44d69685db910907636bc5dca6322316"}, + {file = "aiohttp-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:8be1a65487bdfc285bd5e9baf3208c2132ca92a9b4020e9f27df1b16fab998a9"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4fd16b30567c5b8e167923be6e027eeae0f20cf2b8a26b98a25115f28ad48ee0"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40ff5b7660f903dc587ed36ef08a88d46840182d9d4b5694e7607877ced698a1"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4edc3fd701e2b9a0d605a7b23d3de4ad23137d23fc0dbab726aa71d92f11aaaf"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e525b69ee8a92c146ae5b4da9ecd15e518df4d40003b01b454ad694a27f498b5"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5002a02c17fcfd796d20bac719981d2fca9c006aac0797eb8f430a58e9d12431"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4ceeae2fb8cabdd1b71c82bfdd39662473d3433ec95b962200e9e752fb70d0"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6e395c3d1f773cf0651cd3559e25182eb0c03a2777b53b4575d8adc1149c6e9"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbdb8def5268f3f9cd753a265756f49228a20ed14a480d151df727808b4531dd"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f82ace0ec57c94aaf5b0e118d4366cff5889097412c75aa14b4fd5fc0c44ee3e"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6ebdc3b3714afe1b134b3bbeb5f745eed3ecbcff92ab25d80e4ef299e83a5465"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ca09414003c0e96a735daa1f071f7d7ed06962ef4fa29ceb6c80d06696d900"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1298b854fd31d0567cbb916091be9d3278168064fca88e70b8468875ef9ff7e7"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60ad5b8a7452c0f5645c73d4dad7490afd6119d453d302cd5b72b678a85d6044"}, + {file = "aiohttp-3.10.9-cp312-cp312-win32.whl", hash = "sha256:1a0ee6c0d590c917f1b9629371fce5f3d3f22c317aa96fbdcce3260754d7ea21"}, + {file = "aiohttp-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:c46131c6112b534b178d4e002abe450a0a29840b61413ac25243f1291613806a"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2bd9f3eac515c16c4360a6a00c38119333901b8590fe93c3257a9b536026594d"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8cc0d13b4e3b1362d424ce3f4e8c79e1f7247a00d792823ffd640878abf28e56"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba1a599255ad6a41022e261e31bc2f6f9355a419575b391f9655c4d9e5df5ff5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:776e9f3c9b377fcf097c4a04b241b15691e6662d850168642ff976780609303c"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8debb45545ad95b58cc16c3c1cc19ad82cffcb106db12b437885dbee265f0ab5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2555e4949c8d8782f18ef20e9d39730d2656e218a6f1a21a4c4c0b56546a02e"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54dc329cd44f7f7883a9f4baaefe686e8b9662e2c6c184ea15cceee587d8d69"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e709d6ac598c5416f879bb1bae3fd751366120ac3fa235a01de763537385d036"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:17c272cfe7b07a5bb0c6ad3f234e0c336fb53f3bf17840f66bd77b5815ab3d16"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0c21c82df33b264216abffff9f8370f303dab65d8eee3767efbbd2734363f677"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9331dd34145ff105177855017920dde140b447049cd62bb589de320fd6ddd582"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ac3196952c673822ebed8871cf8802e17254fff2a2ed4835d9c045d9b88c5ec7"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c33fa6e10bb7ed262e3ff03cc69d52869514f16558db0626a7c5c61dde3c29f"}, + {file = "aiohttp-3.10.9-cp313-cp313-win32.whl", hash = "sha256:a14e4b672c257a6b94fe934ee62666bacbc8e45b7876f9dd9502d0f0fe69db16"}, + {file = "aiohttp-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:a35ed3d03910785f7d9d6f5381f0c24002b2b888b298e6f941b2fc94c5055fcd"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f392ef50e22c31fa49b5a46af7f983fa3f118f3eccb8522063bee8bfa6755f8"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d1f5c9169e26db6a61276008582d945405b8316aae2bb198220466e68114a0f5"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9d10d10ec27c0d46ddaecc3c5598c4db9ce4e6398ca872cdde0525765caa2f"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97273a52d7f89a75b11ec386f786d3da7723d7efae3034b4dda79f6f093edc1"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d271f770b52e32236d945911b2082f9318e90ff835d45224fa9e28374303f729"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7003f33f5f7da1eb02f0446b0f8d2ccf57d253ca6c2e7a5732d25889da82b517"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6e00c8a92e7663ed2be6fcc08a2997ff06ce73c8080cd0df10cc0321a3168d7"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a61df62966ce6507aafab24e124e0c3a1cfbe23c59732987fc0fd0d71daa0b88"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:60555211a006d26e1a389222e3fab8cd379f28e0fbf7472ee55b16c6c529e3a6"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d15a29424e96fad56dc2f3abed10a89c50c099f97d2416520c7a543e8fddf066"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:a19caae0d670771ea7854ca30df76f676eb47e0fd9b2ee4392d44708f272122d"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:99f9678bf0e2b1b695e8028fedac24ab6770937932eda695815d5a6618c37e04"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2914caa46054f3b5ff910468d686742ff8cff54b8a67319d75f5d5945fd0a13d"}, + {file = "aiohttp-3.10.9-cp38-cp38-win32.whl", hash = "sha256:0bc059ecbce835630e635879f5f480a742e130d9821fbe3d2f76610a6698ee25"}, + {file = "aiohttp-3.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:e883b61b75ca6efc2541fcd52a5c8ccfe288b24d97e20ac08fdf343b8ac672ea"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fcd546782d03181b0b1d20b43d612429a90a68779659ba8045114b867971ab71"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:85711eec2d875cd88c7eb40e734c4ca6d9ae477d6f26bd2b5bb4f7f60e41b156"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02d1d6610588bcd743fae827bd6f2e47e0d09b346f230824b4c6fb85c6065f9c"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3668d0c2a4d23fb136a753eba42caa2c0abbd3d9c5c87ee150a716a16c6deec1"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7c071235a47d407b0e93aa6262b49422dbe48d7d8566e1158fecc91043dd948"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac74e794e3aee92ae8f571bfeaa103a141e409863a100ab63a253b1c53b707eb"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbf94d4a0447705b7775417ca8bb8086cc5482023a6e17cdc8f96d0b1b5aba6"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb0b2d5d51f96b6cc19e6ab46a7b684be23240426ae951dcdac9639ab111b45e"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e83dfefb4f7d285c2d6a07a22268344a97d61579b3e0dce482a5be0251d672ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f0a44bb40b6aaa4fb9a5c1ee07880570ecda2065433a96ccff409c9c20c1624a"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c2b627d3c8982691b06d89d31093cee158c30629fdfebe705a91814d49b554f8"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:03690541e4cc866eef79626cfa1ef4dd729c5c1408600c8cb9e12e1137eed6ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad3675c126f2a95bde637d162f8231cff6bc0bc9fbe31bd78075f9ff7921e322"}, + {file = "aiohttp-3.10.9-cp39-cp39-win32.whl", hash = "sha256:1321658f12b6caffafdc35cfba6c882cb014af86bef4e78c125e7e794dfb927b"}, + {file = "aiohttp-3.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:9fdf5c839bf95fc67be5794c780419edb0dbef776edcfc6c2e5e2ffd5ee755fa"}, + {file = "aiohttp-3.10.9.tar.gz", hash = "sha256:143b0026a9dab07a05ad2dd9e46aa859bffdd6348ddc5967b42161168c24f857"}, ] [package.dependencies] @@ -257,13 +257,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -994,13 +994,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -1011,7 +1011,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -1434,13 +1434,13 @@ extended-testing = ["beautifulsoup4 (>=4.12.3,<5.0.0)", "lxml (>=4.9.3,<6.0)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -1448,6 +1448,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -2662,6 +2663,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.3.7" @@ -2710,6 +2725,11 @@ files = [ {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12"}, + {file = "scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, @@ -2977,13 +2997,13 @@ blobfile = ["blobfile (>=2)"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -3008,13 +3028,13 @@ telegram = ["requests"] [[package]] name = "types-pytz" -version = "2024.2.0.20240913" +version = "2024.2.0.20241003" description = "Typing stubs for pytz" optional = false python-versions = ">=3.8" files = [ - {file = "types-pytz-2024.2.0.20240913.tar.gz", hash = "sha256:4433b5df4a6fc587bbed41716d86a5ba5d832b4378e506f40d34bc9c81df2c24"}, - {file = "types_pytz-2024.2.0.20240913-py3-none-any.whl", hash = "sha256:a1eebf57ebc6e127a99d2fa2ba0a88d2b173784ef9b3defcc2004ab6855a44df"}, + {file = "types-pytz-2024.2.0.20241003.tar.gz", hash = "sha256:575dc38f385a922a212bac00a7d6d2e16e141132a3c955078f4a4fd13ed6cb44"}, + {file = "types_pytz-2024.2.0.20241003-py3-none-any.whl", hash = "sha256:3e22df1336c0c6ad1d29163c8fda82736909eb977281cb823c57f8bae07118b7"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-milvus/pyproject.toml b/airbyte-integrations/connectors/destination-milvus/pyproject.toml index 97455275df72e..2ec9dbc43f1b6 100644 --- a/airbyte-integrations/connectors/destination-milvus/pyproject.toml +++ b/airbyte-integrations/connectors/destination-milvus/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-destination-milvus" -version = "0.0.34" +version = "0.0.35" description = "Airbyte destination implementation for Milvus." authors = ["Airbyte "] license = "MIT" diff --git a/docs/integrations/destinations/milvus.md b/docs/integrations/destinations/milvus.md index 6d94cfe741457..787b089cb9f1a 100644 --- a/docs/integrations/destinations/milvus.md +++ b/docs/integrations/destinations/milvus.md @@ -116,6 +116,7 @@ vector_store.similarity_search("test") | Version | Date | Pull Request | Subject | |:--------| :--------- | :-------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.0.35 | 2024-10-05 | [46483](https://github.com/airbytehq/airbyte/pull/46483) | Update dependencies | | 0.0.34 | 2024-09-28 | [46165](https://github.com/airbytehq/airbyte/pull/46165) | Update dependencies | | 0.0.33 | 2024-09-21 | [45802](https://github.com/airbytehq/airbyte/pull/45802) | Update dependencies | | 0.0.32 | 2024-09-14 | [45573](https://github.com/airbytehq/airbyte/pull/45573) | Update dependencies | From 5a38d8d4f38134e7ed347f74b925901aaa234059 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:47 +0300 Subject: [PATCH 063/379] =?UTF-8?q?=F0=9F=90=99=20source-pinterest:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46482)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-pinterest/metadata.yaml | 2 +- .../connectors/source-pinterest/poetry.lock | 35 +++++++++++++------ .../source-pinterest/pyproject.toml | 2 +- docs/integrations/sources/pinterest.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-pinterest/metadata.yaml b/airbyte-integrations/connectors/source-pinterest/metadata.yaml index f7af62e45e29d..bb8a0ed3bf77b 100644 --- a/airbyte-integrations/connectors/source-pinterest/metadata.yaml +++ b/airbyte-integrations/connectors/source-pinterest/metadata.yaml @@ -5,7 +5,7 @@ data: connectorSubtype: api connectorType: source definitionId: 5cb7e5fe-38c2-11ec-8d3d-0242ac130003 - dockerImageTag: 2.0.18 + dockerImageTag: 2.0.19 dockerRepository: airbyte/source-pinterest connectorBuildOptions: baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 diff --git a/airbyte-integrations/connectors/source-pinterest/poetry.lock b/airbyte-integrations/connectors/source-pinterest/poetry.lock index f6bfa0eed65cd..7e5bd3c536b1a 100644 --- a/airbyte-integrations/connectors/source-pinterest/poetry.lock +++ b/airbyte-integrations/connectors/source-pinterest/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -510,13 +510,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -527,7 +527,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -702,13 +702,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -716,6 +716,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1479,6 +1480,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "responses" version = "0.13.4" diff --git a/airbyte-integrations/connectors/source-pinterest/pyproject.toml b/airbyte-integrations/connectors/source-pinterest/pyproject.toml index 76cfdb13891f7..fb334dbe78bcd 100644 --- a/airbyte-integrations/connectors/source-pinterest/pyproject.toml +++ b/airbyte-integrations/connectors/source-pinterest/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.0.18" +version = "2.0.19" name = "source-pinterest" description = "Source implementation for Pinterest." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/pinterest.md b/docs/integrations/sources/pinterest.md index 852dc1d86df97..8d31ccc3826b5 100644 --- a/docs/integrations/sources/pinterest.md +++ b/docs/integrations/sources/pinterest.md @@ -203,6 +203,7 @@ The connector is restricted by the Pinterest | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 2.0.19 | 2024-10-05 | [46482](https://github.com/airbytehq/airbyte/pull/46482) | Update dependencies | | 2.0.18 | 2024-09-28 | [46104](https://github.com/airbytehq/airbyte/pull/46104) | Update dependencies | | 2.0.17 | 2024-09-21 | [45838](https://github.com/airbytehq/airbyte/pull/45838) | Update dependencies | | 2.0.16 | 2024-09-14 | [45566](https://github.com/airbytehq/airbyte/pull/45566) | Update dependencies | From 56527d7935f5580b009a266fb0cb99a2ed037ea9 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:49 +0300 Subject: [PATCH 064/379] =?UTF-8?q?=F0=9F=90=99=20source-okta:=20run=20up-?= =?UTF-8?q?to-date=20pipeline=20[2024-10-05]=20(#46481)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-okta/metadata.yaml | 2 +- .../connectors/source-okta/poetry.lock | 35 +++++++++++++------ .../connectors/source-okta/pyproject.toml | 2 +- docs/integrations/sources/okta.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-okta/metadata.yaml b/airbyte-integrations/connectors/source-okta/metadata.yaml index e407b8871a07e..1cd89b876d925 100644 --- a/airbyte-integrations/connectors/source-okta/metadata.yaml +++ b/airbyte-integrations/connectors/source-okta/metadata.yaml @@ -19,7 +19,7 @@ data: connectorSubtype: api connectorType: source definitionId: 1d4fdb25-64fc-4569-92da-fcdca79a8372 - dockerImageTag: 0.3.7 + dockerImageTag: 0.3.8 dockerRepository: airbyte/source-okta githubIssueLabel: source-okta icon: icon.svg diff --git a/airbyte-integrations/connectors/source-okta/poetry.lock b/airbyte-integrations/connectors/source-okta/poetry.lock index e46523eb0ce07..f1d2982b82f4b 100644 --- a/airbyte-integrations/connectors/source-okta/poetry.lock +++ b/airbyte-integrations/connectors/source-okta/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-okta/pyproject.toml b/airbyte-integrations/connectors/source-okta/pyproject.toml index 7694b873b5987..1c2b59d55abea 100644 --- a/airbyte-integrations/connectors/source-okta/pyproject.toml +++ b/airbyte-integrations/connectors/source-okta/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.3.7" +version = "0.3.8" name = "source-okta" description = "Source implementation for okta." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/okta.md b/docs/integrations/sources/okta.md index c6e7b84c40816..71ac5ea9b90bf 100644 --- a/docs/integrations/sources/okta.md +++ b/docs/integrations/sources/okta.md @@ -86,6 +86,7 @@ The connector is restricted by normal Okta [requests limitation](https://develop | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-------------------------------------------------------------------------------| +| 0.3.8 | 2024-10-05 | [46481](https://github.com/airbytehq/airbyte/pull/46481) | Update dependencies | | 0.3.7 | 2024-09-28 | [46148](https://github.com/airbytehq/airbyte/pull/46148) | Update dependencies | | 0.3.6 | 2024-09-21 | [45763](https://github.com/airbytehq/airbyte/pull/45763) | Update dependencies | | 0.3.5 | 2024-09-14 | [45543](https://github.com/airbytehq/airbyte/pull/45543) | Update dependencies | From 8ad4964873bca8d053c9efed9f772bd5bd801797 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:53 +0300 Subject: [PATCH 065/379] =?UTF-8?q?=F0=9F=90=99=20source-typeform:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46479)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-typeform/metadata.yaml | 2 +- .../connectors/source-typeform/poetry.lock | 35 +++++++++++++------ .../connectors/source-typeform/pyproject.toml | 2 +- docs/integrations/sources/typeform.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-typeform/metadata.yaml b/airbyte-integrations/connectors/source-typeform/metadata.yaml index 6e5692b57ad3f..ca1707b3127f2 100644 --- a/airbyte-integrations/connectors/source-typeform/metadata.yaml +++ b/airbyte-integrations/connectors/source-typeform/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: e7eff203-90bf-43e5-a240-19ea3056c474 - dockerImageTag: 1.3.16 + dockerImageTag: 1.3.17 dockerRepository: airbyte/source-typeform documentationUrl: https://docs.airbyte.com/integrations/sources/typeform githubIssueLabel: source-typeform diff --git a/airbyte-integrations/connectors/source-typeform/poetry.lock b/airbyte-integrations/connectors/source-typeform/poetry.lock index a5a095395a7a8..38696524a5080 100644 --- a/airbyte-integrations/connectors/source-typeform/poetry.lock +++ b/airbyte-integrations/connectors/source-typeform/poetry.lock @@ -117,13 +117,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -482,13 +482,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -499,7 +499,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -663,13 +663,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -677,6 +677,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1239,6 +1240,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-typeform/pyproject.toml b/airbyte-integrations/connectors/source-typeform/pyproject.toml index 138768449dc13..116ac4aadb361 100644 --- a/airbyte-integrations/connectors/source-typeform/pyproject.toml +++ b/airbyte-integrations/connectors/source-typeform/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.3.16" +version = "1.3.17" name = "source-typeform" description = "Source implementation for Typeform." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/typeform.md b/docs/integrations/sources/typeform.md index d2c9609568d32..fca2ab9759270 100644 --- a/docs/integrations/sources/typeform.md +++ b/docs/integrations/sources/typeform.md @@ -101,6 +101,7 @@ API rate limits \(2 requests per second\): [https://developer.typeform.com/get-s | Version | Date | Pull Request | Subject | |:--------|:-----------| :------------------------------------------------------- |:------------------------------------------------------------------------------------------------| +| 1.3.17 | 2024-10-05 | [46479](https://github.com/airbytehq/airbyte/pull/46479) | Update dependencies | | 1.3.16 | 2024-09-28 | [46170](https://github.com/airbytehq/airbyte/pull/46170) | Update dependencies | | 1.3.15 | 2024-09-21 | [45495](https://github.com/airbytehq/airbyte/pull/45495) | Update dependencies | | 1.3.14 | 2024-09-07 | [45269](https://github.com/airbytehq/airbyte/pull/45269) | Update dependencies | From efa0ee0b52df501649a8a09e026cafd098a62739 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:18:55 +0300 Subject: [PATCH 066/379] =?UTF-8?q?=F0=9F=90=99=20source-chargebee:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46478)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-chargebee/metadata.yaml | 2 +- .../connectors/source-chargebee/poetry.lock | 29 ++++++++++++++----- .../source-chargebee/pyproject.toml | 2 +- docs/integrations/sources/chargebee.md | 1 + 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/source-chargebee/metadata.yaml b/airbyte-integrations/connectors/source-chargebee/metadata.yaml index 00db96ccd37a3..1ba86ec81e8b0 100644 --- a/airbyte-integrations/connectors/source-chargebee/metadata.yaml +++ b/airbyte-integrations/connectors/source-chargebee/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 686473f1-76d9-4994-9cc7-9b13da46147c - dockerImageTag: 0.6.14 + dockerImageTag: 0.6.15 dockerRepository: airbyte/source-chargebee documentationUrl: https://docs.airbyte.com/integrations/sources/chargebee githubIssueLabel: source-chargebee diff --git a/airbyte-integrations/connectors/source-chargebee/poetry.lock b/airbyte-integrations/connectors/source-chargebee/poetry.lock index b34cdeebd3242..1bd7cc1bcb861 100644 --- a/airbyte-integrations/connectors/source-chargebee/poetry.lock +++ b/airbyte-integrations/connectors/source-chargebee/poetry.lock @@ -1,14 +1,14 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "5.9.0" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.9.0-py3-none-any.whl", hash = "sha256:aad20eaa6741a1fdaa25d7aef87a32d9b2562a3f8797281d70af23d7cc871a6c"}, - {file = "airbyte_cdk-5.9.0.tar.gz", hash = "sha256:57280fab00308b44e089d685d7e3b2ffa646d2d7df5cc39e4f78e9a8c8d8ca76"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -726,13 +726,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -740,6 +740,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1637,6 +1638,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "serpyco-rs" version = "1.11.0" diff --git a/airbyte-integrations/connectors/source-chargebee/pyproject.toml b/airbyte-integrations/connectors/source-chargebee/pyproject.toml index c17478665e5a8..a8a3b5170912e 100644 --- a/airbyte-integrations/connectors/source-chargebee/pyproject.toml +++ b/airbyte-integrations/connectors/source-chargebee/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.6.14" +version = "0.6.15" name = "source-chargebee" description = "Source implementation for Chargebee." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/chargebee.md b/docs/integrations/sources/chargebee.md index 4d6294f4f375b..2bcf8cb3b40f2 100644 --- a/docs/integrations/sources/chargebee.md +++ b/docs/integrations/sources/chargebee.md @@ -104,6 +104,7 @@ The Chargebee connector should not run into [Chargebee API](https://apidocs.char | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------| +| 0.6.15 | 2024-10-05 | [46478](https://github.com/airbytehq/airbyte/pull/46478) | Update dependencies | | 0.6.14 | 2024-10-03 | [46343](https://github.com/airbytehq/airbyte/pull/46343) | Added `incremental dependency` for substreams with `Incremental` parent streams | | 0.6.13 | 2024-10-01 | [46294](https://github.com/airbytehq/airbyte/pull/46294) | Update CDK version to `^5`, increased the `maxSecondsBetweenMessages` to 6 hours | | 0.6.12 | 2024-09-28 | [46169](https://github.com/airbytehq/airbyte/pull/46169) | Update dependencies | From 996c0dcc320abedee73f8f8d881dd892ae98823e Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:00 +0300 Subject: [PATCH 067/379] =?UTF-8?q?=F0=9F=90=99=20source-google-analytics-?= =?UTF-8?q?data-api:=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#4647?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metadata.yaml | 2 +- .../poetry.lock | 35 +++++++++++++------ .../pyproject.toml | 2 +- .../sources/google-analytics-data-api.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/metadata.yaml b/airbyte-integrations/connectors/source-google-analytics-data-api/metadata.yaml index c13df2216d826..faf79bc18baa3 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/metadata.yaml +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/metadata.yaml @@ -12,7 +12,7 @@ data: connectorSubtype: api connectorType: source definitionId: 3cc2eafd-84aa-4dca-93af-322d9dfeec1a - dockerImageTag: 2.5.10 + dockerImageTag: 2.5.11 dockerRepository: airbyte/source-google-analytics-data-api documentationUrl: https://docs.airbyte.com/integrations/sources/google-analytics-data-api githubIssueLabel: source-google-analytics-data-api diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/poetry.lock b/airbyte-integrations/connectors/source-google-analytics-data-api/poetry.lock index b94d7e7ef2da9..e6694e5a55da4 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/poetry.lock +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/poetry.lock @@ -129,13 +129,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -508,13 +508,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -525,7 +525,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -689,13 +689,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -703,6 +703,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1454,6 +1455,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-google-analytics-data-api/pyproject.toml b/airbyte-integrations/connectors/source-google-analytics-data-api/pyproject.toml index a7fba1206c303..9798d71e8c696 100644 --- a/airbyte-integrations/connectors/source-google-analytics-data-api/pyproject.toml +++ b/airbyte-integrations/connectors/source-google-analytics-data-api/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.5.10" +version = "2.5.11" name = "source-google-analytics-data-api" description = "Source implementation for Google Analytics Data Api." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/google-analytics-data-api.md b/docs/integrations/sources/google-analytics-data-api.md index b200bf5ad2773..32e1ce3ba6397 100644 --- a/docs/integrations/sources/google-analytics-data-api.md +++ b/docs/integrations/sources/google-analytics-data-api.md @@ -272,6 +272,7 @@ The Google Analytics connector is subject to Google Analytics Data API quotas. P | Version | Date | Pull Request | Subject | |:--------|:-----------| :------------------------------------------------------- |:---------------------------------------------------------------------------------------| +| 2.5.11 | 2024-10-05 | [46475](https://github.com/airbytehq/airbyte/pull/46475) | Update dependencies | | 2.5.10 | 2024-09-28 | [46158](https://github.com/airbytehq/airbyte/pull/46158) | Update dependencies | | 2.5.9 | 2024-09-21 | [45773](https://github.com/airbytehq/airbyte/pull/45773) | Update dependencies | | 2.5.8 | 2024-09-14 | [45503](https://github.com/airbytehq/airbyte/pull/45503) | Update dependencies | From d9d3f44a61d019aa5ed07c796df0ad1623750a13 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:02 +0300 Subject: [PATCH 068/379] =?UTF-8?q?=F0=9F=90=99=20destination-pinecone:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46474)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-pinecone/metadata.yaml | 2 +- .../destination-pinecone/poetry.lock | 256 ++++++++++-------- .../destination-pinecone/pyproject.toml | 2 +- docs/integrations/destinations/pinecone.md | 1 + 4 files changed, 147 insertions(+), 114 deletions(-) diff --git a/airbyte-integrations/connectors/destination-pinecone/metadata.yaml b/airbyte-integrations/connectors/destination-pinecone/metadata.yaml index 3a85ea3d434ec..c4a8f32aeab97 100644 --- a/airbyte-integrations/connectors/destination-pinecone/metadata.yaml +++ b/airbyte-integrations/connectors/destination-pinecone/metadata.yaml @@ -13,7 +13,7 @@ data: connectorSubtype: vectorstore connectorType: destination definitionId: 3d2b6f84-7f0d-4e3f-a5e5-7c7d4b50eabd - dockerImageTag: 0.1.24 + dockerImageTag: 0.1.25 dockerRepository: airbyte/destination-pinecone documentationUrl: https://docs.airbyte.com/integrations/destinations/pinecone githubIssueLabel: destination-pinecone diff --git a/airbyte-integrations/connectors/destination-pinecone/poetry.lock b/airbyte-integrations/connectors/destination-pinecone/poetry.lock index 7772be561288c..7042cb5d5e4ae 100644 --- a/airbyte-integrations/connectors/destination-pinecone/poetry.lock +++ b/airbyte-integrations/connectors/destination-pinecone/poetry.lock @@ -2,113 +2,113 @@ [[package]] name = "aiohappyeyeballs" -version = "2.4.2" +version = "2.4.3" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "aiohappyeyeballs-2.4.2-py3-none-any.whl", hash = "sha256:8522691d9a154ba1145b157d6d5c15e5c692527ce6a53c5e5f9876977f6dab2f"}, - {file = "aiohappyeyeballs-2.4.2.tar.gz", hash = "sha256:4ca893e6c5c1f5bf3888b04cb5a3bee24995398efef6e0b9f747b5e89d84fd74"}, + {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, + {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, ] [[package]] name = "aiohttp" -version = "3.10.7" +version = "3.10.9" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df23cb35bec54b73fba371c7c904994433651458acf8bfb7c84464fef5834c0a"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33a6d023b207ad8227e607814c0020b42c53e01a66004fc0f2555e1a4941282"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d23df9f01c8945d03cffcdd9ba9bfd88aa21ac567a39d0ac4d0c80499ed0d23"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ddf2c8c9ec6bb3f5c057e5c95605adb8e3f1e2d999e8801736f448aff29280e"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d09e40e2ae6723af487ffde019055d0b6ce4eae0749fcfe9de624b61f1af6ec"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc1f4e0f4b1ae9289b4d0cc3bf5d6d55176c38ef1d41484550f3f9a0a78bedae"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636e3efb0bb024817cefa1ef86d678d1a73eb210ae162aff4234214060011ff5"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bab2544f09cd1db154c105e03b1c941032fd7237da5da184595771999ca90daa"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:431852e77cd72f60a0278f8cf557c8e568cd856f755a4b6c5232c7d8c6343d2e"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6bae913cbb183cd34863905088ef26a17c75332bd6bdd451ee8bf158c987cf19"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:278cd430ba93a157ad1faf490fdd6051801085ffa31a27762133472555e56888"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e083e29b6db8e34a507cd678f89eab3ae5f307486ea6010c6473436d3769628d"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:150deb28d5302cfec89fc31ea4bce774df06f5c03d95519f7588ca6517a472d7"}, - {file = "aiohttp-3.10.7-cp310-cp310-win32.whl", hash = "sha256:e19337d6552af197ebb8c886daea0b938ae34eff776c1fa914ad433f6db3970f"}, - {file = "aiohttp-3.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:bff7ef30cb6fc186ea6dda9e19d6105b1c213e3a3f759b5a23c271c778027260"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1378164474a3866f7684a95efede1bee4016cd104bc10bf885e492c4459b715a"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:87d0e52b2905dbc1aeffcbf0611fa82e27874764332c11b984293a4b91cc8e9f"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2783754bfcee0b13b8e55932b418cf8984c17099fd1b37341d4696447d0c328"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d26881d98274ef0dbd4f069f383e5e90eb6e42e957289db14c47186386832ce"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e152296b2c50417445eacdb2353d3c10e702f6593aa774277510fb7761304302"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf1cd9bfd598899396bdb8a4dc5234144a77e482e7489972b7956cf66e272872"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871c2bf68ecc55056e5e3b0ae5929a1149f41c4255bbf99b1f858005f63360d1"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd8a0a0ef895e4c3f1afd31c2a6f89d68a94baacdbe2eb9bf90ac54b997cf99b"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99c11c5d632fa2222cc5805105841f6f3c40df116368fde40fbd71f8b14ea692"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8fbf91559400fe1a98d84af36f5a66aa59c359ac3cb113b17d304ced6a4601b4"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:73f151a1e21369a84d56b91a209590c23270c847463029fdcbda710516217644"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:80531f6f4fff5a1f7e495afbc4aff5c4230b605f26d56c40ecad27a269665608"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:164068b338c52dfe44f3490c70ef7b33c0e73d441c89f599ae2d93f7dcf3e395"}, - {file = "aiohttp-3.10.7-cp311-cp311-win32.whl", hash = "sha256:a84fe27904dbb43a236532d6d841d6132200b7bb53ba73d0300b0b586ceab6cc"}, - {file = "aiohttp-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:beda1abd7b23d489a5b66a46eba5a9e0db58e4ad91d68697409eeabda343fb9d"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:68120c12c98bfc0e024ef1279be5f41327a54a5094710adc970ecc9724b91871"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e1a9b4026b6fe41adde784e308b0ad0d6a8b5cc9062f9c349125fd57149bc8a9"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85d8a1d716516ef92c769eadb020600d27223899018ef8d07c09c117001cc7d5"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87652147515031dafc1b37c9c3c42fbe9e2697af6264ec26080a6fe603cc5196"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c6140d6cbf8eebbcf1528364ce0b26d0a95788111659cfc008fba3a12fc874f"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:342600665e74eea20b3286045ebeb0aa2f9cececf2eb0acc6f6817205b112b29"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b7794b3d23451e355b4a87959943125afff8dd31d8059651c2734de12f9e7f2"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d8d12d6a192f7b9f8a335cad8634a4f081d8319b75dd42257a1a3e557848d00"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b5d8c94fd23f41007799ec657e18661f9f8c5b566a1e4fe944e3514e505a6b49"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a1fe407bec2f14a3d79ec92aa767b930857a6782589ea87ac76fd8081dea3dab"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7ed4435dcf507ef2de5b4be64276933eb19c78e5c7d00ca376fcd9a67d0139a0"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c161f9e353f291d23069a8f67180fd52c76d72d4671f4f53602ea9ac29f47d50"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:caf083bf26b1e286ab1929dbd8d8cab6230160576a0ed5e3bfb3487bb19474c2"}, - {file = "aiohttp-3.10.7-cp312-cp312-win32.whl", hash = "sha256:4296dd120e7e9728625eef1091039aff1a454c7147913d47839876c94b202226"}, - {file = "aiohttp-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:10d19997f2f8d49d53b76163b71e263bb7b23f48041d0d4050a43445a0052c35"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:582536d3d7f95a6d4d072d2326dd03eeb1549c1cc86d02c9bcec71899f4c66f2"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:365eff442a47b13e0e12c37240a6f75940ebee0b7943af43c84d5b43643fc80c"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2e0083e6f9f9cb0a0bedd694782e7fb8a54eb4de40e1743d9bb526f1c1eea88"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da5a03cbe746f182f7b61e119dde24d388cf77965fea320bc8aba61b75039d06"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b210484fccff00cafa9bd8abedea8749b6d975df8c8e21c82d92bb25403db85"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b75cfa1e5fc7c87fc5f9de7124bb039b898791bb87207d2107bed5e3509670f"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b4aa816cd3ab876f96ce8c6986648392137cbd6feddbf4189322515f34e1f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3915944c87c9bf488db4ca1ae6edca40b5bc77c4c2cf2f49b69886bc47b97db1"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd658aeaa65fb99fcc3b93882bb33cbd600501d40473488aec163a981d7b05ee"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aeea07c89a5a53463c70957feb85d4b846982c0f054b521fc44f52862e7871cf"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f8aaa0bc8e39352684982b378ba3f7e32e78a746da433aaeceb7e93d7fdf9ce3"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f25a79ac4ac0bd94cf283d3e86e6f3ec78fc39e2de6949b902c342148b7b5f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fc3538efae4e4df222a563559f8766234f49e845e8dbb2dd477eb8f3fd97242"}, - {file = "aiohttp-3.10.7-cp313-cp313-win32.whl", hash = "sha256:eea89c47ae8d592f7563f4355132fe844b5e2f8660292deacc292253bef291cd"}, - {file = "aiohttp-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:7ce1b54feaaf264e28a4474e13635d302a59aafb720b18c3c2885b8f35ce5040"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7a372f9ea521741667cec2ef4a64419448030411af2e844dfa8dbbb8074baea6"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:feff2170b23921a526f31d78c8f76bbb9cde825e78035286d8571ce0c81901ab"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa42c4e78925a438a6f7df0d9b165d29cdc0a44fc5ce838d6c293a0161a2bd9a"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ced77f4dd0c4f0107ee96f8df162b984470ac9f94ef93dd44dba62838fd85cde"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13085c0129a906b001d87dd43e247155f6c76820d98147c079b746e8a0665b17"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92100555f86b314ed840ed61d937fc30ca39ad453c9aa9020414a3cce955d9b"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77bc82d7b10f377957ba8e99bb1b13d946e9e9038fe89ba0888ad0b12e60c9c0"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6052d92b47b8cf3736b1f01ac8f83cf02f188ef7542848055a5e227db0e16cb"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:82fa5fb983922b03f2b08d1140550c68b50313305115639e19b13489c284c30c"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:0246659d9a54a23a83f11842bdd58f335a1370aa66b376eeae16b7cf29009dde"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:befc2f0794bc4bbbb1f8d0e245d32ee13331205b58f54910789e9e78d2a6fbf5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:9cd67e5c84cb75a471b2e35f3fb0da52e6d359d1794d3465a87052fb240e64b5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:af10344fb1ee195b2cd5840b61d8c8121b16d3b3baa2da5a86cf4001a7e5bd98"}, - {file = "aiohttp-3.10.7-cp38-cp38-win32.whl", hash = "sha256:81d3fc1b187656b6b465ed4ed4c9858f16ff2d9864da6225d80b8018abd7739b"}, - {file = "aiohttp-3.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:b6fb89edeadfd69df75f8cea97c3533805a9960cc56034ad296abe9b18771842"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:318824b98a2bdf84e9a21d413737a3c4f27bbad0a9ce16141488f631dbffb9b2"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63c9de949e05a5f729aecba6bf4b3d5403846caf546ea5020f8b9bf315bd8f12"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0245e1a71f3503b01d2c304529779a70277ccc0fe9847b48d437363de6e4336e"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14dbfb208ffe3388e0770fd23bf9114cc933c10bb1dba35b538f3c9d685334d8"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f6b014f2176d2774b759b8e2951af4a613385ebcc08841cb5c0ca6d5dee74ee"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcfabf9338fed009fd9e11bf496a927ea67b1ce15d34847cb0a98aa6f042b989"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171f1f5364a0ef5873480e6fddc3870ee37f1dfe216fa67507bbd4c91306f110"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87e243b1df27ff685ab08228b7a938c0530beb60ad3dea7554da1554d46c9ad4"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fee4d2246b091b7e252cd5bcdbd4362fa21c3cc6a445fef54de793731546ab24"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bfa8c8af8c92e3d6c1eff02cf5127f62c1e7564e7b0f1a9767035f81a2e6bb20"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f44f09b67a458400215d9efedb9cfb5e3256dbeb2cc2da68e4592b7b36bac0c9"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b5f8270946777d6971c27479cb6e7f54578be960928a8922cb59130e856d8484"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e8ccaa99871303323bd2cda120043039729497642da5c6f53e066b19f73d9df8"}, - {file = "aiohttp-3.10.7-cp39-cp39-win32.whl", hash = "sha256:ce7c12bfbb1579e81cdf2e7db4338f8c768da2493aa0db60a858a542d551563c"}, - {file = "aiohttp-3.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:189979c7e9d8f40236534760daf5b41d2026d5ebabdf913e771d9b6bfbc992af"}, - {file = "aiohttp-3.10.7.tar.gz", hash = "sha256:18c72a69ba20713f26fa40932cac17437b0c1d25edff2e27437a204c12275bd9"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8b3fb28a9ac8f2558760d8e637dbf27aef1e8b7f1d221e8669a1074d1a266bb2"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91aa966858593f64c8a65cdefa3d6dc8fe3c2768b159da84c1ddbbb2c01ab4ef"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63649309da83277f06a15bbdc2a54fbe75efb92caa2c25bb57ca37762789c746"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e7fabedb3fe06933f47f1538df7b3a8d78e13d7167195f51ca47ee12690373"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c070430fda1a550a1c3a4c2d7281d3b8cfc0c6715f616e40e3332201a253067"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d0a4901b27272ae54e42067bc4b9a90e619a690b4dc43ea5950eb3070afc32"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fec5fac7aea6c060f317f07494961236434928e6f4374e170ef50b3001e14581"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:172ad884bb61ad31ed7beed8be776eb17e7fb423f1c1be836d5cb357a096bf12"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d646fdd74c25bbdd4a055414f0fe32896c400f38ffbdfc78c68e62812a9e0257"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e86260b76786c28acf0b5fe31c8dca4c2add95098c709b11e8c35b424ebd4f5b"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d7cafc11d70fdd8801abfc2ff276744ae4cb39d8060b6b542c7e44e5f2cfc2"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc262c3df78c8ff6020c782d9ce02e4bcffe4900ad71c0ecdad59943cba54442"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:482c85cf3d429844396d939b22bc2a03849cb9ad33344689ad1c85697bcba33a"}, + {file = "aiohttp-3.10.9-cp310-cp310-win32.whl", hash = "sha256:aeebd3061f6f1747c011e1d0b0b5f04f9f54ad1a2ca183e687e7277bef2e0da2"}, + {file = "aiohttp-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:fa430b871220dc62572cef9c69b41e0d70fcb9d486a4a207a5de4c1f25d82593"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16e6a51d8bc96b77f04a6764b4ad03eeef43baa32014fce71e882bd71302c7e4"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8bd9125dd0cc8ebd84bff2be64b10fdba7dc6fd7be431b5eaf67723557de3a31"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dcf354661f54e6a49193d0b5653a1b011ba856e0b7a76bda2c33e4c6892f34ea"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42775de0ca04f90c10c5c46291535ec08e9bcc4756f1b48f02a0657febe89b10"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d1e4185c5d7187684d41ebb50c9aeaaaa06ca1875f4c57593071b0409d2444"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2695c61cf53a5d4345a43d689f37fc0f6d3a2dc520660aec27ec0f06288d1f9"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a3f063b41cc06e8d0b3fcbbfc9c05b7420f41287e0cd4f75ce0a1f3d80729e6"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d37f4718002863b82c6f391c8efd4d3a817da37030a29e2682a94d2716209de"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2746d8994ebca1bdc55a1e998feff4e94222da709623bb18f6e5cfec8ec01baf"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6f3c6648aa123bcd73d6f26607d59967b607b0da8ffcc27d418a4b59f4c98c7c"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:558b3d223fd631ad134d89adea876e7fdb4c93c849ef195049c063ada82b7d08"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4e6cb75f8ddd9c2132d00bc03c9716add57f4beff1263463724f6398b813e7eb"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:608cecd8d58d285bfd52dbca5b6251ca8d6ea567022c8a0eaae03c2589cd9af9"}, + {file = "aiohttp-3.10.9-cp311-cp311-win32.whl", hash = "sha256:36d4fba838be5f083f5490ddd281813b44d69685db910907636bc5dca6322316"}, + {file = "aiohttp-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:8be1a65487bdfc285bd5e9baf3208c2132ca92a9b4020e9f27df1b16fab998a9"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4fd16b30567c5b8e167923be6e027eeae0f20cf2b8a26b98a25115f28ad48ee0"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40ff5b7660f903dc587ed36ef08a88d46840182d9d4b5694e7607877ced698a1"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4edc3fd701e2b9a0d605a7b23d3de4ad23137d23fc0dbab726aa71d92f11aaaf"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e525b69ee8a92c146ae5b4da9ecd15e518df4d40003b01b454ad694a27f498b5"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5002a02c17fcfd796d20bac719981d2fca9c006aac0797eb8f430a58e9d12431"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4ceeae2fb8cabdd1b71c82bfdd39662473d3433ec95b962200e9e752fb70d0"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6e395c3d1f773cf0651cd3559e25182eb0c03a2777b53b4575d8adc1149c6e9"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbdb8def5268f3f9cd753a265756f49228a20ed14a480d151df727808b4531dd"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f82ace0ec57c94aaf5b0e118d4366cff5889097412c75aa14b4fd5fc0c44ee3e"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6ebdc3b3714afe1b134b3bbeb5f745eed3ecbcff92ab25d80e4ef299e83a5465"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ca09414003c0e96a735daa1f071f7d7ed06962ef4fa29ceb6c80d06696d900"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1298b854fd31d0567cbb916091be9d3278168064fca88e70b8468875ef9ff7e7"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60ad5b8a7452c0f5645c73d4dad7490afd6119d453d302cd5b72b678a85d6044"}, + {file = "aiohttp-3.10.9-cp312-cp312-win32.whl", hash = "sha256:1a0ee6c0d590c917f1b9629371fce5f3d3f22c317aa96fbdcce3260754d7ea21"}, + {file = "aiohttp-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:c46131c6112b534b178d4e002abe450a0a29840b61413ac25243f1291613806a"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2bd9f3eac515c16c4360a6a00c38119333901b8590fe93c3257a9b536026594d"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8cc0d13b4e3b1362d424ce3f4e8c79e1f7247a00d792823ffd640878abf28e56"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba1a599255ad6a41022e261e31bc2f6f9355a419575b391f9655c4d9e5df5ff5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:776e9f3c9b377fcf097c4a04b241b15691e6662d850168642ff976780609303c"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8debb45545ad95b58cc16c3c1cc19ad82cffcb106db12b437885dbee265f0ab5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2555e4949c8d8782f18ef20e9d39730d2656e218a6f1a21a4c4c0b56546a02e"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54dc329cd44f7f7883a9f4baaefe686e8b9662e2c6c184ea15cceee587d8d69"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e709d6ac598c5416f879bb1bae3fd751366120ac3fa235a01de763537385d036"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:17c272cfe7b07a5bb0c6ad3f234e0c336fb53f3bf17840f66bd77b5815ab3d16"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0c21c82df33b264216abffff9f8370f303dab65d8eee3767efbbd2734363f677"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9331dd34145ff105177855017920dde140b447049cd62bb589de320fd6ddd582"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ac3196952c673822ebed8871cf8802e17254fff2a2ed4835d9c045d9b88c5ec7"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c33fa6e10bb7ed262e3ff03cc69d52869514f16558db0626a7c5c61dde3c29f"}, + {file = "aiohttp-3.10.9-cp313-cp313-win32.whl", hash = "sha256:a14e4b672c257a6b94fe934ee62666bacbc8e45b7876f9dd9502d0f0fe69db16"}, + {file = "aiohttp-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:a35ed3d03910785f7d9d6f5381f0c24002b2b888b298e6f941b2fc94c5055fcd"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f392ef50e22c31fa49b5a46af7f983fa3f118f3eccb8522063bee8bfa6755f8"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d1f5c9169e26db6a61276008582d945405b8316aae2bb198220466e68114a0f5"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9d10d10ec27c0d46ddaecc3c5598c4db9ce4e6398ca872cdde0525765caa2f"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97273a52d7f89a75b11ec386f786d3da7723d7efae3034b4dda79f6f093edc1"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d271f770b52e32236d945911b2082f9318e90ff835d45224fa9e28374303f729"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7003f33f5f7da1eb02f0446b0f8d2ccf57d253ca6c2e7a5732d25889da82b517"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6e00c8a92e7663ed2be6fcc08a2997ff06ce73c8080cd0df10cc0321a3168d7"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a61df62966ce6507aafab24e124e0c3a1cfbe23c59732987fc0fd0d71daa0b88"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:60555211a006d26e1a389222e3fab8cd379f28e0fbf7472ee55b16c6c529e3a6"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d15a29424e96fad56dc2f3abed10a89c50c099f97d2416520c7a543e8fddf066"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:a19caae0d670771ea7854ca30df76f676eb47e0fd9b2ee4392d44708f272122d"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:99f9678bf0e2b1b695e8028fedac24ab6770937932eda695815d5a6618c37e04"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2914caa46054f3b5ff910468d686742ff8cff54b8a67319d75f5d5945fd0a13d"}, + {file = "aiohttp-3.10.9-cp38-cp38-win32.whl", hash = "sha256:0bc059ecbce835630e635879f5f480a742e130d9821fbe3d2f76610a6698ee25"}, + {file = "aiohttp-3.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:e883b61b75ca6efc2541fcd52a5c8ccfe288b24d97e20ac08fdf343b8ac672ea"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fcd546782d03181b0b1d20b43d612429a90a68779659ba8045114b867971ab71"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:85711eec2d875cd88c7eb40e734c4ca6d9ae477d6f26bd2b5bb4f7f60e41b156"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02d1d6610588bcd743fae827bd6f2e47e0d09b346f230824b4c6fb85c6065f9c"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3668d0c2a4d23fb136a753eba42caa2c0abbd3d9c5c87ee150a716a16c6deec1"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7c071235a47d407b0e93aa6262b49422dbe48d7d8566e1158fecc91043dd948"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac74e794e3aee92ae8f571bfeaa103a141e409863a100ab63a253b1c53b707eb"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbf94d4a0447705b7775417ca8bb8086cc5482023a6e17cdc8f96d0b1b5aba6"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb0b2d5d51f96b6cc19e6ab46a7b684be23240426ae951dcdac9639ab111b45e"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e83dfefb4f7d285c2d6a07a22268344a97d61579b3e0dce482a5be0251d672ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f0a44bb40b6aaa4fb9a5c1ee07880570ecda2065433a96ccff409c9c20c1624a"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c2b627d3c8982691b06d89d31093cee158c30629fdfebe705a91814d49b554f8"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:03690541e4cc866eef79626cfa1ef4dd729c5c1408600c8cb9e12e1137eed6ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad3675c126f2a95bde637d162f8231cff6bc0bc9fbe31bd78075f9ff7921e322"}, + {file = "aiohttp-3.10.9-cp39-cp39-win32.whl", hash = "sha256:1321658f12b6caffafdc35cfba6c882cb014af86bef4e78c125e7e794dfb927b"}, + {file = "aiohttp-3.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:9fdf5c839bf95fc67be5794c780419edb0dbef776edcfc6c2e5e2ffd5ee755fa"}, + {file = "aiohttp-3.10.9.tar.gz", hash = "sha256:143b0026a9dab07a05ad2dd9e46aa859bffdd6348ddc5967b42161168c24f857"}, ] [package.dependencies] @@ -260,13 +260,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -1120,6 +1120,18 @@ files = [ {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbd27c24a4cc5e195a7f56cfd9312e366d5d61b86e36d46bbe538457ea6eb8dd"}, {file = "grpcio-1.66.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d9a9724a156c8ec6a379869b23ba3323b7ea3600851c91489b871e375f710bc8"}, {file = "grpcio-1.66.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d8d4732cc5052e92cea2f78b233c2e2a52998ac40cd651f40e398893ad0d06ec"}, + {file = "grpcio-1.66.2-cp38-cp38-win32.whl", hash = "sha256:7b2c86457145ce14c38e5bf6bdc19ef88e66c5fee2c3d83285c5aef026ba93b3"}, + {file = "grpcio-1.66.2-cp38-cp38-win_amd64.whl", hash = "sha256:e88264caad6d8d00e7913996030bac8ad5f26b7411495848cc218bd3a9040b6c"}, + {file = "grpcio-1.66.2-cp39-cp39-linux_armv7l.whl", hash = "sha256:c400ba5675b67025c8a9f48aa846f12a39cf0c44df5cd060e23fda5b30e9359d"}, + {file = "grpcio-1.66.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:66a0cd8ba6512b401d7ed46bb03f4ee455839957f28b8d61e7708056a806ba6a"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:06de8ec0bd71be123eec15b0e0d457474931c2c407869b6c349bd9bed4adbac3"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb57870449dfcfac428afbb5a877829fcb0d6db9d9baa1148705739e9083880e"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b672abf90a964bfde2d0ecbce30f2329a47498ba75ce6f4da35a2f4532b7acbc"}, + {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ad2efdbe90c73b0434cbe64ed372e12414ad03c06262279b104a029d1889d13e"}, + {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c3a99c519f4638e700e9e3f83952e27e2ea10873eecd7935823dab0c1c9250e"}, + {file = "grpcio-1.66.2-cp39-cp39-win32.whl", hash = "sha256:78fa51ebc2d9242c0fc5db0feecc57a9943303b46664ad89921f5079e2e4ada7"}, + {file = "grpcio-1.66.2-cp39-cp39-win_amd64.whl", hash = "sha256:728bdf36a186e7f51da73be7f8d09457a03061be848718d0edf000e709418987"}, + {file = "grpcio-1.66.2.tar.gz", hash = "sha256:563588c587b75c34b928bc428548e5b00ea38c46972181a4d8b75ba7e3f24231"}, ] [package.extras] @@ -1138,13 +1150,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -1155,7 +1167,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -1578,13 +1590,13 @@ extended-testing = ["beautifulsoup4 (>=4.12.3,<5.0.0)", "lxml (>=4.9.3,<6.0)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -1592,6 +1604,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "lz4" @@ -2891,6 +2904,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.4.10" @@ -2939,6 +2966,11 @@ files = [ {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12"}, + {file = "scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, @@ -3206,13 +3238,13 @@ blobfile = ["blobfile (>=2)"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -3237,13 +3269,13 @@ telegram = ["requests"] [[package]] name = "types-pytz" -version = "2024.2.0.20240913" +version = "2024.2.0.20241003" description = "Typing stubs for pytz" optional = false python-versions = ">=3.8" files = [ - {file = "types-pytz-2024.2.0.20240913.tar.gz", hash = "sha256:4433b5df4a6fc587bbed41716d86a5ba5d832b4378e506f40d34bc9c81df2c24"}, - {file = "types_pytz-2024.2.0.20240913-py3-none-any.whl", hash = "sha256:a1eebf57ebc6e127a99d2fa2ba0a88d2b173784ef9b3defcc2004ab6855a44df"}, + {file = "types-pytz-2024.2.0.20241003.tar.gz", hash = "sha256:575dc38f385a922a212bac00a7d6d2e16e141132a3c955078f4a4fd13ed6cb44"}, + {file = "types_pytz-2024.2.0.20241003-py3-none-any.whl", hash = "sha256:3e22df1336c0c6ad1d29163c8fda82736909eb977281cb823c57f8bae07118b7"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-pinecone/pyproject.toml b/airbyte-integrations/connectors/destination-pinecone/pyproject.toml index b498fd9151c02..1ea09ae87f86e 100644 --- a/airbyte-integrations/connectors/destination-pinecone/pyproject.toml +++ b/airbyte-integrations/connectors/destination-pinecone/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-destination-pinecone" -version = "0.1.24" +version = "0.1.25" description = "Airbyte destination implementation for Pinecone." authors = ["Airbyte "] license = "MIT" diff --git a/docs/integrations/destinations/pinecone.md b/docs/integrations/destinations/pinecone.md index 725ebed2c040c..cdbc6a8e3b012 100644 --- a/docs/integrations/destinations/pinecone.md +++ b/docs/integrations/destinations/pinecone.md @@ -79,6 +79,7 @@ OpenAI and Fake embeddings produce vectors with 1536 dimensions, and the Cohere | Version | Date | Pull Request | Subject | | :------ | :--------- | :-------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | +| 0.1.25 | 2024-10-05 | [46474](https://github.com/airbytehq/airbyte/pull/46474) | Update dependencies | | 0.1.24 | 2024-09-28 | [46127](https://github.com/airbytehq/airbyte/pull/46127) | Update dependencies | | 0.1.23 | 2024-09-21 | [45791](https://github.com/airbytehq/airbyte/pull/45791) | Update dependencies | | 0.1.22 | 2024-09-14 | [45490](https://github.com/airbytehq/airbyte/pull/45490) | Update dependencies | From 1c85a55fd54d7407b68a22ef73b17c3d5c483e13 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:05 +0300 Subject: [PATCH 069/379] =?UTF-8?q?=F0=9F=90=99=20source-amazon-seller-par?= =?UTF-8?q?tner:=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46473)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metadata.yaml | 2 +- .../source-amazon-seller-partner/poetry.lock | 35 +++++++++++++------ .../pyproject.toml | 2 +- .../sources/amazon-seller-partner.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/metadata.yaml b/airbyte-integrations/connectors/source-amazon-seller-partner/metadata.yaml index dce1c1dcabd20..8f469b53d58d8 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/metadata.yaml +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/metadata.yaml @@ -15,7 +15,7 @@ data: connectorSubtype: api connectorType: source definitionId: e55879a8-0ef8-4557-abcf-ab34c53ec460 - dockerImageTag: 4.4.2 + dockerImageTag: 4.4.3 dockerRepository: airbyte/source-amazon-seller-partner documentationUrl: https://docs.airbyte.com/integrations/sources/amazon-seller-partner erdUrl: https://dbdocs.io/airbyteio/source-amazon-seller-partner?view=relationships diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/poetry.lock b/airbyte-integrations/connectors/source-amazon-seller-partner/poetry.lock index 90307d749c87d..4f24b8a9b5d65 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/poetry.lock +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -519,13 +519,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -536,7 +536,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -700,13 +700,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -714,6 +714,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1392,6 +1393,20 @@ six = "*" fixture = ["fixtures"] test = ["fixtures", "mock", "purl", "pytest", "sphinx", "testrepository (>=0.0.18)", "testtools"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/pyproject.toml b/airbyte-integrations/connectors/source-amazon-seller-partner/pyproject.toml index 7da74f1865ccb..740d482de86cc 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/pyproject.toml +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "4.4.2" +version = "4.4.3" name = "source-amazon-seller-partner" description = "Source implementation for Amazon Seller Partner." authors = ["Airbyte "] diff --git a/docs/integrations/sources/amazon-seller-partner.md b/docs/integrations/sources/amazon-seller-partner.md index 194784a18597c..3cf38660e5bbe 100644 --- a/docs/integrations/sources/amazon-seller-partner.md +++ b/docs/integrations/sources/amazon-seller-partner.md @@ -228,6 +228,7 @@ Create a separate connection for streams which usually fail with error above "Fa | Version | Date | Pull Request | Subject | |:--------|:-----------|:----------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 4.4.3 | 2024-10-05 | [46473](https://github.com/airbytehq/airbyte/pull/46473) | Update dependencies | | 4.4.2 | 2024-09-28 | [44748](https://github.com/airbytehq/airbyte/pull/44748) | Update dependencies | | 4.4.1 | 2024-08-17 | [43739](https://github.com/airbytehq/airbyte/pull/43739) | Update dependencies | | 4.4.0 | 2024-07-17 | [42052](https://github.com/airbytehq/airbyte/pull/42052) | Add waiting between requests logic to avoid failed report requests | From 0863778fc76f6e0a1d22cd66cc7d27dc576c0c86 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:08 +0300 Subject: [PATCH 070/379] =?UTF-8?q?=F0=9F=90=99=20source-firebolt:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46471)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-firebolt/metadata.yaml | 2 +- .../connectors/source-firebolt/poetry.lock | 35 +++++++++++++------ .../connectors/source-firebolt/pyproject.toml | 2 +- docs/integrations/sources/firebolt.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-firebolt/metadata.yaml b/airbyte-integrations/connectors/source-firebolt/metadata.yaml index 525bbd3bc7fe8..bd858d9b0f0b6 100644 --- a/airbyte-integrations/connectors/source-firebolt/metadata.yaml +++ b/airbyte-integrations/connectors/source-firebolt/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: database connectorType: source definitionId: 6f2ac653-8623-43c4-8950-19218c7caf3d - dockerImageTag: 2.0.20 + dockerImageTag: 2.0.21 dockerRepository: airbyte/source-firebolt githubIssueLabel: source-firebolt connectorBuildOptions: diff --git a/airbyte-integrations/connectors/source-firebolt/poetry.lock b/airbyte-integrations/connectors/source-firebolt/poetry.lock index da63e944afdfe..0b5d8df5a1c87 100644 --- a/airbyte-integrations/connectors/source-firebolt/poetry.lock +++ b/airbyte-integrations/connectors/source-firebolt/poetry.lock @@ -176,13 +176,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -599,13 +599,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -616,7 +616,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -792,13 +792,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -806,6 +806,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1440,6 +1441,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-firebolt/pyproject.toml b/airbyte-integrations/connectors/source-firebolt/pyproject.toml index 80b0d6c098ca5..bc3ecaa9d2129 100644 --- a/airbyte-integrations/connectors/source-firebolt/pyproject.toml +++ b/airbyte-integrations/connectors/source-firebolt/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.0.20" +version = "2.0.21" name = "source-firebolt" description = "Source implementation for Firebolt." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/firebolt.md b/docs/integrations/sources/firebolt.md index 063c8381a0acf..84449336f9d5c 100644 --- a/docs/integrations/sources/firebolt.md +++ b/docs/integrations/sources/firebolt.md @@ -54,6 +54,7 @@ You can now use the Airbyte Firebolt source. | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------------------------------------- | +| 2.0.21 | 2024-10-05 | [46471](https://github.com/airbytehq/airbyte/pull/46471) | Update dependencies | | 2.0.20 | 2024-09-28 | [46210](https://github.com/airbytehq/airbyte/pull/46210) | Update dependencies | | 2.0.19 | 2024-09-21 | [45765](https://github.com/airbytehq/airbyte/pull/45765) | Update dependencies | | 2.0.18 | 2024-09-14 | [45572](https://github.com/airbytehq/airbyte/pull/45572) | Update dependencies | From b24d9a6d4f5afc7629a54cfb8c2aaa2398eded16 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:10 +0300 Subject: [PATCH 071/379] =?UTF-8?q?=F0=9F=90=99=20source-harvest:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46470)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-harvest/metadata.yaml | 2 +- airbyte-integrations/connectors/source-harvest/poetry.lock | 6 +++--- .../connectors/source-harvest/pyproject.toml | 2 +- docs/integrations/sources/harvest.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-harvest/metadata.yaml b/airbyte-integrations/connectors/source-harvest/metadata.yaml index b7b2aea47b06f..72d6e7798ec36 100644 --- a/airbyte-integrations/connectors/source-harvest/metadata.yaml +++ b/airbyte-integrations/connectors/source-harvest/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: fe2b4084-3386-4d3b-9ad6-308f61a6f1e6 - dockerImageTag: 1.0.18 + dockerImageTag: 1.0.19 dockerRepository: airbyte/source-harvest documentationUrl: https://docs.airbyte.com/integrations/sources/harvest githubIssueLabel: source-harvest diff --git a/airbyte-integrations/connectors/source-harvest/poetry.lock b/airbyte-integrations/connectors/source-harvest/poetry.lock index d74596ec2b768..f0717e4a151c7 100644 --- a/airbyte-integrations/connectors/source-harvest/poetry.lock +++ b/airbyte-integrations/connectors/source-harvest/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-harvest/pyproject.toml b/airbyte-integrations/connectors/source-harvest/pyproject.toml index 3f631b806914f..28961b36adc01 100644 --- a/airbyte-integrations/connectors/source-harvest/pyproject.toml +++ b/airbyte-integrations/connectors/source-harvest/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.0.18" +version = "1.0.19" name = "source-harvest" description = "Source implementation for Harvest." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/harvest.md b/docs/integrations/sources/harvest.md index af5ef368e6f86..71b4c2b573531 100644 --- a/docs/integrations/sources/harvest.md +++ b/docs/integrations/sources/harvest.md @@ -91,6 +91,7 @@ The connector is restricted by the [Harvest rate limits](https://help.getharvest | Version | Date | Pull Request | Subject | |:--------| :--------- | :------------------------------------------------------- |:----------------------------------------------------------------------------------------------------------------------------------| +| 1.0.19 | 2024-10-05 | [46470](https://github.com/airbytehq/airbyte/pull/46470) | Update dependencies | | 1.0.18 | 2024-09-28 | [46143](https://github.com/airbytehq/airbyte/pull/46143) | Update dependencies | | 1.0.17 | 2024-09-21 | [45835](https://github.com/airbytehq/airbyte/pull/45835) | Update dependencies | | 1.0.16 | 2024-09-14 | [45537](https://github.com/airbytehq/airbyte/pull/45537) | Update dependencies | From 464d0a543b9dc6968ad811df2cbf51f3a168de4c Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:13 +0300 Subject: [PATCH 072/379] =?UTF-8?q?=F0=9F=90=99=20source-my-hours:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46469)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-my-hours/metadata.yaml | 2 +- .../connectors/source-my-hours/poetry.lock | 43 +++++++++++++------ .../connectors/source-my-hours/pyproject.toml | 2 +- docs/integrations/sources/my-hours.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-my-hours/metadata.yaml b/airbyte-integrations/connectors/source-my-hours/metadata.yaml index 9b73e51342f20..730cb74f2f6c6 100644 --- a/airbyte-integrations/connectors/source-my-hours/metadata.yaml +++ b/airbyte-integrations/connectors/source-my-hours/metadata.yaml @@ -19,7 +19,7 @@ data: connectorSubtype: api connectorType: source definitionId: 722ba4bf-06ec-45a4-8dd5-72e4a5cf3903 - dockerImageTag: 0.2.18 + dockerImageTag: 0.2.19 dockerRepository: airbyte/source-my-hours githubIssueLabel: source-my-hours icon: my-hours.svg diff --git a/airbyte-integrations/connectors/source-my-hours/poetry.lock b/airbyte-integrations/connectors/source-my-hours/poetry.lock index 91a8bda9c2540..392338d0d53e4 100644 --- a/airbyte-integrations/connectors/source-my-hours/poetry.lock +++ b/airbyte-integrations/connectors/source-my-hours/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -473,13 +473,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -490,7 +490,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -654,13 +654,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -668,6 +668,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1228,6 +1229,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1287,13 +1302,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-my-hours/pyproject.toml b/airbyte-integrations/connectors/source-my-hours/pyproject.toml index 7553b186b8229..22ec7082830be 100644 --- a/airbyte-integrations/connectors/source-my-hours/pyproject.toml +++ b/airbyte-integrations/connectors/source-my-hours/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.18" +version = "0.2.19" name = "source-my-hours" description = "Source implementation for my-hours." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/my-hours.md b/docs/integrations/sources/my-hours.md index da72bde33c641..f7db57ad83d4c 100644 --- a/docs/integrations/sources/my-hours.md +++ b/docs/integrations/sources/my-hours.md @@ -36,6 +36,7 @@ Depending on the amount of team members and time logs the source provides a prop | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------- | +| 0.2.19 | 2024-10-05 | [46469](https://github.com/airbytehq/airbyte/pull/46469) | Update dependencies | | 0.2.18 | 2024-09-28 | [46167](https://github.com/airbytehq/airbyte/pull/46167) | Update dependencies | | 0.2.17 | 2024-09-21 | [45781](https://github.com/airbytehq/airbyte/pull/45781) | Update dependencies | | 0.2.16 | 2024-09-14 | [45582](https://github.com/airbytehq/airbyte/pull/45582) | Update dependencies | From bcb837f9319bd5e8e3da63e8d9f5fe4ca7953483 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:16 +0300 Subject: [PATCH 073/379] =?UTF-8?q?=F0=9F=90=99=20source-yahoo-finance-pri?= =?UTF-8?q?ce:=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46468)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-yahoo-finance-price/metadata.yaml | 2 +- .../connectors/source-yahoo-finance-price/poetry.lock | 6 +++--- .../connectors/source-yahoo-finance-price/pyproject.toml | 2 +- docs/integrations/sources/yahoo-finance-price.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-yahoo-finance-price/metadata.yaml b/airbyte-integrations/connectors/source-yahoo-finance-price/metadata.yaml index 9321045a50864..edef040d9e782 100644 --- a/airbyte-integrations/connectors/source-yahoo-finance-price/metadata.yaml +++ b/airbyte-integrations/connectors/source-yahoo-finance-price/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: 09a517d3-803f-448d-97bf-0b1ee64b90ef - dockerImageTag: 0.2.22 + dockerImageTag: 0.2.23 dockerRepository: airbyte/source-yahoo-finance-price documentationUrl: https://docs.airbyte.com/integrations/sources/yahoo-finance-price githubIssueLabel: source-yahoo-finance-price diff --git a/airbyte-integrations/connectors/source-yahoo-finance-price/poetry.lock b/airbyte-integrations/connectors/source-yahoo-finance-price/poetry.lock index f46b9f785e722..4db559b53ed78 100644 --- a/airbyte-integrations/connectors/source-yahoo-finance-price/poetry.lock +++ b/airbyte-integrations/connectors/source-yahoo-finance-price/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-yahoo-finance-price/pyproject.toml b/airbyte-integrations/connectors/source-yahoo-finance-price/pyproject.toml index 36b9ee0f88f60..05c7a16afb54b 100644 --- a/airbyte-integrations/connectors/source-yahoo-finance-price/pyproject.toml +++ b/airbyte-integrations/connectors/source-yahoo-finance-price/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.22" +version = "0.2.23" name = "source-yahoo-finance-price" description = "Source implementation for Yahoo Finance Price." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/yahoo-finance-price.md b/docs/integrations/sources/yahoo-finance-price.md index 8fed08cd6ea75..c3e15f560199d 100644 --- a/docs/integrations/sources/yahoo-finance-price.md +++ b/docs/integrations/sources/yahoo-finance-price.md @@ -9,6 +9,7 @@ The Airbyte Source for [Yahoo Finance Price](https://finance.yahoo.com/) | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.2.23 | 2024-10-05 | [46468](https://github.com/airbytehq/airbyte/pull/46468) | Update dependencies | | 0.2.22 | 2024-09-28 | [45792](https://github.com/airbytehq/airbyte/pull/45792) | Update dependencies | | 0.2.21 | 2024-09-14 | [45484](https://github.com/airbytehq/airbyte/pull/45484) | Update dependencies | | 0.2.20 | 2024-09-07 | [45236](https://github.com/airbytehq/airbyte/pull/45236) | Update dependencies | From 759c1d0e3609728a3e8bcb558452be4715e78b24 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:18 +0300 Subject: [PATCH 074/379] =?UTF-8?q?=F0=9F=90=99=20destination-xata:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46467)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/destination-xata/metadata.yaml | 2 +- .../connectors/destination-xata/poetry.lock | 14 +++++++------- .../connectors/destination-xata/pyproject.toml | 2 +- docs/integrations/destinations/xata.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/destination-xata/metadata.yaml b/airbyte-integrations/connectors/destination-xata/metadata.yaml index 50747fe11a1e5..01f7579e9cdfe 100644 --- a/airbyte-integrations/connectors/destination-xata/metadata.yaml +++ b/airbyte-integrations/connectors/destination-xata/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: database connectorType: destination definitionId: 2a51c92d-0fb4-4e54-94d2-cce631f24d1f - dockerImageTag: 0.1.22 + dockerImageTag: 0.1.23 dockerRepository: airbyte/destination-xata githubIssueLabel: destination-xata icon: xata.svg diff --git a/airbyte-integrations/connectors/destination-xata/poetry.lock b/airbyte-integrations/connectors/destination-xata/poetry.lock index 2ddf85079b01e..3d85f19a07917 100644 --- a/airbyte-integrations/connectors/destination-xata/poetry.lock +++ b/airbyte-integrations/connectors/destination-xata/poetry.lock @@ -83,13 +83,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -937,13 +937,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-xata/pyproject.toml b/airbyte-integrations/connectors/destination-xata/pyproject.toml index 730edae9224aa..c21addb46431a 100644 --- a/airbyte-integrations/connectors/destination-xata/pyproject.toml +++ b/airbyte-integrations/connectors/destination-xata/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.22" +version = "0.1.23" name = "destination-xata" description = "Destination implementation for Xata.io" authors = [ "Philip Krauss ",] diff --git a/docs/integrations/destinations/xata.md b/docs/integrations/destinations/xata.md index 8d06fe5374599..d9a0b37c10375 100644 --- a/docs/integrations/destinations/xata.md +++ b/docs/integrations/destinations/xata.md @@ -40,6 +40,7 @@ In order to connect, you need: | Version | Date | Pull Request | Subject | |:--------| :--------- | :-------------------------------------------------------- | :----------------------------- | +| 0.1.23 | 2024-10-05 | [46467](https://github.com/airbytehq/airbyte/pull/46467) | Update dependencies | | 0.1.22 | 2024-09-28 | [46107](https://github.com/airbytehq/airbyte/pull/46107) | Update dependencies | | 0.1.21 | 2024-09-21 | [45837](https://github.com/airbytehq/airbyte/pull/45837) | Update dependencies | | 0.1.20 | 2024-09-14 | [45516](https://github.com/airbytehq/airbyte/pull/45516) | Update dependencies | From 7fbf1ec38b77cd0c4b94c8d9f7f8defe254388e5 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:21 +0300 Subject: [PATCH 075/379] =?UTF-8?q?=F0=9F=90=99=20source-genesys:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46466)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-genesys/metadata.yaml | 2 +- airbyte-integrations/connectors/source-genesys/poetry.lock | 6 +++--- .../connectors/source-genesys/pyproject.toml | 2 +- docs/integrations/sources/genesys.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-genesys/metadata.yaml b/airbyte-integrations/connectors/source-genesys/metadata.yaml index 9591cd2da7c10..92dd70520efed 100644 --- a/airbyte-integrations/connectors/source-genesys/metadata.yaml +++ b/airbyte-integrations/connectors/source-genesys/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: 5ea4459a-8f1a-452a-830f-a65c38cc438d - dockerImageTag: 0.1.18 + dockerImageTag: 0.1.19 dockerRepository: airbyte/source-genesys githubIssueLabel: source-genesys icon: genesys.svg diff --git a/airbyte-integrations/connectors/source-genesys/poetry.lock b/airbyte-integrations/connectors/source-genesys/poetry.lock index 45c71fcab3eb8..ce10b819fdf7e 100644 --- a/airbyte-integrations/connectors/source-genesys/poetry.lock +++ b/airbyte-integrations/connectors/source-genesys/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-genesys/pyproject.toml b/airbyte-integrations/connectors/source-genesys/pyproject.toml index 4bc4ad86857b3..fb437ca10782c 100644 --- a/airbyte-integrations/connectors/source-genesys/pyproject.toml +++ b/airbyte-integrations/connectors/source-genesys/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.18" +version = "0.1.19" name = "source-genesys" description = "Source implementation for Genesys." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/genesys.md b/docs/integrations/sources/genesys.md index 635dc3ab1b81f..d0635871333f0 100644 --- a/docs/integrations/sources/genesys.md +++ b/docs/integrations/sources/genesys.md @@ -31,6 +31,7 @@ You can follow the documentation on [API credentials](https://developer.genesys. | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------- | +| 0.1.19 | 2024-10-05 | [46466](https://github.com/airbytehq/airbyte/pull/46466) | Update dependencies | | 0.1.18 | 2024-09-28 | [46128](https://github.com/airbytehq/airbyte/pull/46128) | Update dependencies | | 0.1.17 | 2024-09-21 | [45724](https://github.com/airbytehq/airbyte/pull/45724) | Update dependencies | | 0.1.16 | 2024-09-14 | [45545](https://github.com/airbytehq/airbyte/pull/45545) | Update dependencies | From cdd6bffa0832f269dbdd1d11442b0638faefa2db Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:23 +0300 Subject: [PATCH 076/379] =?UTF-8?q?=F0=9F=90=99=20destination-weaviate:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46465)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-weaviate/metadata.yaml | 2 +- .../destination-weaviate/poetry.lock | 278 ++++++++++-------- .../destination-weaviate/pyproject.toml | 2 +- docs/integrations/destinations/weaviate.md | 1 + 4 files changed, 154 insertions(+), 129 deletions(-) diff --git a/airbyte-integrations/connectors/destination-weaviate/metadata.yaml b/airbyte-integrations/connectors/destination-weaviate/metadata.yaml index 6446d4b6c9a1b..59fb736443d8c 100644 --- a/airbyte-integrations/connectors/destination-weaviate/metadata.yaml +++ b/airbyte-integrations/connectors/destination-weaviate/metadata.yaml @@ -13,7 +13,7 @@ data: connectorSubtype: vectorstore connectorType: destination definitionId: 7b7d7a0d-954c-45a0-bcfc-39a634b97736 - dockerImageTag: 0.2.39 + dockerImageTag: 0.2.40 dockerRepository: airbyte/destination-weaviate documentationUrl: https://docs.airbyte.com/integrations/destinations/weaviate githubIssueLabel: destination-weaviate diff --git a/airbyte-integrations/connectors/destination-weaviate/poetry.lock b/airbyte-integrations/connectors/destination-weaviate/poetry.lock index d070de52f07e9..8d44a0860be84 100644 --- a/airbyte-integrations/connectors/destination-weaviate/poetry.lock +++ b/airbyte-integrations/connectors/destination-weaviate/poetry.lock @@ -2,113 +2,113 @@ [[package]] name = "aiohappyeyeballs" -version = "2.4.2" +version = "2.4.3" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "aiohappyeyeballs-2.4.2-py3-none-any.whl", hash = "sha256:8522691d9a154ba1145b157d6d5c15e5c692527ce6a53c5e5f9876977f6dab2f"}, - {file = "aiohappyeyeballs-2.4.2.tar.gz", hash = "sha256:4ca893e6c5c1f5bf3888b04cb5a3bee24995398efef6e0b9f747b5e89d84fd74"}, + {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, + {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, ] [[package]] name = "aiohttp" -version = "3.10.7" +version = "3.10.9" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df23cb35bec54b73fba371c7c904994433651458acf8bfb7c84464fef5834c0a"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33a6d023b207ad8227e607814c0020b42c53e01a66004fc0f2555e1a4941282"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d23df9f01c8945d03cffcdd9ba9bfd88aa21ac567a39d0ac4d0c80499ed0d23"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ddf2c8c9ec6bb3f5c057e5c95605adb8e3f1e2d999e8801736f448aff29280e"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d09e40e2ae6723af487ffde019055d0b6ce4eae0749fcfe9de624b61f1af6ec"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc1f4e0f4b1ae9289b4d0cc3bf5d6d55176c38ef1d41484550f3f9a0a78bedae"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636e3efb0bb024817cefa1ef86d678d1a73eb210ae162aff4234214060011ff5"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bab2544f09cd1db154c105e03b1c941032fd7237da5da184595771999ca90daa"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:431852e77cd72f60a0278f8cf557c8e568cd856f755a4b6c5232c7d8c6343d2e"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6bae913cbb183cd34863905088ef26a17c75332bd6bdd451ee8bf158c987cf19"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:278cd430ba93a157ad1faf490fdd6051801085ffa31a27762133472555e56888"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e083e29b6db8e34a507cd678f89eab3ae5f307486ea6010c6473436d3769628d"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:150deb28d5302cfec89fc31ea4bce774df06f5c03d95519f7588ca6517a472d7"}, - {file = "aiohttp-3.10.7-cp310-cp310-win32.whl", hash = "sha256:e19337d6552af197ebb8c886daea0b938ae34eff776c1fa914ad433f6db3970f"}, - {file = "aiohttp-3.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:bff7ef30cb6fc186ea6dda9e19d6105b1c213e3a3f759b5a23c271c778027260"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1378164474a3866f7684a95efede1bee4016cd104bc10bf885e492c4459b715a"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:87d0e52b2905dbc1aeffcbf0611fa82e27874764332c11b984293a4b91cc8e9f"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2783754bfcee0b13b8e55932b418cf8984c17099fd1b37341d4696447d0c328"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d26881d98274ef0dbd4f069f383e5e90eb6e42e957289db14c47186386832ce"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e152296b2c50417445eacdb2353d3c10e702f6593aa774277510fb7761304302"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf1cd9bfd598899396bdb8a4dc5234144a77e482e7489972b7956cf66e272872"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871c2bf68ecc55056e5e3b0ae5929a1149f41c4255bbf99b1f858005f63360d1"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd8a0a0ef895e4c3f1afd31c2a6f89d68a94baacdbe2eb9bf90ac54b997cf99b"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99c11c5d632fa2222cc5805105841f6f3c40df116368fde40fbd71f8b14ea692"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8fbf91559400fe1a98d84af36f5a66aa59c359ac3cb113b17d304ced6a4601b4"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:73f151a1e21369a84d56b91a209590c23270c847463029fdcbda710516217644"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:80531f6f4fff5a1f7e495afbc4aff5c4230b605f26d56c40ecad27a269665608"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:164068b338c52dfe44f3490c70ef7b33c0e73d441c89f599ae2d93f7dcf3e395"}, - {file = "aiohttp-3.10.7-cp311-cp311-win32.whl", hash = "sha256:a84fe27904dbb43a236532d6d841d6132200b7bb53ba73d0300b0b586ceab6cc"}, - {file = "aiohttp-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:beda1abd7b23d489a5b66a46eba5a9e0db58e4ad91d68697409eeabda343fb9d"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:68120c12c98bfc0e024ef1279be5f41327a54a5094710adc970ecc9724b91871"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e1a9b4026b6fe41adde784e308b0ad0d6a8b5cc9062f9c349125fd57149bc8a9"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85d8a1d716516ef92c769eadb020600d27223899018ef8d07c09c117001cc7d5"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87652147515031dafc1b37c9c3c42fbe9e2697af6264ec26080a6fe603cc5196"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c6140d6cbf8eebbcf1528364ce0b26d0a95788111659cfc008fba3a12fc874f"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:342600665e74eea20b3286045ebeb0aa2f9cececf2eb0acc6f6817205b112b29"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b7794b3d23451e355b4a87959943125afff8dd31d8059651c2734de12f9e7f2"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d8d12d6a192f7b9f8a335cad8634a4f081d8319b75dd42257a1a3e557848d00"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b5d8c94fd23f41007799ec657e18661f9f8c5b566a1e4fe944e3514e505a6b49"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a1fe407bec2f14a3d79ec92aa767b930857a6782589ea87ac76fd8081dea3dab"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7ed4435dcf507ef2de5b4be64276933eb19c78e5c7d00ca376fcd9a67d0139a0"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c161f9e353f291d23069a8f67180fd52c76d72d4671f4f53602ea9ac29f47d50"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:caf083bf26b1e286ab1929dbd8d8cab6230160576a0ed5e3bfb3487bb19474c2"}, - {file = "aiohttp-3.10.7-cp312-cp312-win32.whl", hash = "sha256:4296dd120e7e9728625eef1091039aff1a454c7147913d47839876c94b202226"}, - {file = "aiohttp-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:10d19997f2f8d49d53b76163b71e263bb7b23f48041d0d4050a43445a0052c35"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:582536d3d7f95a6d4d072d2326dd03eeb1549c1cc86d02c9bcec71899f4c66f2"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:365eff442a47b13e0e12c37240a6f75940ebee0b7943af43c84d5b43643fc80c"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2e0083e6f9f9cb0a0bedd694782e7fb8a54eb4de40e1743d9bb526f1c1eea88"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da5a03cbe746f182f7b61e119dde24d388cf77965fea320bc8aba61b75039d06"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b210484fccff00cafa9bd8abedea8749b6d975df8c8e21c82d92bb25403db85"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b75cfa1e5fc7c87fc5f9de7124bb039b898791bb87207d2107bed5e3509670f"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b4aa816cd3ab876f96ce8c6986648392137cbd6feddbf4189322515f34e1f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3915944c87c9bf488db4ca1ae6edca40b5bc77c4c2cf2f49b69886bc47b97db1"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd658aeaa65fb99fcc3b93882bb33cbd600501d40473488aec163a981d7b05ee"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aeea07c89a5a53463c70957feb85d4b846982c0f054b521fc44f52862e7871cf"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f8aaa0bc8e39352684982b378ba3f7e32e78a746da433aaeceb7e93d7fdf9ce3"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f25a79ac4ac0bd94cf283d3e86e6f3ec78fc39e2de6949b902c342148b7b5f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fc3538efae4e4df222a563559f8766234f49e845e8dbb2dd477eb8f3fd97242"}, - {file = "aiohttp-3.10.7-cp313-cp313-win32.whl", hash = "sha256:eea89c47ae8d592f7563f4355132fe844b5e2f8660292deacc292253bef291cd"}, - {file = "aiohttp-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:7ce1b54feaaf264e28a4474e13635d302a59aafb720b18c3c2885b8f35ce5040"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7a372f9ea521741667cec2ef4a64419448030411af2e844dfa8dbbb8074baea6"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:feff2170b23921a526f31d78c8f76bbb9cde825e78035286d8571ce0c81901ab"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa42c4e78925a438a6f7df0d9b165d29cdc0a44fc5ce838d6c293a0161a2bd9a"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ced77f4dd0c4f0107ee96f8df162b984470ac9f94ef93dd44dba62838fd85cde"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13085c0129a906b001d87dd43e247155f6c76820d98147c079b746e8a0665b17"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92100555f86b314ed840ed61d937fc30ca39ad453c9aa9020414a3cce955d9b"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77bc82d7b10f377957ba8e99bb1b13d946e9e9038fe89ba0888ad0b12e60c9c0"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6052d92b47b8cf3736b1f01ac8f83cf02f188ef7542848055a5e227db0e16cb"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:82fa5fb983922b03f2b08d1140550c68b50313305115639e19b13489c284c30c"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:0246659d9a54a23a83f11842bdd58f335a1370aa66b376eeae16b7cf29009dde"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:befc2f0794bc4bbbb1f8d0e245d32ee13331205b58f54910789e9e78d2a6fbf5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:9cd67e5c84cb75a471b2e35f3fb0da52e6d359d1794d3465a87052fb240e64b5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:af10344fb1ee195b2cd5840b61d8c8121b16d3b3baa2da5a86cf4001a7e5bd98"}, - {file = "aiohttp-3.10.7-cp38-cp38-win32.whl", hash = "sha256:81d3fc1b187656b6b465ed4ed4c9858f16ff2d9864da6225d80b8018abd7739b"}, - {file = "aiohttp-3.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:b6fb89edeadfd69df75f8cea97c3533805a9960cc56034ad296abe9b18771842"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:318824b98a2bdf84e9a21d413737a3c4f27bbad0a9ce16141488f631dbffb9b2"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63c9de949e05a5f729aecba6bf4b3d5403846caf546ea5020f8b9bf315bd8f12"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0245e1a71f3503b01d2c304529779a70277ccc0fe9847b48d437363de6e4336e"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14dbfb208ffe3388e0770fd23bf9114cc933c10bb1dba35b538f3c9d685334d8"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f6b014f2176d2774b759b8e2951af4a613385ebcc08841cb5c0ca6d5dee74ee"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcfabf9338fed009fd9e11bf496a927ea67b1ce15d34847cb0a98aa6f042b989"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171f1f5364a0ef5873480e6fddc3870ee37f1dfe216fa67507bbd4c91306f110"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87e243b1df27ff685ab08228b7a938c0530beb60ad3dea7554da1554d46c9ad4"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fee4d2246b091b7e252cd5bcdbd4362fa21c3cc6a445fef54de793731546ab24"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bfa8c8af8c92e3d6c1eff02cf5127f62c1e7564e7b0f1a9767035f81a2e6bb20"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f44f09b67a458400215d9efedb9cfb5e3256dbeb2cc2da68e4592b7b36bac0c9"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b5f8270946777d6971c27479cb6e7f54578be960928a8922cb59130e856d8484"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e8ccaa99871303323bd2cda120043039729497642da5c6f53e066b19f73d9df8"}, - {file = "aiohttp-3.10.7-cp39-cp39-win32.whl", hash = "sha256:ce7c12bfbb1579e81cdf2e7db4338f8c768da2493aa0db60a858a542d551563c"}, - {file = "aiohttp-3.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:189979c7e9d8f40236534760daf5b41d2026d5ebabdf913e771d9b6bfbc992af"}, - {file = "aiohttp-3.10.7.tar.gz", hash = "sha256:18c72a69ba20713f26fa40932cac17437b0c1d25edff2e27437a204c12275bd9"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8b3fb28a9ac8f2558760d8e637dbf27aef1e8b7f1d221e8669a1074d1a266bb2"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91aa966858593f64c8a65cdefa3d6dc8fe3c2768b159da84c1ddbbb2c01ab4ef"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63649309da83277f06a15bbdc2a54fbe75efb92caa2c25bb57ca37762789c746"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e7fabedb3fe06933f47f1538df7b3a8d78e13d7167195f51ca47ee12690373"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c070430fda1a550a1c3a4c2d7281d3b8cfc0c6715f616e40e3332201a253067"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d0a4901b27272ae54e42067bc4b9a90e619a690b4dc43ea5950eb3070afc32"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fec5fac7aea6c060f317f07494961236434928e6f4374e170ef50b3001e14581"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:172ad884bb61ad31ed7beed8be776eb17e7fb423f1c1be836d5cb357a096bf12"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d646fdd74c25bbdd4a055414f0fe32896c400f38ffbdfc78c68e62812a9e0257"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e86260b76786c28acf0b5fe31c8dca4c2add95098c709b11e8c35b424ebd4f5b"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d7cafc11d70fdd8801abfc2ff276744ae4cb39d8060b6b542c7e44e5f2cfc2"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc262c3df78c8ff6020c782d9ce02e4bcffe4900ad71c0ecdad59943cba54442"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:482c85cf3d429844396d939b22bc2a03849cb9ad33344689ad1c85697bcba33a"}, + {file = "aiohttp-3.10.9-cp310-cp310-win32.whl", hash = "sha256:aeebd3061f6f1747c011e1d0b0b5f04f9f54ad1a2ca183e687e7277bef2e0da2"}, + {file = "aiohttp-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:fa430b871220dc62572cef9c69b41e0d70fcb9d486a4a207a5de4c1f25d82593"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16e6a51d8bc96b77f04a6764b4ad03eeef43baa32014fce71e882bd71302c7e4"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8bd9125dd0cc8ebd84bff2be64b10fdba7dc6fd7be431b5eaf67723557de3a31"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dcf354661f54e6a49193d0b5653a1b011ba856e0b7a76bda2c33e4c6892f34ea"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42775de0ca04f90c10c5c46291535ec08e9bcc4756f1b48f02a0657febe89b10"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d1e4185c5d7187684d41ebb50c9aeaaaa06ca1875f4c57593071b0409d2444"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2695c61cf53a5d4345a43d689f37fc0f6d3a2dc520660aec27ec0f06288d1f9"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a3f063b41cc06e8d0b3fcbbfc9c05b7420f41287e0cd4f75ce0a1f3d80729e6"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d37f4718002863b82c6f391c8efd4d3a817da37030a29e2682a94d2716209de"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2746d8994ebca1bdc55a1e998feff4e94222da709623bb18f6e5cfec8ec01baf"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6f3c6648aa123bcd73d6f26607d59967b607b0da8ffcc27d418a4b59f4c98c7c"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:558b3d223fd631ad134d89adea876e7fdb4c93c849ef195049c063ada82b7d08"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4e6cb75f8ddd9c2132d00bc03c9716add57f4beff1263463724f6398b813e7eb"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:608cecd8d58d285bfd52dbca5b6251ca8d6ea567022c8a0eaae03c2589cd9af9"}, + {file = "aiohttp-3.10.9-cp311-cp311-win32.whl", hash = "sha256:36d4fba838be5f083f5490ddd281813b44d69685db910907636bc5dca6322316"}, + {file = "aiohttp-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:8be1a65487bdfc285bd5e9baf3208c2132ca92a9b4020e9f27df1b16fab998a9"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4fd16b30567c5b8e167923be6e027eeae0f20cf2b8a26b98a25115f28ad48ee0"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40ff5b7660f903dc587ed36ef08a88d46840182d9d4b5694e7607877ced698a1"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4edc3fd701e2b9a0d605a7b23d3de4ad23137d23fc0dbab726aa71d92f11aaaf"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e525b69ee8a92c146ae5b4da9ecd15e518df4d40003b01b454ad694a27f498b5"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5002a02c17fcfd796d20bac719981d2fca9c006aac0797eb8f430a58e9d12431"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4ceeae2fb8cabdd1b71c82bfdd39662473d3433ec95b962200e9e752fb70d0"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6e395c3d1f773cf0651cd3559e25182eb0c03a2777b53b4575d8adc1149c6e9"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbdb8def5268f3f9cd753a265756f49228a20ed14a480d151df727808b4531dd"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f82ace0ec57c94aaf5b0e118d4366cff5889097412c75aa14b4fd5fc0c44ee3e"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6ebdc3b3714afe1b134b3bbeb5f745eed3ecbcff92ab25d80e4ef299e83a5465"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ca09414003c0e96a735daa1f071f7d7ed06962ef4fa29ceb6c80d06696d900"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1298b854fd31d0567cbb916091be9d3278168064fca88e70b8468875ef9ff7e7"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60ad5b8a7452c0f5645c73d4dad7490afd6119d453d302cd5b72b678a85d6044"}, + {file = "aiohttp-3.10.9-cp312-cp312-win32.whl", hash = "sha256:1a0ee6c0d590c917f1b9629371fce5f3d3f22c317aa96fbdcce3260754d7ea21"}, + {file = "aiohttp-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:c46131c6112b534b178d4e002abe450a0a29840b61413ac25243f1291613806a"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2bd9f3eac515c16c4360a6a00c38119333901b8590fe93c3257a9b536026594d"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8cc0d13b4e3b1362d424ce3f4e8c79e1f7247a00d792823ffd640878abf28e56"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba1a599255ad6a41022e261e31bc2f6f9355a419575b391f9655c4d9e5df5ff5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:776e9f3c9b377fcf097c4a04b241b15691e6662d850168642ff976780609303c"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8debb45545ad95b58cc16c3c1cc19ad82cffcb106db12b437885dbee265f0ab5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2555e4949c8d8782f18ef20e9d39730d2656e218a6f1a21a4c4c0b56546a02e"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54dc329cd44f7f7883a9f4baaefe686e8b9662e2c6c184ea15cceee587d8d69"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e709d6ac598c5416f879bb1bae3fd751366120ac3fa235a01de763537385d036"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:17c272cfe7b07a5bb0c6ad3f234e0c336fb53f3bf17840f66bd77b5815ab3d16"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0c21c82df33b264216abffff9f8370f303dab65d8eee3767efbbd2734363f677"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9331dd34145ff105177855017920dde140b447049cd62bb589de320fd6ddd582"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ac3196952c673822ebed8871cf8802e17254fff2a2ed4835d9c045d9b88c5ec7"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c33fa6e10bb7ed262e3ff03cc69d52869514f16558db0626a7c5c61dde3c29f"}, + {file = "aiohttp-3.10.9-cp313-cp313-win32.whl", hash = "sha256:a14e4b672c257a6b94fe934ee62666bacbc8e45b7876f9dd9502d0f0fe69db16"}, + {file = "aiohttp-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:a35ed3d03910785f7d9d6f5381f0c24002b2b888b298e6f941b2fc94c5055fcd"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f392ef50e22c31fa49b5a46af7f983fa3f118f3eccb8522063bee8bfa6755f8"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d1f5c9169e26db6a61276008582d945405b8316aae2bb198220466e68114a0f5"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9d10d10ec27c0d46ddaecc3c5598c4db9ce4e6398ca872cdde0525765caa2f"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97273a52d7f89a75b11ec386f786d3da7723d7efae3034b4dda79f6f093edc1"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d271f770b52e32236d945911b2082f9318e90ff835d45224fa9e28374303f729"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7003f33f5f7da1eb02f0446b0f8d2ccf57d253ca6c2e7a5732d25889da82b517"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6e00c8a92e7663ed2be6fcc08a2997ff06ce73c8080cd0df10cc0321a3168d7"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a61df62966ce6507aafab24e124e0c3a1cfbe23c59732987fc0fd0d71daa0b88"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:60555211a006d26e1a389222e3fab8cd379f28e0fbf7472ee55b16c6c529e3a6"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d15a29424e96fad56dc2f3abed10a89c50c099f97d2416520c7a543e8fddf066"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:a19caae0d670771ea7854ca30df76f676eb47e0fd9b2ee4392d44708f272122d"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:99f9678bf0e2b1b695e8028fedac24ab6770937932eda695815d5a6618c37e04"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2914caa46054f3b5ff910468d686742ff8cff54b8a67319d75f5d5945fd0a13d"}, + {file = "aiohttp-3.10.9-cp38-cp38-win32.whl", hash = "sha256:0bc059ecbce835630e635879f5f480a742e130d9821fbe3d2f76610a6698ee25"}, + {file = "aiohttp-3.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:e883b61b75ca6efc2541fcd52a5c8ccfe288b24d97e20ac08fdf343b8ac672ea"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fcd546782d03181b0b1d20b43d612429a90a68779659ba8045114b867971ab71"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:85711eec2d875cd88c7eb40e734c4ca6d9ae477d6f26bd2b5bb4f7f60e41b156"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02d1d6610588bcd743fae827bd6f2e47e0d09b346f230824b4c6fb85c6065f9c"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3668d0c2a4d23fb136a753eba42caa2c0abbd3d9c5c87ee150a716a16c6deec1"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7c071235a47d407b0e93aa6262b49422dbe48d7d8566e1158fecc91043dd948"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac74e794e3aee92ae8f571bfeaa103a141e409863a100ab63a253b1c53b707eb"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbf94d4a0447705b7775417ca8bb8086cc5482023a6e17cdc8f96d0b1b5aba6"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb0b2d5d51f96b6cc19e6ab46a7b684be23240426ae951dcdac9639ab111b45e"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e83dfefb4f7d285c2d6a07a22268344a97d61579b3e0dce482a5be0251d672ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f0a44bb40b6aaa4fb9a5c1ee07880570ecda2065433a96ccff409c9c20c1624a"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c2b627d3c8982691b06d89d31093cee158c30629fdfebe705a91814d49b554f8"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:03690541e4cc866eef79626cfa1ef4dd729c5c1408600c8cb9e12e1137eed6ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad3675c126f2a95bde637d162f8231cff6bc0bc9fbe31bd78075f9ff7921e322"}, + {file = "aiohttp-3.10.9-cp39-cp39-win32.whl", hash = "sha256:1321658f12b6caffafdc35cfba6c882cb014af86bef4e78c125e7e794dfb927b"}, + {file = "aiohttp-3.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:9fdf5c839bf95fc67be5794c780419edb0dbef776edcfc6c2e5e2ffd5ee755fa"}, + {file = "aiohttp-3.10.9.tar.gz", hash = "sha256:143b0026a9dab07a05ad2dd9e46aa859bffdd6348ddc5967b42161168c24f857"}, ] [package.dependencies] @@ -271,13 +271,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -1080,13 +1080,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -1097,7 +1097,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -1520,13 +1520,13 @@ extended-testing = ["beautifulsoup4 (>=4.12.3,<5.0.0)", "lxml (>=4.9.3,<6.0)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -1534,6 +1534,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -2512,25 +2513,29 @@ files = [ [[package]] name = "pywin32" -version = "306" +version = "307" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, + {file = "pywin32-307-cp310-cp310-win32.whl", hash = "sha256:f8f25d893c1e1ce2d685ef6d0a481e87c6f510d0f3f117932781f412e0eba31b"}, + {file = "pywin32-307-cp310-cp310-win_amd64.whl", hash = "sha256:36e650c5e5e6b29b5d317385b02d20803ddbac5d1031e1f88d20d76676dd103d"}, + {file = "pywin32-307-cp310-cp310-win_arm64.whl", hash = "sha256:0c12d61e0274e0c62acee79e3e503c312426ddd0e8d4899c626cddc1cafe0ff4"}, + {file = "pywin32-307-cp311-cp311-win32.whl", hash = "sha256:fec5d27cc893178fab299de911b8e4d12c5954e1baf83e8a664311e56a272b75"}, + {file = "pywin32-307-cp311-cp311-win_amd64.whl", hash = "sha256:987a86971753ed7fdd52a7fb5747aba955b2c7fbbc3d8b76ec850358c1cc28c3"}, + {file = "pywin32-307-cp311-cp311-win_arm64.whl", hash = "sha256:fd436897c186a2e693cd0437386ed79f989f4d13d6f353f8787ecbb0ae719398"}, + {file = "pywin32-307-cp312-cp312-win32.whl", hash = "sha256:07649ec6b01712f36debf39fc94f3d696a46579e852f60157a729ac039df0815"}, + {file = "pywin32-307-cp312-cp312-win_amd64.whl", hash = "sha256:00d047992bb5dcf79f8b9b7c81f72e0130f9fe4b22df613f755ab1cc021d8347"}, + {file = "pywin32-307-cp312-cp312-win_arm64.whl", hash = "sha256:b53658acbfc6a8241d72cc09e9d1d666be4e6c99376bc59e26cdb6223c4554d2"}, + {file = "pywin32-307-cp313-cp313-win32.whl", hash = "sha256:ea4d56e48dc1ab2aa0a5e3c0741ad6e926529510516db7a3b6981a1ae74405e5"}, + {file = "pywin32-307-cp313-cp313-win_amd64.whl", hash = "sha256:576d09813eaf4c8168d0bfd66fb7cb3b15a61041cf41598c2db4a4583bf832d2"}, + {file = "pywin32-307-cp313-cp313-win_arm64.whl", hash = "sha256:b30c9bdbffda6a260beb2919f918daced23d32c79109412c2085cbc513338a0a"}, + {file = "pywin32-307-cp37-cp37m-win32.whl", hash = "sha256:5101472f5180c647d4525a0ed289ec723a26231550dbfd369ec19d5faf60e511"}, + {file = "pywin32-307-cp37-cp37m-win_amd64.whl", hash = "sha256:05de55a7c110478dc4b202230e98af5e0720855360d2b31a44bb4e296d795fba"}, + {file = "pywin32-307-cp38-cp38-win32.whl", hash = "sha256:13d059fb7f10792542082f5731d5d3d9645320fc38814759313e5ee97c3fac01"}, + {file = "pywin32-307-cp38-cp38-win_amd64.whl", hash = "sha256:7e0b2f93769d450a98ac7a31a087e07b126b6d571e8b4386a5762eb85325270b"}, + {file = "pywin32-307-cp39-cp39-win32.whl", hash = "sha256:55ee87f2f8c294e72ad9d4261ca423022310a6e79fb314a8ca76ab3f493854c6"}, + {file = "pywin32-307-cp39-cp39-win_amd64.whl", hash = "sha256:e9d5202922e74985b037c9ef46778335c102b74b95cec70f629453dbe7235d87"}, ] [[package]] @@ -2749,6 +2754,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.3.7" @@ -2797,6 +2816,11 @@ files = [ {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12"}, + {file = "scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, @@ -3064,13 +3088,13 @@ blobfile = ["blobfile (>=2)"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -3095,13 +3119,13 @@ telegram = ["requests"] [[package]] name = "types-pytz" -version = "2024.2.0.20240913" +version = "2024.2.0.20241003" description = "Typing stubs for pytz" optional = false python-versions = ">=3.8" files = [ - {file = "types-pytz-2024.2.0.20240913.tar.gz", hash = "sha256:4433b5df4a6fc587bbed41716d86a5ba5d832b4378e506f40d34bc9c81df2c24"}, - {file = "types_pytz-2024.2.0.20240913-py3-none-any.whl", hash = "sha256:a1eebf57ebc6e127a99d2fa2ba0a88d2b173784ef9b3defcc2004ab6855a44df"}, + {file = "types-pytz-2024.2.0.20241003.tar.gz", hash = "sha256:575dc38f385a922a212bac00a7d6d2e16e141132a3c955078f4a4fd13ed6cb44"}, + {file = "types_pytz-2024.2.0.20241003-py3-none-any.whl", hash = "sha256:3e22df1336c0c6ad1d29163c8fda82736909eb977281cb823c57f8bae07118b7"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-weaviate/pyproject.toml b/airbyte-integrations/connectors/destination-weaviate/pyproject.toml index c28c6568fd110..84463fb04adeb 100644 --- a/airbyte-integrations/connectors/destination-weaviate/pyproject.toml +++ b/airbyte-integrations/connectors/destination-weaviate/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-destination-weaviate" -version = "0.2.39" +version = "0.2.40" description = "Airbyte destination implementation for Weaviate." authors = ["Airbyte "] license = "MIT" diff --git a/docs/integrations/destinations/weaviate.md b/docs/integrations/destinations/weaviate.md index 46f4d41a19ad2..5643ad7757aa3 100644 --- a/docs/integrations/destinations/weaviate.md +++ b/docs/integrations/destinations/weaviate.md @@ -90,6 +90,7 @@ When using [multi-tenancy](https://weaviate.io/developers/weaviate/manage-data/m | Version | Date | Pull Request | Subject | |:--------| :--------- | :--------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.2.40 | 2024-10-05 | [46465](https://github.com/airbytehq/airbyte/pull/46465) | Update dependencies | | 0.2.39 | 2024-09-28 | [46189](https://github.com/airbytehq/airbyte/pull/46189) | Update dependencies | | 0.2.38 | 2024-09-21 | [45822](https://github.com/airbytehq/airbyte/pull/45822) | Update dependencies | | 0.2.37 | 2024-09-14 | [45560](https://github.com/airbytehq/airbyte/pull/45560) | Update dependencies | From 6bc6b3413216c0de158e4c96deceb412b3ffa4f0 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:26 +0300 Subject: [PATCH 077/379] =?UTF-8?q?=F0=9F=90=99=20destination-google-sheet?= =?UTF-8?q?s:=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46464)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-google-sheets/metadata.yaml | 2 +- .../destination-google-sheets/poetry.lock | 14 +++++++------- .../destination-google-sheets/pyproject.toml | 2 +- docs/integrations/destinations/google-sheets.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/destination-google-sheets/metadata.yaml b/airbyte-integrations/connectors/destination-google-sheets/metadata.yaml index 9918b129a9b23..a9b2d50665db8 100644 --- a/airbyte-integrations/connectors/destination-google-sheets/metadata.yaml +++ b/airbyte-integrations/connectors/destination-google-sheets/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: destination definitionId: a4cbd2d1-8dbe-4818-b8bc-b90ad782d12a - dockerImageTag: 0.2.25 + dockerImageTag: 0.2.26 dockerRepository: airbyte/destination-google-sheets githubIssueLabel: destination-google-sheets icon: google-sheets.svg diff --git a/airbyte-integrations/connectors/destination-google-sheets/poetry.lock b/airbyte-integrations/connectors/destination-google-sheets/poetry.lock index 8b022057d1ba8..f32bc56517a7f 100644 --- a/airbyte-integrations/connectors/destination-google-sheets/poetry.lock +++ b/airbyte-integrations/connectors/destination-google-sheets/poetry.lock @@ -82,13 +82,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -1168,13 +1168,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-google-sheets/pyproject.toml b/airbyte-integrations/connectors/destination-google-sheets/pyproject.toml index 0a9f1e4963fb0..afb0bd1341505 100644 --- a/airbyte-integrations/connectors/destination-google-sheets/pyproject.toml +++ b/airbyte-integrations/connectors/destination-google-sheets/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.25" +version = "0.2.26" name = "destination-google-sheets" description = "Destination implementation for Google Sheets." authors = [ "Airbyte ",] diff --git a/docs/integrations/destinations/google-sheets.md b/docs/integrations/destinations/google-sheets.md index 66f21bcc8687c..04a4713f3b949 100644 --- a/docs/integrations/destinations/google-sheets.md +++ b/docs/integrations/destinations/google-sheets.md @@ -155,6 +155,7 @@ EXAMPLE: | Version | Date | Pull Request | Subject | |---------| ---------- | -------------------------------------------------------- | ---------------------------------------------------------- | +| 0.2.26 | 2024-10-05 | [46464](https://github.com/airbytehq/airbyte/pull/46464) | Update dependencies | | 0.2.25 | 2024-09-28 | [46204](https://github.com/airbytehq/airbyte/pull/46204) | Update dependencies | | 0.2.24 | 2024-09-21 | [45772](https://github.com/airbytehq/airbyte/pull/45772) | Update dependencies | | 0.2.23 | 2024-09-14 | [45577](https://github.com/airbytehq/airbyte/pull/45577) | Update dependencies | From 6929736ac990504ac766bb7bf528debeeeb21853 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:28 +0300 Subject: [PATCH 078/379] =?UTF-8?q?=F0=9F=90=99=20destination-duckdb:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46463)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/destination-duckdb/metadata.yaml | 2 +- .../connectors/destination-duckdb/poetry.lock | 14 +++++++------- .../connectors/destination-duckdb/pyproject.toml | 2 +- docs/integrations/destinations/duckdb.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/destination-duckdb/metadata.yaml b/airbyte-integrations/connectors/destination-duckdb/metadata.yaml index 03ca532593efe..8bdd36ef264b2 100644 --- a/airbyte-integrations/connectors/destination-duckdb/metadata.yaml +++ b/airbyte-integrations/connectors/destination-duckdb/metadata.yaml @@ -4,7 +4,7 @@ data: connectorSubtype: database connectorType: destination definitionId: 94bd199c-2ff0-4aa2-b98e-17f0acb72610 - dockerImageTag: 0.4.22 + dockerImageTag: 0.4.23 dockerRepository: airbyte/destination-duckdb githubIssueLabel: destination-duckdb icon: duckdb.svg diff --git a/airbyte-integrations/connectors/destination-duckdb/poetry.lock b/airbyte-integrations/connectors/destination-duckdb/poetry.lock index 42f68c21d6d7c..7223639f606da 100644 --- a/airbyte-integrations/connectors/destination-duckdb/poetry.lock +++ b/airbyte-integrations/connectors/destination-duckdb/poetry.lock @@ -156,13 +156,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -1328,13 +1328,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-duckdb/pyproject.toml b/airbyte-integrations/connectors/destination-duckdb/pyproject.toml index 2e4ec0c5ff7ef..29b562465e43a 100644 --- a/airbyte-integrations/connectors/destination-duckdb/pyproject.toml +++ b/airbyte-integrations/connectors/destination-duckdb/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "destination-duckdb" -version = "0.4.22" +version = "0.4.23" description = "Destination implementation for Duckdb." authors = ["Simon Späti, Airbyte"] license = "MIT" diff --git a/docs/integrations/destinations/duckdb.md b/docs/integrations/destinations/duckdb.md index bc886f0af7123..fc77877e55495 100644 --- a/docs/integrations/destinations/duckdb.md +++ b/docs/integrations/destinations/duckdb.md @@ -116,6 +116,7 @@ This error may indicate that you are connecting with a `0.10.x` DuckDB client (a | Version | Date | Pull Request | Subject | |:--------| :--------- | :-------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.4.23 | 2024-10-05 | [46463](https://github.com/airbytehq/airbyte/pull/46463) | Update dependencies | | 0.4.22 | 2024-09-28 | [46145](https://github.com/airbytehq/airbyte/pull/46145) | Update dependencies | | 0.4.21 | 2024-09-21 | [45800](https://github.com/airbytehq/airbyte/pull/45800) | Update dependencies | | 0.4.20 | 2024-09-14 | [45480](https://github.com/airbytehq/airbyte/pull/45480) | Update dependencies | From b67c8625d298a8c0d07cace78b2c4f2e7cf071cc Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:31 +0300 Subject: [PATCH 079/379] =?UTF-8?q?=F0=9F=90=99=20source-railz:=20run=20up?= =?UTF-8?q?-to-date=20pipeline=20[2024-10-05]=20(#46462)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-railz/metadata.yaml | 2 +- .../connectors/source-railz/poetry.lock | 35 +++++++++++++------ .../connectors/source-railz/pyproject.toml | 2 +- docs/integrations/sources/railz.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-railz/metadata.yaml b/airbyte-integrations/connectors/source-railz/metadata.yaml index 2d8d39652dfb1..5eb30e3281d02 100644 --- a/airbyte-integrations/connectors/source-railz/metadata.yaml +++ b/airbyte-integrations/connectors/source-railz/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: 9b6cc0c0-da81-4103-bbfd-5279e18a849a - dockerImageTag: 0.1.15 + dockerImageTag: 0.1.16 dockerRepository: airbyte/source-railz githubIssueLabel: source-railz icon: railz.svg diff --git a/airbyte-integrations/connectors/source-railz/poetry.lock b/airbyte-integrations/connectors/source-railz/poetry.lock index 0fd79390a553d..42e51e69dff5d 100644 --- a/airbyte-integrations/connectors/source-railz/poetry.lock +++ b/airbyte-integrations/connectors/source-railz/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -497,13 +497,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -514,7 +514,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -678,13 +678,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -692,6 +692,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1265,6 +1266,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-railz/pyproject.toml b/airbyte-integrations/connectors/source-railz/pyproject.toml index 442abac9c3374..34bc05fa88edf 100644 --- a/airbyte-integrations/connectors/source-railz/pyproject.toml +++ b/airbyte-integrations/connectors/source-railz/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.15" +version = "0.1.16" name = "source-railz" description = "Source implementation for Railz." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/railz.md b/docs/integrations/sources/railz.md index e3e9ed611fa50..be1acfd7952f1 100644 --- a/docs/integrations/sources/railz.md +++ b/docs/integrations/sources/railz.md @@ -95,6 +95,7 @@ The Railz connector should gracefully handle Railz API limitations under normal | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :---------------- | +| 0.1.16 | 2024-10-05 | [46462](https://github.com/airbytehq/airbyte/pull/46462) | Update dependencies | | 0.1.15 | 2024-09-28 | [46182](https://github.com/airbytehq/airbyte/pull/46182) | Update dependencies | | 0.1.14 | 2024-09-21 | [45811](https://github.com/airbytehq/airbyte/pull/45811) | Update dependencies | | 0.1.13 | 2024-09-14 | [45576](https://github.com/airbytehq/airbyte/pull/45576) | Update dependencies | From 8369e6faf5033a2dd87ed4d59a2120c10c1b00c4 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:34 +0300 Subject: [PATCH 080/379] =?UTF-8?q?=F0=9F=90=99=20source-facebook-pages:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46461)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-facebook-pages/metadata.yaml | 2 +- .../source-facebook-pages/poetry.lock | 35 +++++++++++++------ .../source-facebook-pages/pyproject.toml | 2 +- docs/integrations/sources/facebook-pages.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-facebook-pages/metadata.yaml b/airbyte-integrations/connectors/source-facebook-pages/metadata.yaml index fe37cb7b4b564..2ed3823f80389 100644 --- a/airbyte-integrations/connectors/source-facebook-pages/metadata.yaml +++ b/airbyte-integrations/connectors/source-facebook-pages/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 010eb12f-837b-4685-892d-0a39f76a98f5 - dockerImageTag: 1.0.19 + dockerImageTag: 1.0.20 dockerRepository: airbyte/source-facebook-pages documentationUrl: https://docs.airbyte.com/integrations/sources/facebook-pages githubIssueLabel: source-facebook-pages diff --git a/airbyte-integrations/connectors/source-facebook-pages/poetry.lock b/airbyte-integrations/connectors/source-facebook-pages/poetry.lock index 54856222b9b95..90fadd5b0cefe 100644 --- a/airbyte-integrations/connectors/source-facebook-pages/poetry.lock +++ b/airbyte-integrations/connectors/source-facebook-pages/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-facebook-pages/pyproject.toml b/airbyte-integrations/connectors/source-facebook-pages/pyproject.toml index 54da1c6c16a0c..3e09961f748a3 100644 --- a/airbyte-integrations/connectors/source-facebook-pages/pyproject.toml +++ b/airbyte-integrations/connectors/source-facebook-pages/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.0.19" +version = "1.0.20" name = "source-facebook-pages" description = "Source implementation for Facebook Pages." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/facebook-pages.md b/docs/integrations/sources/facebook-pages.md index 7a40f29032a6b..ef519294418e2 100644 --- a/docs/integrations/sources/facebook-pages.md +++ b/docs/integrations/sources/facebook-pages.md @@ -88,6 +88,7 @@ See Facebook's [documentation on rate limiting](https://developers.facebook.com/ | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------ | +| 1.0.20 | 2024-10-05 | [46461](https://github.com/airbytehq/airbyte/pull/46461) | Update dependencies | | 1.0.19 | 2024-09-28 | [46133](https://github.com/airbytehq/airbyte/pull/46133) | Update dependencies | | 1.0.18 | 2024-09-21 | [45734](https://github.com/airbytehq/airbyte/pull/45734) | Update dependencies | | 1.0.17 | 2024-09-14 | [45563](https://github.com/airbytehq/airbyte/pull/45563) | Update dependencies | From 9a447cee8110004378b6f15329b24848666f0738 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:37 +0300 Subject: [PATCH 081/379] =?UTF-8?q?=F0=9F=90=99=20source-sendgrid:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46460)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-sendgrid/metadata.yaml | 2 +- .../connectors/source-sendgrid/poetry.lock | 203 ++++++++++-------- .../connectors/source-sendgrid/pyproject.toml | 2 +- docs/integrations/sources/sendgrid.md | 1 + 4 files changed, 121 insertions(+), 87 deletions(-) diff --git a/airbyte-integrations/connectors/source-sendgrid/metadata.yaml b/airbyte-integrations/connectors/source-sendgrid/metadata.yaml index fa8402b8266ae..85d1f90bfdb45 100644 --- a/airbyte-integrations/connectors/source-sendgrid/metadata.yaml +++ b/airbyte-integrations/connectors/source-sendgrid/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: fbb5fbe2-16ad-4cf4-af7d-ff9d9c316c87 - dockerImageTag: 1.1.3 + dockerImageTag: 1.1.4 releases: breakingChanges: 1.0.0: diff --git a/airbyte-integrations/connectors/source-sendgrid/poetry.lock b/airbyte-integrations/connectors/source-sendgrid/poetry.lock index ed81571b0e9da..1e4763efe0bea 100644 --- a/airbyte-integrations/connectors/source-sendgrid/poetry.lock +++ b/airbyte-integrations/connectors/source-sendgrid/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.7.5" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.7.5-py3-none-any.whl", hash = "sha256:57f1ba57f0ffdff384a2b1095143b527ab7320a4b2d9732faa2ea9b4b471e756"}, - {file = "airbyte_cdk-5.7.5.tar.gz", hash = "sha256:3a549fe4c987b900a08d8392a2910ab92c387406bb26ead2c48dc34e605ddb3b"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -26,7 +26,7 @@ jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" nltk = "3.8.1" orjson = ">=3.10.7,<4.0.0" -pandas = "2.2.0" +pandas = "2.2.2" pendulum = "<3.0.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" @@ -141,13 +141,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -520,13 +520,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -537,7 +537,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -712,13 +712,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -726,6 +726,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -823,47 +824,64 @@ twitter = ["twython"] [[package]] name = "numpy" -version = "1.26.4" +version = "2.1.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, ] [[package]] @@ -945,46 +963,46 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1009,6 +1027,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -1605,6 +1624,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "serpyco-rs" version = "1.11.0" diff --git a/airbyte-integrations/connectors/source-sendgrid/pyproject.toml b/airbyte-integrations/connectors/source-sendgrid/pyproject.toml index dfeec1f4a4c57..6f0dcab4e76f2 100644 --- a/airbyte-integrations/connectors/source-sendgrid/pyproject.toml +++ b/airbyte-integrations/connectors/source-sendgrid/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.1.3" +version = "1.1.4" name = "source-sendgrid" description = "Source implementation for Sendgrid." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/sendgrid.md b/docs/integrations/sources/sendgrid.md index c086fc0e43bea..9f13526f47073 100644 --- a/docs/integrations/sources/sendgrid.md +++ b/docs/integrations/sources/sendgrid.md @@ -89,6 +89,7 @@ The connector is restricted by normal Sendgrid [requests limitation](https://doc | Version | Date | Pull Request | Subject | |:--------|:-----------| :------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1.1.4 | 2024-10-05 | [46460](https://github.com/airbytehq/airbyte/pull/46460) | Update dependencies | | 1.1.3 | 2024-09-28 | [46105](https://github.com/airbytehq/airbyte/pull/46105) | Update dependencies | | 1.1.2 | 2024-09-21 | [45782](https://github.com/airbytehq/airbyte/pull/45782) | Update dependencies | | 1.1.1 | 2024-09-14 | [45525](https://github.com/airbytehq/airbyte/pull/45525) | Update dependencies | From 238cdec6775794e4daa2461cfb2725ca2a0fec9d Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:39 +0300 Subject: [PATCH 082/379] =?UTF-8?q?=F0=9F=90=99=20source-kyriba:=20run=20u?= =?UTF-8?q?p-to-date=20pipeline=20[2024-10-05]=20(#46459)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-integrations/connectors/source-kyriba/metadata.yaml | 2 +- airbyte-integrations/connectors/source-kyriba/poetry.lock | 6 +++--- .../connectors/source-kyriba/pyproject.toml | 2 +- docs/integrations/sources/kyriba.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-kyriba/metadata.yaml b/airbyte-integrations/connectors/source-kyriba/metadata.yaml index c41279627c607..6e1fcee43ea34 100644 --- a/airbyte-integrations/connectors/source-kyriba/metadata.yaml +++ b/airbyte-integrations/connectors/source-kyriba/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: 547dc08e-ab51-421d-953b-8f3745201a8c - dockerImageTag: 0.1.21 + dockerImageTag: 0.1.22 dockerRepository: airbyte/source-kyriba documentationUrl: https://docs.airbyte.com/integrations/sources/kyriba githubIssueLabel: source-kyriba diff --git a/airbyte-integrations/connectors/source-kyriba/poetry.lock b/airbyte-integrations/connectors/source-kyriba/poetry.lock index 45c71fcab3eb8..ce10b819fdf7e 100644 --- a/airbyte-integrations/connectors/source-kyriba/poetry.lock +++ b/airbyte-integrations/connectors/source-kyriba/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-kyriba/pyproject.toml b/airbyte-integrations/connectors/source-kyriba/pyproject.toml index 6546d8d797700..947da78d66936 100644 --- a/airbyte-integrations/connectors/source-kyriba/pyproject.toml +++ b/airbyte-integrations/connectors/source-kyriba/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.21" +version = "0.1.22" name = "source-kyriba" description = "Source implementation for Kyriba." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/kyriba.md b/docs/integrations/sources/kyriba.md index 60315d5a49eac..9d7b951dd8a93 100644 --- a/docs/integrations/sources/kyriba.md +++ b/docs/integrations/sources/kyriba.md @@ -71,6 +71,7 @@ The Kyriba connector should not run into API limitations under normal usage. [Cr | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------------------- | +| 0.1.22 | 2024-10-05 | [46459](https://github.com/airbytehq/airbyte/pull/46459) | Update dependencies | | 0.1.21 | 2024-09-28 | [46203](https://github.com/airbytehq/airbyte/pull/46203) | Update dependencies | | 0.1.20 | 2024-09-21 | [45816](https://github.com/airbytehq/airbyte/pull/45816) | Update dependencies | | 0.1.19 | 2024-09-14 | [45569](https://github.com/airbytehq/airbyte/pull/45569) | Update dependencies | From a3db474974e1aeb2218b9274e0064426490070b9 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:42 +0300 Subject: [PATCH 083/379] =?UTF-8?q?=F0=9F=90=99=20source-gcs:=20run=20up-t?= =?UTF-8?q?o-date=20pipeline=20[2024-10-05]=20(#46458)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-gcs/metadata.yaml | 2 +- .../connectors/source-gcs/poetry.lock | 156 ++++++++++-------- .../connectors/source-gcs/pyproject.toml | 2 +- docs/integrations/sources/gcs.md | 1 + 4 files changed, 91 insertions(+), 70 deletions(-) diff --git a/airbyte-integrations/connectors/source-gcs/metadata.yaml b/airbyte-integrations/connectors/source-gcs/metadata.yaml index 015897d552da2..bbe0d0dda262e 100644 --- a/airbyte-integrations/connectors/source-gcs/metadata.yaml +++ b/airbyte-integrations/connectors/source-gcs/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: file connectorType: source definitionId: 2a8c41ae-8c23-4be0-a73f-2ab10ca1a820 - dockerImageTag: 0.7.2 + dockerImageTag: 0.7.3 dockerRepository: airbyte/source-gcs documentationUrl: https://docs.airbyte.com/integrations/sources/gcs githubIssueLabel: source-gcs diff --git a/airbyte-integrations/connectors/source-gcs/poetry.lock b/airbyte-integrations/connectors/source-gcs/poetry.lock index b765ad6abdbc1..bf47d09f6c3f1 100644 --- a/airbyte-integrations/connectors/source-gcs/poetry.lock +++ b/airbyte-integrations/connectors/source-gcs/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.7.5" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.7.5-py3-none-any.whl", hash = "sha256:57f1ba57f0ffdff384a2b1095143b527ab7320a4b2d9732faa2ea9b4b471e756"}, - {file = "airbyte_cdk-5.7.5.tar.gz", hash = "sha256:3a549fe4c987b900a08d8392a2910ab92c387406bb26ead2c48dc34e605ddb3b"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -29,7 +29,7 @@ langchain_core = "0.1.42" markdown = {version = "*", optional = true, markers = "extra == \"file-based\""} nltk = "3.8.1" orjson = ">=3.10.7,<4.0.0" -pandas = "2.2.0" +pandas = "2.2.2" pdf2image = {version = "1.16.3", optional = true, markers = "extra == \"file-based\""} "pdfminer.six" = {version = "20221105", optional = true, markers = "extra == \"file-based\""} pendulum = "<3.0.0" @@ -177,13 +177,13 @@ lxml = ["lxml"] [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -671,13 +671,13 @@ files = [ [[package]] name = "emoji" -version = "2.13.2" +version = "2.14.0" description = "Emoji for Python" optional = false python-versions = ">=3.7" files = [ - {file = "emoji-2.13.2-py3-none-any.whl", hash = "sha256:ef6f2ee63b245e934c763b1a9a0637713955aa3d9e322432e036bb60559de4d6"}, - {file = "emoji-2.13.2.tar.gz", hash = "sha256:f95d10d96c5f21299ed2c4b32511611ba890b8c07f5f2bf5b04d5d3eee91fd19"}, + {file = "emoji-2.14.0-py3-none-any.whl", hash = "sha256:fcc936bf374b1aec67dda5303ae99710ba88cc9cdce2d1a71c5f2204e6d78799"}, + {file = "emoji-2.14.0.tar.gz", hash = "sha256:f68ac28915a2221667cddb3e6c589303c3c6954c6c5af6fefaec7f9bdf72fdca"}, ] [package.extras] @@ -937,13 +937,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -954,7 +954,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -1143,13 +1143,13 @@ six = "*" [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -1157,6 +1157,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "lxml" @@ -1575,46 +1576,46 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1639,6 +1640,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -2425,25 +2427,29 @@ files = [ [[package]] name = "pywin32" -version = "306" +version = "307" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, + {file = "pywin32-307-cp310-cp310-win32.whl", hash = "sha256:f8f25d893c1e1ce2d685ef6d0a481e87c6f510d0f3f117932781f412e0eba31b"}, + {file = "pywin32-307-cp310-cp310-win_amd64.whl", hash = "sha256:36e650c5e5e6b29b5d317385b02d20803ddbac5d1031e1f88d20d76676dd103d"}, + {file = "pywin32-307-cp310-cp310-win_arm64.whl", hash = "sha256:0c12d61e0274e0c62acee79e3e503c312426ddd0e8d4899c626cddc1cafe0ff4"}, + {file = "pywin32-307-cp311-cp311-win32.whl", hash = "sha256:fec5d27cc893178fab299de911b8e4d12c5954e1baf83e8a664311e56a272b75"}, + {file = "pywin32-307-cp311-cp311-win_amd64.whl", hash = "sha256:987a86971753ed7fdd52a7fb5747aba955b2c7fbbc3d8b76ec850358c1cc28c3"}, + {file = "pywin32-307-cp311-cp311-win_arm64.whl", hash = "sha256:fd436897c186a2e693cd0437386ed79f989f4d13d6f353f8787ecbb0ae719398"}, + {file = "pywin32-307-cp312-cp312-win32.whl", hash = "sha256:07649ec6b01712f36debf39fc94f3d696a46579e852f60157a729ac039df0815"}, + {file = "pywin32-307-cp312-cp312-win_amd64.whl", hash = "sha256:00d047992bb5dcf79f8b9b7c81f72e0130f9fe4b22df613f755ab1cc021d8347"}, + {file = "pywin32-307-cp312-cp312-win_arm64.whl", hash = "sha256:b53658acbfc6a8241d72cc09e9d1d666be4e6c99376bc59e26cdb6223c4554d2"}, + {file = "pywin32-307-cp313-cp313-win32.whl", hash = "sha256:ea4d56e48dc1ab2aa0a5e3c0741ad6e926529510516db7a3b6981a1ae74405e5"}, + {file = "pywin32-307-cp313-cp313-win_amd64.whl", hash = "sha256:576d09813eaf4c8168d0bfd66fb7cb3b15a61041cf41598c2db4a4583bf832d2"}, + {file = "pywin32-307-cp313-cp313-win_arm64.whl", hash = "sha256:b30c9bdbffda6a260beb2919f918daced23d32c79109412c2085cbc513338a0a"}, + {file = "pywin32-307-cp37-cp37m-win32.whl", hash = "sha256:5101472f5180c647d4525a0ed289ec723a26231550dbfd369ec19d5faf60e511"}, + {file = "pywin32-307-cp37-cp37m-win_amd64.whl", hash = "sha256:05de55a7c110478dc4b202230e98af5e0720855360d2b31a44bb4e296d795fba"}, + {file = "pywin32-307-cp38-cp38-win32.whl", hash = "sha256:13d059fb7f10792542082f5731d5d3d9645320fc38814759313e5ee97c3fac01"}, + {file = "pywin32-307-cp38-cp38-win_amd64.whl", hash = "sha256:7e0b2f93769d450a98ac7a31a087e07b126b6d571e8b4386a5762eb85325270b"}, + {file = "pywin32-307-cp39-cp39-win32.whl", hash = "sha256:55ee87f2f8c294e72ad9d4261ca423022310a6e79fb314a8ca76ab3f493854c6"}, + {file = "pywin32-307-cp39-cp39-win_amd64.whl", hash = "sha256:e9d5202922e74985b037c9ef46778335c102b74b95cec70f629453dbe7235d87"}, ] [[package]] @@ -2779,6 +2785,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "rsa" version = "4.9" @@ -2954,13 +2974,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-gcs/pyproject.toml b/airbyte-integrations/connectors/source-gcs/pyproject.toml index 33be2bc753b24..ed9c02d18b35b 100644 --- a/airbyte-integrations/connectors/source-gcs/pyproject.toml +++ b/airbyte-integrations/connectors/source-gcs/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.7.2" +version = "0.7.3" name = "source-gcs" description = "Source implementation for Gcs." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/gcs.md b/docs/integrations/sources/gcs.md index 8f035b19c45d2..b303ec18ec80a 100644 --- a/docs/integrations/sources/gcs.md +++ b/docs/integrations/sources/gcs.md @@ -224,6 +224,7 @@ Google Cloud Storage (GCS) supports following file formats: | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------| +| 0.7.3 | 2024-10-05 | [46458](https://github.com/airbytehq/airbyte/pull/46458) | Update dependencies | | 0.7.2 | 2024-09-28 | [46178](https://github.com/airbytehq/airbyte/pull/46178) | Update dependencies | | 0.7.1 | 2024-09-24 | [45850](https://github.com/airbytehq/airbyte/pull/45850) | Add integration tests | | 0.7.0 | 2024-09-24 | [45671](https://github.com/airbytehq/airbyte/pull/45671) | Add .zip files support | From e4ee1fc366b907ae6575edb038c20f470ada506b Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:45 +0300 Subject: [PATCH 084/379] =?UTF-8?q?=F0=9F=90=99=20source-firebase-realtime?= =?UTF-8?q?-database:=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#464?= =?UTF-8?q?57)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metadata.yaml | 2 +- .../poetry.lock | 36 +++++++++++++------ .../pyproject.toml | 2 +- .../sources/firebase-realtime-database.md | 1 + 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-firebase-realtime-database/metadata.yaml b/airbyte-integrations/connectors/source-firebase-realtime-database/metadata.yaml index 636d704782896..c1c2a4782c2a2 100644 --- a/airbyte-integrations/connectors/source-firebase-realtime-database/metadata.yaml +++ b/airbyte-integrations/connectors/source-firebase-realtime-database/metadata.yaml @@ -5,7 +5,7 @@ data: connectorSubtype: database connectorType: source definitionId: acb5f973-a565-441e-992f-4946f3e65662 - dockerImageTag: 0.1.23 + dockerImageTag: 0.1.24 dockerRepository: airbyte/source-firebase-realtime-database githubIssueLabel: source-firebase-realtime-database license: MIT diff --git a/airbyte-integrations/connectors/source-firebase-realtime-database/poetry.lock b/airbyte-integrations/connectors/source-firebase-realtime-database/poetry.lock index 90aa376901082..309bd4901a84c 100644 --- a/airbyte-integrations/connectors/source-firebase-realtime-database/poetry.lock +++ b/airbyte-integrations/connectors/source-firebase-realtime-database/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -793,6 +793,7 @@ files = [ {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c3a99c519f4638e700e9e3f83952e27e2ea10873eecd7935823dab0c1c9250e"}, {file = "grpcio-1.66.2-cp39-cp39-win32.whl", hash = "sha256:78fa51ebc2d9242c0fc5db0feecc57a9943303b46664ad89921f5079e2e4ada7"}, {file = "grpcio-1.66.2-cp39-cp39-win_amd64.whl", hash = "sha256:728bdf36a186e7f51da73be7f8d09457a03061be848718d0edf000e709418987"}, + {file = "grpcio-1.66.2.tar.gz", hash = "sha256:563588c587b75c34b928bc428548e5b00ea38c46972181a4d8b75ba7e3f24231"}, ] [package.extras] @@ -827,13 +828,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -844,7 +845,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httplib2" @@ -1022,13 +1023,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -1036,6 +1037,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1761,6 +1763,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "rsa" version = "4.9" diff --git a/airbyte-integrations/connectors/source-firebase-realtime-database/pyproject.toml b/airbyte-integrations/connectors/source-firebase-realtime-database/pyproject.toml index ef9603c76e927..a72043fb60943 100644 --- a/airbyte-integrations/connectors/source-firebase-realtime-database/pyproject.toml +++ b/airbyte-integrations/connectors/source-firebase-realtime-database/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.23" +version = "0.1.24" name = "source-firebase-realtime-database" description = "Source implementation for Firebase Realtime Database." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/firebase-realtime-database.md b/docs/integrations/sources/firebase-realtime-database.md index 598e981ce9558..4fc5e3bed0b59 100644 --- a/docs/integrations/sources/firebase-realtime-database.md +++ b/docs/integrations/sources/firebase-realtime-database.md @@ -79,6 +79,7 @@ Once you've configured Firebase Realtime Database as a source, delete the Servic | Version | Date | Pull Request | Subject | | :------ | :--------- | :--------------------------------------------------------- | :----------------------------------------- | +| 0.1.24 | 2024-10-05 | [46457](https://github.com/airbytehq/airbyte/pull/46457) | Update dependencies | | 0.1.23 | 2024-09-28 | [46135](https://github.com/airbytehq/airbyte/pull/46135) | Update dependencies | | 0.1.22 | 2024-09-21 | [45804](https://github.com/airbytehq/airbyte/pull/45804) | Update dependencies | | 0.1.21 | 2024-09-14 | [45505](https://github.com/airbytehq/airbyte/pull/45505) | Update dependencies | From f430dc362839944d4921df1908dfb2eac7126567 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:47 +0300 Subject: [PATCH 085/379] =?UTF-8?q?=F0=9F=90=99=20source-recurly:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46456)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-recurly/metadata.yaml | 2 +- airbyte-integrations/connectors/source-recurly/poetry.lock | 6 +++--- .../connectors/source-recurly/pyproject.toml | 2 +- docs/integrations/sources/recurly.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-recurly/metadata.yaml b/airbyte-integrations/connectors/source-recurly/metadata.yaml index 54b1295ed0c18..a335f61975e48 100644 --- a/airbyte-integrations/connectors/source-recurly/metadata.yaml +++ b/airbyte-integrations/connectors/source-recurly/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: cd42861b-01fc-4658-a8ab-5d11d0510f01 - dockerImageTag: 1.1.9 + dockerImageTag: 1.1.10 dockerRepository: airbyte/source-recurly documentationUrl: https://docs.airbyte.com/integrations/sources/recurly githubIssueLabel: source-recurly diff --git a/airbyte-integrations/connectors/source-recurly/poetry.lock b/airbyte-integrations/connectors/source-recurly/poetry.lock index b3ca32598b199..3a31215a563b4 100644 --- a/airbyte-integrations/connectors/source-recurly/poetry.lock +++ b/airbyte-integrations/connectors/source-recurly/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-recurly/pyproject.toml b/airbyte-integrations/connectors/source-recurly/pyproject.toml index 1d5f4b3d09d2e..5b4f4830a7dc4 100644 --- a/airbyte-integrations/connectors/source-recurly/pyproject.toml +++ b/airbyte-integrations/connectors/source-recurly/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.1.9" +version = "1.1.10" name = "source-recurly" description = "Source implementation for Recurly." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/recurly.md b/docs/integrations/sources/recurly.md index 4ef7d732e1920..4fba7654f1d38 100644 --- a/docs/integrations/sources/recurly.md +++ b/docs/integrations/sources/recurly.md @@ -66,6 +66,7 @@ We recommend creating a restricted, read-only key specifically for Airbyte acces | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------------------------------------------------------------- | +| 1.1.10 | 2024-10-05 | [46456](https://github.com/airbytehq/airbyte/pull/46456) | Update dependencies | | 1.1.9 | 2024-09-28 | [46140](https://github.com/airbytehq/airbyte/pull/46140) | Update dependencies | | 1.1.8 | 2024-09-21 | [45764](https://github.com/airbytehq/airbyte/pull/45764) | Update dependencies | | 1.1.7 | 2024-09-14 | [45471](https://github.com/airbytehq/airbyte/pull/45471) | Update dependencies | From 7e6d1ab6b35763ac5d7ab19b981e3161fb19be47 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:50 +0300 Subject: [PATCH 086/379] =?UTF-8?q?=F0=9F=90=99=20source-flexport:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46455)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-flexport/metadata.yaml | 2 +- .../connectors/source-flexport/poetry.lock | 35 +++++++++++++------ .../connectors/source-flexport/pyproject.toml | 2 +- docs/integrations/sources/flexport.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-flexport/metadata.yaml b/airbyte-integrations/connectors/source-flexport/metadata.yaml index 9bbe1efce6ee8..41053ed9d3cba 100644 --- a/airbyte-integrations/connectors/source-flexport/metadata.yaml +++ b/airbyte-integrations/connectors/source-flexport/metadata.yaml @@ -15,7 +15,7 @@ data: connectorSubtype: api connectorType: source definitionId: f95337f1-2ad1-4baf-922f-2ca9152de630 - dockerImageTag: 0.2.19 + dockerImageTag: 0.2.20 dockerRepository: airbyte/source-flexport githubIssueLabel: source-flexport icon: flexport.svg diff --git a/airbyte-integrations/connectors/source-flexport/poetry.lock b/airbyte-integrations/connectors/source-flexport/poetry.lock index 68a741ee8ec78..1aa5b5c1ab01e 100644 --- a/airbyte-integrations/connectors/source-flexport/poetry.lock +++ b/airbyte-integrations/connectors/source-flexport/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-flexport/pyproject.toml b/airbyte-integrations/connectors/source-flexport/pyproject.toml index 0f1afeef308a1..d4ce98e8d2f06 100644 --- a/airbyte-integrations/connectors/source-flexport/pyproject.toml +++ b/airbyte-integrations/connectors/source-flexport/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.19" +version = "0.2.20" name = "source-flexport" description = "Source implementation for Flexport." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/flexport.md b/docs/integrations/sources/flexport.md index 7f8e471fcf5e1..4283275235306 100644 --- a/docs/integrations/sources/flexport.md +++ b/docs/integrations/sources/flexport.md @@ -49,6 +49,7 @@ Authentication uses a pre-created API token which can be [created in the UI](htt | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------ | +| 0.2.20 | 2024-10-05 | [46455](https://github.com/airbytehq/airbyte/pull/46455) | Update dependencies | | 0.2.19 | 2024-09-28 | [46199](https://github.com/airbytehq/airbyte/pull/46199) | Update dependencies | | 0.2.18 | 2024-09-21 | [45735](https://github.com/airbytehq/airbyte/pull/45735) | Update dependencies | | 0.2.17 | 2024-09-14 | [45508](https://github.com/airbytehq/airbyte/pull/45508) | Update dependencies | From 349af54a48e436b7212732d42a8b0b1d771749c5 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:54 +0300 Subject: [PATCH 087/379] =?UTF-8?q?=F0=9F=90=99=20source-rss:=20run=20up-t?= =?UTF-8?q?o-date=20pipeline=20[2024-10-05]=20(#46454)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-rss/metadata.yaml | 2 +- .../connectors/source-rss/poetry.lock | 43 +++++++++++++------ .../connectors/source-rss/pyproject.toml | 2 +- docs/integrations/sources/rss.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-rss/metadata.yaml b/airbyte-integrations/connectors/source-rss/metadata.yaml index 5382322cbe9b1..996978b2e83f6 100644 --- a/airbyte-integrations/connectors/source-rss/metadata.yaml +++ b/airbyte-integrations/connectors/source-rss/metadata.yaml @@ -24,7 +24,7 @@ data: connectorSubtype: api connectorType: source definitionId: 0efee448-6948-49e2-b786-17db50647908 - dockerImageTag: 1.0.20 + dockerImageTag: 1.0.21 dockerRepository: airbyte/source-rss githubIssueLabel: source-rss icon: rss.svg diff --git a/airbyte-integrations/connectors/source-rss/poetry.lock b/airbyte-integrations/connectors/source-rss/poetry.lock index f6a1088d3b922..1fe7f0f29e96e 100644 --- a/airbyte-integrations/connectors/source-rss/poetry.lock +++ b/airbyte-integrations/connectors/source-rss/poetry.lock @@ -107,13 +107,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -486,13 +486,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -503,7 +503,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -667,13 +667,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -681,6 +681,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1241,6 +1242,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1310,13 +1325,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-rss/pyproject.toml b/airbyte-integrations/connectors/source-rss/pyproject.toml index abae3bfe606c2..52402dfb4f601 100644 --- a/airbyte-integrations/connectors/source-rss/pyproject.toml +++ b/airbyte-integrations/connectors/source-rss/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.0.20" +version = "1.0.21" name = "source-rss" description = "Source implementation for rss." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/rss.md b/docs/integrations/sources/rss.md index 467fee6eb208e..a965b56369699 100644 --- a/docs/integrations/sources/rss.md +++ b/docs/integrations/sources/rss.md @@ -38,6 +38,7 @@ None | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------- | +| 1.0.21 | 2024-10-05 | [46454](https://github.com/airbytehq/airbyte/pull/46454) | Update dependencies | | 1.0.20 | 2024-09-28 | [46185](https://github.com/airbytehq/airbyte/pull/46185) | Update dependencies | | 1.0.19 | 2024-09-21 | [45812](https://github.com/airbytehq/airbyte/pull/45812) | Update dependencies | | 1.0.18 | 2024-09-14 | [45538](https://github.com/airbytehq/airbyte/pull/45538) | Update dependencies | From 85ec8533ca44c005abd58a13edd3eded06a71bbd Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:56 +0300 Subject: [PATCH 088/379] =?UTF-8?q?=F0=9F=90=99=20source-bigcommerce:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46453)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-bigcommerce/metadata.yaml | 2 +- .../connectors/source-bigcommerce/poetry.lock | 35 +++++++++++++------ .../source-bigcommerce/pyproject.toml | 2 +- docs/integrations/sources/bigcommerce.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-bigcommerce/metadata.yaml b/airbyte-integrations/connectors/source-bigcommerce/metadata.yaml index c92595fb43755..ab80010341299 100644 --- a/airbyte-integrations/connectors/source-bigcommerce/metadata.yaml +++ b/airbyte-integrations/connectors/source-bigcommerce/metadata.yaml @@ -14,7 +14,7 @@ data: connectorSubtype: api connectorType: source definitionId: 59c5501b-9f95-411e-9269-7143c939adbd - dockerImageTag: 0.2.19 + dockerImageTag: 0.2.20 dockerRepository: airbyte/source-bigcommerce documentationUrl: https://docs.airbyte.com/integrations/sources/bigcommerce githubIssueLabel: source-bigcommerce diff --git a/airbyte-integrations/connectors/source-bigcommerce/poetry.lock b/airbyte-integrations/connectors/source-bigcommerce/poetry.lock index 68a741ee8ec78..1aa5b5c1ab01e 100644 --- a/airbyte-integrations/connectors/source-bigcommerce/poetry.lock +++ b/airbyte-integrations/connectors/source-bigcommerce/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-bigcommerce/pyproject.toml b/airbyte-integrations/connectors/source-bigcommerce/pyproject.toml index 22a706eac7b72..2af4279f0f385 100644 --- a/airbyte-integrations/connectors/source-bigcommerce/pyproject.toml +++ b/airbyte-integrations/connectors/source-bigcommerce/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.19" +version = "0.2.20" name = "source-bigcommerce" description = "Source implementation for Bigcommerce." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/bigcommerce.md b/docs/integrations/sources/bigcommerce.md index a90e4c61d3d1e..882c894f30d0e 100644 --- a/docs/integrations/sources/bigcommerce.md +++ b/docs/integrations/sources/bigcommerce.md @@ -58,6 +58,7 @@ BigCommerce has some [rate limit restrictions](https://developer.bigcommerce.com | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :---------------------------------------------------------- | +| 0.2.20 | 2024-10-05 | [46453](https://github.com/airbytehq/airbyte/pull/46453) | Update dependencies | | 0.2.19 | 2024-09-28 | [46206](https://github.com/airbytehq/airbyte/pull/46206) | Update dependencies | | 0.2.18 | 2024-09-21 | [45725](https://github.com/airbytehq/airbyte/pull/45725) | Update dependencies | | 0.2.17 | 2024-09-14 | [45539](https://github.com/airbytehq/airbyte/pull/45539) | Update dependencies | From 74d5d4cc913e3deb65fb5a9ccc8264fb987ee50d Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:19:59 +0300 Subject: [PATCH 089/379] =?UTF-8?q?=F0=9F=90=99=20source-partnerstack:=20r?= =?UTF-8?q?un=20up-to-date=20pipeline=20[2024-10-05]=20(#46452)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-partnerstack/metadata.yaml | 2 +- .../source-partnerstack/poetry.lock | 35 +++++++++++++------ .../source-partnerstack/pyproject.toml | 2 +- docs/integrations/sources/partnerstack.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-partnerstack/metadata.yaml b/airbyte-integrations/connectors/source-partnerstack/metadata.yaml index 6933ba3955021..db213721b4471 100644 --- a/airbyte-integrations/connectors/source-partnerstack/metadata.yaml +++ b/airbyte-integrations/connectors/source-partnerstack/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: d30fb809-6456-484d-8e2c-ee12e0f6888d - dockerImageTag: 0.1.20 + dockerImageTag: 0.1.21 dockerRepository: airbyte/source-partnerstack githubIssueLabel: source-partnerstack icon: partnerstack.svg diff --git a/airbyte-integrations/connectors/source-partnerstack/poetry.lock b/airbyte-integrations/connectors/source-partnerstack/poetry.lock index 116b0d191d745..b5f0e47b6b507 100644 --- a/airbyte-integrations/connectors/source-partnerstack/poetry.lock +++ b/airbyte-integrations/connectors/source-partnerstack/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-partnerstack/pyproject.toml b/airbyte-integrations/connectors/source-partnerstack/pyproject.toml index d5048ec05bd9c..8de871840ed4f 100644 --- a/airbyte-integrations/connectors/source-partnerstack/pyproject.toml +++ b/airbyte-integrations/connectors/source-partnerstack/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.20" +version = "0.1.21" name = "source-partnerstack" description = "Source implementation for Partnerstack." authors = [ "Elliot Trabac ",] diff --git a/docs/integrations/sources/partnerstack.md b/docs/integrations/sources/partnerstack.md index 18954b24d6324..ff38b6d39321a 100644 --- a/docs/integrations/sources/partnerstack.md +++ b/docs/integrations/sources/partnerstack.md @@ -41,6 +41,7 @@ The Partnerstack connector should not run into Partnerstack API limitations unde | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:--------------------------------------------| +| 0.1.21 | 2024-10-05 | [46452](https://github.com/airbytehq/airbyte/pull/46452) | Update dependencies | | 0.1.20 | 2024-09-28 | [46111](https://github.com/airbytehq/airbyte/pull/46111) | Update dependencies | | 0.1.19 | 2024-09-21 | [45775](https://github.com/airbytehq/airbyte/pull/45775) | Update dependencies | | 0.1.18 | 2024-09-14 | [45506](https://github.com/airbytehq/airbyte/pull/45506) | Update dependencies | From 8b2d6aa75babb5ebbd632ed6f15314616e5adef6 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:01 +0300 Subject: [PATCH 090/379] =?UTF-8?q?=F0=9F=90=99=20source-amazon-ads:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46451)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-amazon-ads/metadata.yaml | 2 +- .../connectors/source-amazon-ads/poetry.lock | 35 +++++++++++++------ .../source-amazon-ads/pyproject.toml | 2 +- docs/integrations/sources/amazon-ads.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-amazon-ads/metadata.yaml b/airbyte-integrations/connectors/source-amazon-ads/metadata.yaml index ec3597c289f5e..d2cbe4b174a33 100644 --- a/airbyte-integrations/connectors/source-amazon-ads/metadata.yaml +++ b/airbyte-integrations/connectors/source-amazon-ads/metadata.yaml @@ -13,7 +13,7 @@ data: connectorSubtype: api connectorType: source definitionId: c6b0a29e-1da9-4512-9002-7bfd0cba2246 - dockerImageTag: 5.0.17 + dockerImageTag: 5.0.18 dockerRepository: airbyte/source-amazon-ads documentationUrl: https://docs.airbyte.com/integrations/sources/amazon-ads githubIssueLabel: source-amazon-ads diff --git a/airbyte-integrations/connectors/source-amazon-ads/poetry.lock b/airbyte-integrations/connectors/source-amazon-ads/poetry.lock index 38aa86dfd4b3f..d0cdb2bf53984 100644 --- a/airbyte-integrations/connectors/source-amazon-ads/poetry.lock +++ b/airbyte-integrations/connectors/source-amazon-ads/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -497,13 +497,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -514,7 +514,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -678,13 +678,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -692,6 +692,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1299,6 +1300,20 @@ requests = ">=2.0.0" [package.extras] rsa = ["oauthlib[signedtoken] (>=3.0.0)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "responses" version = "0.23.3" diff --git a/airbyte-integrations/connectors/source-amazon-ads/pyproject.toml b/airbyte-integrations/connectors/source-amazon-ads/pyproject.toml index c8a5b251c64e0..ab5c728d5fd0f 100644 --- a/airbyte-integrations/connectors/source-amazon-ads/pyproject.toml +++ b/airbyte-integrations/connectors/source-amazon-ads/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.0.17" +version = "5.0.18" name = "source-amazon-ads" description = "Source implementation for Amazon Ads." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/amazon-ads.md b/docs/integrations/sources/amazon-ads.md index 1a01bb0aa1c7b..0d1071a01ec78 100644 --- a/docs/integrations/sources/amazon-ads.md +++ b/docs/integrations/sources/amazon-ads.md @@ -153,6 +153,7 @@ Information about expected report generation waiting time can be found [here](ht | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------| +| 5.0.18 | 2024-10-05 | [46451](https://github.com/airbytehq/airbyte/pull/46451) | Update dependencies | | 5.0.17 | 2024-09-28 | [45794](https://github.com/airbytehq/airbyte/pull/45794) | Update dependencies | | 5.0.16 | 2024-09-14 | [45548](https://github.com/airbytehq/airbyte/pull/45548) | Update dependencies | | 5.0.15 | 2024-09-07 | [45308](https://github.com/airbytehq/airbyte/pull/45308) | Update dependencies | From e48cfbf77972e39a1809ed286e2ca93877eee7fc Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:04 +0300 Subject: [PATCH 091/379] =?UTF-8?q?=F0=9F=90=99=20source-surveycto:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46450)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-surveycto/metadata.yaml | 2 +- .../connectors/source-surveycto/poetry.lock | 119 ++++++++++-------- .../source-surveycto/pyproject.toml | 2 +- docs/integrations/sources/surveycto.md | 1 + 4 files changed, 67 insertions(+), 57 deletions(-) diff --git a/airbyte-integrations/connectors/source-surveycto/metadata.yaml b/airbyte-integrations/connectors/source-surveycto/metadata.yaml index 866d182d84a9a..f2196fa4e0168 100644 --- a/airbyte-integrations/connectors/source-surveycto/metadata.yaml +++ b/airbyte-integrations/connectors/source-surveycto/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: dd4632f4-15e0-4649-9b71-41719fb1fdee - dockerImageTag: 0.1.22 + dockerImageTag: 0.1.23 dockerRepository: airbyte/source-surveycto githubIssueLabel: source-surveycto icon: surveycto.svg diff --git a/airbyte-integrations/connectors/source-surveycto/poetry.lock b/airbyte-integrations/connectors/source-surveycto/poetry.lock index fba85138abd6a..5e9db869466f9 100644 --- a/airbyte-integrations/connectors/source-surveycto/poetry.lock +++ b/airbyte-integrations/connectors/source-surveycto/poetry.lock @@ -102,13 +102,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -529,76 +529,85 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "grpcio" -version = "1.66.1" +version = "1.66.2" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.66.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:4877ba180591acdf127afe21ec1c7ff8a5ecf0fe2600f0d3c50e8c4a1cbc6492"}, - {file = "grpcio-1.66.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:3750c5a00bd644c75f4507f77a804d0189d97a107eb1481945a0cf3af3e7a5ac"}, - {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:a013c5fbb12bfb5f927444b477a26f1080755a931d5d362e6a9a720ca7dbae60"}, - {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1b24c23d51a1e8790b25514157d43f0a4dce1ac12b3f0b8e9f66a5e2c4c132f"}, - {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7ffb8ea674d68de4cac6f57d2498fef477cef582f1fa849e9f844863af50083"}, - {file = "grpcio-1.66.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:307b1d538140f19ccbd3aed7a93d8f71103c5d525f3c96f8616111614b14bf2a"}, - {file = "grpcio-1.66.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1c17ebcec157cfb8dd445890a03e20caf6209a5bd4ac5b040ae9dbc59eef091d"}, - {file = "grpcio-1.66.1-cp310-cp310-win32.whl", hash = "sha256:ef82d361ed5849d34cf09105d00b94b6728d289d6b9235513cb2fcc79f7c432c"}, - {file = "grpcio-1.66.1-cp310-cp310-win_amd64.whl", hash = "sha256:292a846b92cdcd40ecca46e694997dd6b9be6c4c01a94a0dfb3fcb75d20da858"}, - {file = "grpcio-1.66.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:c30aeceeaff11cd5ddbc348f37c58bcb96da8d5aa93fed78ab329de5f37a0d7a"}, - {file = "grpcio-1.66.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8a1e224ce6f740dbb6b24c58f885422deebd7eb724aff0671a847f8951857c26"}, - {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:a66fe4dc35d2330c185cfbb42959f57ad36f257e0cc4557d11d9f0a3f14311df"}, - {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3ba04659e4fce609de2658fe4dbf7d6ed21987a94460f5f92df7579fd5d0e22"}, - {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4573608e23f7e091acfbe3e84ac2045680b69751d8d67685ffa193a4429fedb1"}, - {file = "grpcio-1.66.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7e06aa1f764ec8265b19d8f00140b8c4b6ca179a6dc67aa9413867c47e1fb04e"}, - {file = "grpcio-1.66.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3885f037eb11f1cacc41f207b705f38a44b69478086f40608959bf5ad85826dd"}, - {file = "grpcio-1.66.1-cp311-cp311-win32.whl", hash = "sha256:97ae7edd3f3f91480e48ede5d3e7d431ad6005bfdbd65c1b56913799ec79e791"}, - {file = "grpcio-1.66.1-cp311-cp311-win_amd64.whl", hash = "sha256:cfd349de4158d797db2bd82d2020554a121674e98fbe6b15328456b3bf2495bb"}, - {file = "grpcio-1.66.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:a92c4f58c01c77205df6ff999faa008540475c39b835277fb8883b11cada127a"}, - {file = "grpcio-1.66.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fdb14bad0835914f325349ed34a51940bc2ad965142eb3090081593c6e347be9"}, - {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f03a5884c56256e08fd9e262e11b5cfacf1af96e2ce78dc095d2c41ccae2c80d"}, - {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ca2559692d8e7e245d456877a85ee41525f3ed425aa97eb7a70fc9a79df91a0"}, - {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ca1be089fb4446490dd1135828bd42a7c7f8421e74fa581611f7afdf7ab761"}, - {file = "grpcio-1.66.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:d639c939ad7c440c7b2819a28d559179a4508783f7e5b991166f8d7a34b52815"}, - {file = "grpcio-1.66.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b9feb4e5ec8dc2d15709f4d5fc367794d69277f5d680baf1910fc9915c633524"}, - {file = "grpcio-1.66.1-cp312-cp312-win32.whl", hash = "sha256:7101db1bd4cd9b880294dec41a93fcdce465bdbb602cd8dc5bd2d6362b618759"}, - {file = "grpcio-1.66.1-cp312-cp312-win_amd64.whl", hash = "sha256:b0aa03d240b5539648d996cc60438f128c7f46050989e35b25f5c18286c86734"}, - {file = "grpcio-1.66.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:ecfe735e7a59e5a98208447293ff8580e9db1e890e232b8b292dc8bd15afc0d2"}, - {file = "grpcio-1.66.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4825a3aa5648010842e1c9d35a082187746aa0cdbf1b7a2a930595a94fb10fce"}, - {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:f517fd7259fe823ef3bd21e508b653d5492e706e9f0ef82c16ce3347a8a5620c"}, - {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1fe60d0772831d96d263b53d83fb9a3d050a94b0e94b6d004a5ad111faa5b5b"}, - {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31a049daa428f928f21090403e5d18ea02670e3d5d172581670be006100db9ef"}, - {file = "grpcio-1.66.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f914386e52cbdeb5d2a7ce3bf1fdfacbe9d818dd81b6099a05b741aaf3848bb"}, - {file = "grpcio-1.66.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bff2096bdba686019fb32d2dde45b95981f0d1490e054400f70fc9a8af34b49d"}, - {file = "grpcio-1.66.1-cp38-cp38-win32.whl", hash = "sha256:aa8ba945c96e73de29d25331b26f3e416e0c0f621e984a3ebdb2d0d0b596a3b3"}, - {file = "grpcio-1.66.1-cp38-cp38-win_amd64.whl", hash = "sha256:161d5c535c2bdf61b95080e7f0f017a1dfcb812bf54093e71e5562b16225b4ce"}, - {file = "grpcio-1.66.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:d0cd7050397b3609ea51727b1811e663ffda8bda39c6a5bb69525ef12414b503"}, - {file = "grpcio-1.66.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0e6c9b42ded5d02b6b1fea3a25f036a2236eeb75d0579bfd43c0018c88bf0a3e"}, - {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:c9f80f9fad93a8cf71c7f161778ba47fd730d13a343a46258065c4deb4b550c0"}, - {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dd67ed9da78e5121efc5c510f0122a972216808d6de70953a740560c572eb44"}, - {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48b0d92d45ce3be2084b92fb5bae2f64c208fea8ceed7fccf6a7b524d3c4942e"}, - {file = "grpcio-1.66.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4d813316d1a752be6f5c4360c49f55b06d4fe212d7df03253dfdae90c8a402bb"}, - {file = "grpcio-1.66.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c9bebc6627873ec27a70fc800f6083a13c70b23a5564788754b9ee52c5aef6c"}, - {file = "grpcio-1.66.1-cp39-cp39-win32.whl", hash = "sha256:30a1c2cf9390c894c90bbc70147f2372130ad189cffef161f0432d0157973f45"}, - {file = "grpcio-1.66.1-cp39-cp39-win_amd64.whl", hash = "sha256:17663598aadbedc3cacd7bbde432f541c8e07d2496564e22b214b22c7523dac8"}, - {file = "grpcio-1.66.1.tar.gz", hash = "sha256:35334f9c9745add3e357e3372756fd32d925bd52c41da97f4dfdafbde0bf0ee2"}, + {file = "grpcio-1.66.2-cp310-cp310-linux_armv7l.whl", hash = "sha256:fe96281713168a3270878255983d2cb1a97e034325c8c2c25169a69289d3ecfa"}, + {file = "grpcio-1.66.2-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:73fc8f8b9b5c4a03e802b3cd0c18b2b06b410d3c1dcbef989fdeb943bd44aff7"}, + {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:03b0b307ba26fae695e067b94cbb014e27390f8bc5ac7a3a39b7723fed085604"}, + {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d69ce1f324dc2d71e40c9261d3fdbe7d4c9d60f332069ff9b2a4d8a257c7b2b"}, + {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05bc2ceadc2529ab0b227b1310d249d95d9001cd106aa4d31e8871ad3c428d73"}, + {file = "grpcio-1.66.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ac475e8da31484efa25abb774674d837b343afb78bb3bcdef10f81a93e3d6bf"}, + {file = "grpcio-1.66.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0be4e0490c28da5377283861bed2941d1d20ec017ca397a5df4394d1c31a9b50"}, + {file = "grpcio-1.66.2-cp310-cp310-win32.whl", hash = "sha256:4e504572433f4e72b12394977679161d495c4c9581ba34a88d843eaf0f2fbd39"}, + {file = "grpcio-1.66.2-cp310-cp310-win_amd64.whl", hash = "sha256:2018b053aa15782db2541ca01a7edb56a0bf18c77efed975392583725974b249"}, + {file = "grpcio-1.66.2-cp311-cp311-linux_armv7l.whl", hash = "sha256:2335c58560a9e92ac58ff2bc5649952f9b37d0735608242973c7a8b94a6437d8"}, + {file = "grpcio-1.66.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:45a3d462826f4868b442a6b8fdbe8b87b45eb4f5b5308168c156b21eca43f61c"}, + {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:a9539f01cb04950fd4b5ab458e64a15f84c2acc273670072abe49a3f29bbad54"}, + {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce89f5876662f146d4c1f695dda29d4433a5d01c8681fbd2539afff535da14d4"}, + {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25a14af966438cddf498b2e338f88d1c9706f3493b1d73b93f695c99c5f0e2a"}, + {file = "grpcio-1.66.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6001e575b8bbd89eee11960bb640b6da6ae110cf08113a075f1e2051cc596cae"}, + {file = "grpcio-1.66.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4ea1d062c9230278793820146c95d038dc0f468cbdd172eec3363e42ff1c7d01"}, + {file = "grpcio-1.66.2-cp311-cp311-win32.whl", hash = "sha256:38b68498ff579a3b1ee8f93a05eb48dc2595795f2f62716e797dc24774c1aaa8"}, + {file = "grpcio-1.66.2-cp311-cp311-win_amd64.whl", hash = "sha256:6851de821249340bdb100df5eacfecfc4e6075fa85c6df7ee0eb213170ec8e5d"}, + {file = "grpcio-1.66.2-cp312-cp312-linux_armv7l.whl", hash = "sha256:802d84fd3d50614170649853d121baaaa305de7b65b3e01759247e768d691ddf"}, + {file = "grpcio-1.66.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:80fd702ba7e432994df208f27514280b4b5c6843e12a48759c9255679ad38db8"}, + {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:12fda97ffae55e6526825daf25ad0fa37483685952b5d0f910d6405c87e3adb6"}, + {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:950da58d7d80abd0ea68757769c9db0a95b31163e53e5bb60438d263f4bed7b7"}, + {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e636ce23273683b00410f1971d209bf3689238cf5538d960adc3cdfe80dd0dbd"}, + {file = "grpcio-1.66.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a917d26e0fe980b0ac7bfcc1a3c4ad6a9a4612c911d33efb55ed7833c749b0ee"}, + {file = "grpcio-1.66.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49f0ca7ae850f59f828a723a9064cadbed90f1ece179d375966546499b8a2c9c"}, + {file = "grpcio-1.66.2-cp312-cp312-win32.whl", hash = "sha256:31fd163105464797a72d901a06472860845ac157389e10f12631025b3e4d0453"}, + {file = "grpcio-1.66.2-cp312-cp312-win_amd64.whl", hash = "sha256:ff1f7882e56c40b0d33c4922c15dfa30612f05fb785074a012f7cda74d1c3679"}, + {file = "grpcio-1.66.2-cp313-cp313-linux_armv7l.whl", hash = "sha256:3b00efc473b20d8bf83e0e1ae661b98951ca56111feb9b9611df8efc4fe5d55d"}, + {file = "grpcio-1.66.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1caa38fb22a8578ab8393da99d4b8641e3a80abc8fd52646f1ecc92bcb8dee34"}, + {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:c408f5ef75cfffa113cacd8b0c0e3611cbfd47701ca3cdc090594109b9fcbaed"}, + {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c806852deaedee9ce8280fe98955c9103f62912a5b2d5ee7e3eaa284a6d8d8e7"}, + {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f145cc21836c332c67baa6fc81099d1d27e266401565bf481948010d6ea32d46"}, + {file = "grpcio-1.66.2-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:73e3b425c1e155730273f73e419de3074aa5c5e936771ee0e4af0814631fb30a"}, + {file = "grpcio-1.66.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:9c509a4f78114cbc5f0740eb3d7a74985fd2eff022971bc9bc31f8bc93e66a3b"}, + {file = "grpcio-1.66.2-cp313-cp313-win32.whl", hash = "sha256:20657d6b8cfed7db5e11b62ff7dfe2e12064ea78e93f1434d61888834bc86d75"}, + {file = "grpcio-1.66.2-cp313-cp313-win_amd64.whl", hash = "sha256:fb70487c95786e345af5e854ffec8cb8cc781bcc5df7930c4fbb7feaa72e1cdf"}, + {file = "grpcio-1.66.2-cp38-cp38-linux_armv7l.whl", hash = "sha256:a18e20d8321c6400185b4263e27982488cb5cdd62da69147087a76a24ef4e7e3"}, + {file = "grpcio-1.66.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:02697eb4a5cbe5a9639f57323b4c37bcb3ab2d48cec5da3dc2f13334d72790dd"}, + {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:99a641995a6bc4287a6315989ee591ff58507aa1cbe4c2e70d88411c4dcc0839"}, + {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ed71e81782966ffead60268bbda31ea3f725ebf8aa73634d5dda44f2cf3fb9c"}, + {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbd27c24a4cc5e195a7f56cfd9312e366d5d61b86e36d46bbe538457ea6eb8dd"}, + {file = "grpcio-1.66.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d9a9724a156c8ec6a379869b23ba3323b7ea3600851c91489b871e375f710bc8"}, + {file = "grpcio-1.66.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d8d4732cc5052e92cea2f78b233c2e2a52998ac40cd651f40e398893ad0d06ec"}, + {file = "grpcio-1.66.2-cp38-cp38-win32.whl", hash = "sha256:7b2c86457145ce14c38e5bf6bdc19ef88e66c5fee2c3d83285c5aef026ba93b3"}, + {file = "grpcio-1.66.2-cp38-cp38-win_amd64.whl", hash = "sha256:e88264caad6d8d00e7913996030bac8ad5f26b7411495848cc218bd3a9040b6c"}, + {file = "grpcio-1.66.2-cp39-cp39-linux_armv7l.whl", hash = "sha256:c400ba5675b67025c8a9f48aa846f12a39cf0c44df5cd060e23fda5b30e9359d"}, + {file = "grpcio-1.66.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:66a0cd8ba6512b401d7ed46bb03f4ee455839957f28b8d61e7708056a806ba6a"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:06de8ec0bd71be123eec15b0e0d457474931c2c407869b6c349bd9bed4adbac3"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb57870449dfcfac428afbb5a877829fcb0d6db9d9baa1148705739e9083880e"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b672abf90a964bfde2d0ecbce30f2329a47498ba75ce6f4da35a2f4532b7acbc"}, + {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ad2efdbe90c73b0434cbe64ed372e12414ad03c06262279b104a029d1889d13e"}, + {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c3a99c519f4638e700e9e3f83952e27e2ea10873eecd7935823dab0c1c9250e"}, + {file = "grpcio-1.66.2-cp39-cp39-win32.whl", hash = "sha256:78fa51ebc2d9242c0fc5db0feecc57a9943303b46664ad89921f5079e2e4ada7"}, + {file = "grpcio-1.66.2-cp39-cp39-win_amd64.whl", hash = "sha256:728bdf36a186e7f51da73be7f8d09457a03061be848718d0edf000e709418987"}, + {file = "grpcio-1.66.2.tar.gz", hash = "sha256:563588c587b75c34b928bc428548e5b00ea38c46972181a4d8b75ba7e3f24231"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.66.1)"] +protobuf = ["grpcio-tools (>=1.66.2)"] [[package]] name = "grpcio-status" -version = "1.66.1" +version = "1.66.2" description = "Status proto mapping for gRPC" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio_status-1.66.1-py3-none-any.whl", hash = "sha256:cf9ed0b4a83adbe9297211c95cb5488b0cd065707e812145b842c85c4782ff02"}, - {file = "grpcio_status-1.66.1.tar.gz", hash = "sha256:b3f7d34ccc46d83fea5261eea3786174459f763c31f6e34f1d24eba6d515d024"}, + {file = "grpcio_status-1.66.2-py3-none-any.whl", hash = "sha256:e5fe189f6897d12aa9cd74408a17ca41e44fad30871cf84f5cbd17bd713d2455"}, + {file = "grpcio_status-1.66.2.tar.gz", hash = "sha256:fb55cbb5c2e67062f7a4d5c99e489d074fb57e98678d5c3c6692a2d74d89e9ae"}, ] [package.dependencies] googleapis-common-protos = ">=1.5.5" -grpcio = ">=1.66.1" +grpcio = ">=1.66.2" protobuf = ">=5.26.1,<6.0dev" [[package]] diff --git a/airbyte-integrations/connectors/source-surveycto/pyproject.toml b/airbyte-integrations/connectors/source-surveycto/pyproject.toml index 0a955c19cb231..1b0db5e2fb5d6 100644 --- a/airbyte-integrations/connectors/source-surveycto/pyproject.toml +++ b/airbyte-integrations/connectors/source-surveycto/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.22" +version = "0.1.23" name = "source-surveycto" description = "Source implementation for Surveycto." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/surveycto.md b/docs/integrations/sources/surveycto.md index d27a7033df71e..515dae0eac63e 100644 --- a/docs/integrations/sources/surveycto.md +++ b/docs/integrations/sources/surveycto.md @@ -52,6 +52,7 @@ The SurveyCTO source connector supports the following streams: | Version | Date | Pull Request | Subject | | ------- | ---------- | -------------------------------------------------------- | -------------------------- | +| 0.1.23 | 2024-10-05 | [46450](https://github.com/airbytehq/airbyte/pull/46450) | Update dependencies | | 0.1.22 | 2024-09-28 | [46112](https://github.com/airbytehq/airbyte/pull/46112) | Update dependencies | | 0.1.21 | 2024-09-21 | [45818](https://github.com/airbytehq/airbyte/pull/45818) | Update dependencies | | 0.1.20 | 2024-09-14 | [45551](https://github.com/airbytehq/airbyte/pull/45551) | Update dependencies | From ede5cf153fedd0a8acc53dd9276825507d77d84d Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:06 +0300 Subject: [PATCH 092/379] =?UTF-8?q?=F0=9F=90=99=20source-close-com:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46449)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-close-com/metadata.yaml | 2 +- .../connectors/source-close-com/poetry.lock | 35 +++++++++++++------ .../source-close-com/pyproject.toml | 2 +- docs/integrations/sources/close-com.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-close-com/metadata.yaml b/airbyte-integrations/connectors/source-close-com/metadata.yaml index 44d7dfc3e1948..27f4f513cc56c 100644 --- a/airbyte-integrations/connectors/source-close-com/metadata.yaml +++ b/airbyte-integrations/connectors/source-close-com/metadata.yaml @@ -8,7 +8,7 @@ data: connectorSubtype: api connectorType: source definitionId: dfffecb7-9a13-43e9-acdc-b92af7997ca9 - dockerImageTag: 0.5.21 + dockerImageTag: 0.5.22 dockerRepository: airbyte/source-close-com documentationUrl: https://docs.airbyte.com/integrations/sources/close-com githubIssueLabel: source-close-com diff --git a/airbyte-integrations/connectors/source-close-com/poetry.lock b/airbyte-integrations/connectors/source-close-com/poetry.lock index b6414df23dfaa..ffb38c929d4e0 100644 --- a/airbyte-integrations/connectors/source-close-com/poetry.lock +++ b/airbyte-integrations/connectors/source-close-com/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-close-com/pyproject.toml b/airbyte-integrations/connectors/source-close-com/pyproject.toml index c0830a74999d8..55dae89a4a636 100644 --- a/airbyte-integrations/connectors/source-close-com/pyproject.toml +++ b/airbyte-integrations/connectors/source-close-com/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.5.21" +version = "0.5.22" name = "source-close-com" description = "Source implementation for Close.com." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/close-com.md b/docs/integrations/sources/close-com.md index 78fd27c10382a..9cd9d81b3cf26 100644 --- a/docs/integrations/sources/close-com.md +++ b/docs/integrations/sources/close-com.md @@ -109,6 +109,7 @@ The Close.com connector is subject to rate limits. For more information on this | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | +| 0.5.22 | 2024-10-05 | [46449](https://github.com/airbytehq/airbyte/pull/46449) | Update dependencies | | 0.5.21 | 2024-09-28 | [46116](https://github.com/airbytehq/airbyte/pull/46116) | Update dependencies | | 0.5.20 | 2024-09-21 | [45738](https://github.com/airbytehq/airbyte/pull/45738) | Update dependencies | | 0.5.19 | 2024-09-14 | [45483](https://github.com/airbytehq/airbyte/pull/45483) | Update dependencies | From e6cfaf55df4d80df32b485adb37063c2c55d4163 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:09 +0300 Subject: [PATCH 093/379] =?UTF-8?q?=F0=9F=90=99=20source-surveymonkey:=20r?= =?UTF-8?q?un=20up-to-date=20pipeline=20[2024-10-05]=20(#46448)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-surveymonkey/metadata.yaml | 2 +- .../source-surveymonkey/poetry.lock | 43 +++++++++++++------ .../source-surveymonkey/pyproject.toml | 2 +- docs/integrations/sources/surveymonkey.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-surveymonkey/metadata.yaml b/airbyte-integrations/connectors/source-surveymonkey/metadata.yaml index 4f884542f4919..95bace81bbbc2 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/metadata.yaml +++ b/airbyte-integrations/connectors/source-surveymonkey/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: badc5925-0485-42be-8caa-b34096cb71b5 - dockerImageTag: 0.3.24 + dockerImageTag: 0.3.25 dockerRepository: airbyte/source-surveymonkey documentationUrl: https://docs.airbyte.com/integrations/sources/surveymonkey githubIssueLabel: source-surveymonkey diff --git a/airbyte-integrations/connectors/source-surveymonkey/poetry.lock b/airbyte-integrations/connectors/source-surveymonkey/poetry.lock index 4bbcf0f7de44e..eb76e99bbacb4 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/poetry.lock +++ b/airbyte-integrations/connectors/source-surveymonkey/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -473,13 +473,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -490,7 +490,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -654,13 +654,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -668,6 +668,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1332,6 +1333,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1391,13 +1406,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-surveymonkey/pyproject.toml b/airbyte-integrations/connectors/source-surveymonkey/pyproject.toml index 97b98f28c6a57..fedb39cc96504 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/pyproject.toml +++ b/airbyte-integrations/connectors/source-surveymonkey/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.3.24" +version = "0.3.25" name = "source-surveymonkey" description = "Source implementation for Surveymonkey." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/surveymonkey.md b/docs/integrations/sources/surveymonkey.md index a58a3c1bd1814..cdb1de08c3e6e 100644 --- a/docs/integrations/sources/surveymonkey.md +++ b/docs/integrations/sources/surveymonkey.md @@ -75,6 +75,7 @@ To cover more data from this source we use caching. | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------- | +| 0.3.25 | 2024-10-05 | [46448](https://github.com/airbytehq/airbyte/pull/46448) | Update dependencies | | 0.3.24 | 2024-09-28 | [46129](https://github.com/airbytehq/airbyte/pull/46129) | Update dependencies | | 0.3.23 | 2024-09-21 | [45770](https://github.com/airbytehq/airbyte/pull/45770) | Update dependencies | | 0.3.22 | 2024-09-14 | [45519](https://github.com/airbytehq/airbyte/pull/45519) | Update dependencies | From c41cf6fa86042f30da1750cbd36f0b620c796f43 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:12 +0300 Subject: [PATCH 094/379] =?UTF-8?q?=F0=9F=90=99=20source-intercom:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46447)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-intercom/metadata.yaml | 2 +- .../connectors/source-intercom/poetry.lock | 43 +++++++++++++------ .../connectors/source-intercom/pyproject.toml | 2 +- docs/integrations/sources/intercom.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-intercom/metadata.yaml b/airbyte-integrations/connectors/source-intercom/metadata.yaml index 949b0de30014b..1bd53b36c6994 100644 --- a/airbyte-integrations/connectors/source-intercom/metadata.yaml +++ b/airbyte-integrations/connectors/source-intercom/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: d8313939-3782-41b0-be29-b3ca20d8dd3a - dockerImageTag: 0.7.2 + dockerImageTag: 0.7.3 dockerRepository: airbyte/source-intercom documentationUrl: https://docs.airbyte.com/integrations/sources/intercom githubIssueLabel: source-intercom diff --git a/airbyte-integrations/connectors/source-intercom/poetry.lock b/airbyte-integrations/connectors/source-intercom/poetry.lock index 7399ce5b2b589..5ecf52f7ad631 100644 --- a/airbyte-integrations/connectors/source-intercom/poetry.lock +++ b/airbyte-integrations/connectors/source-intercom/poetry.lock @@ -121,13 +121,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -500,13 +500,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -517,7 +517,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -692,13 +692,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -706,6 +706,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1456,6 +1457,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1515,13 +1530,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-intercom/pyproject.toml b/airbyte-integrations/connectors/source-intercom/pyproject.toml index a38e571f306da..0940a3277aefa 100644 --- a/airbyte-integrations/connectors/source-intercom/pyproject.toml +++ b/airbyte-integrations/connectors/source-intercom/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.7.2" +version = "0.7.3" name = "source-intercom" description = "Source implementation for Intercom Yaml." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/intercom.md b/docs/integrations/sources/intercom.md index f35e0b8284623..34162207b440f 100644 --- a/docs/integrations/sources/intercom.md +++ b/docs/integrations/sources/intercom.md @@ -96,6 +96,7 @@ The Intercom connector should not run into Intercom API limitations under normal | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------| +| 0.7.3 | 2024-10-05 | [46447](https://github.com/airbytehq/airbyte/pull/46447) | Update dependencies | | 0.7.2 | 2024-09-28 | [45279](https://github.com/airbytehq/airbyte/pull/45279) | Update dependencies | | 0.7.1 | 2024-08-31 | [44966](https://github.com/airbytehq/airbyte/pull/44966) | Update dependencies | | 0.7.0 | 2024-08-29 | [44911](https://github.com/airbytehq/airbyte/pull/44911) | Migrate to CDK v4 | From 449a14002d078e898fc3f8cb90c468c3bda01287 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:14 +0300 Subject: [PATCH 095/379] =?UTF-8?q?=F0=9F=90=99=20source-jina-ai-reader:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46446)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-jina-ai-reader/metadata.yaml | 2 +- .../source-jina-ai-reader/poetry.lock | 43 +++++++++++++------ .../source-jina-ai-reader/pyproject.toml | 2 +- docs/integrations/sources/jina-ai-reader.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-jina-ai-reader/metadata.yaml b/airbyte-integrations/connectors/source-jina-ai-reader/metadata.yaml index 8d00798782a0e..02ed88425f17d 100644 --- a/airbyte-integrations/connectors/source-jina-ai-reader/metadata.yaml +++ b/airbyte-integrations/connectors/source-jina-ai-reader/metadata.yaml @@ -17,7 +17,7 @@ data: connectorSubtype: api connectorType: source definitionId: 47077a7f-7ab0-47ee-b428-650396a708c7 - dockerImageTag: 0.1.17 + dockerImageTag: 0.1.18 dockerRepository: airbyte/source-jina-ai-reader githubIssueLabel: source-jina-ai-reader icon: jina-ai-reader.svg diff --git a/airbyte-integrations/connectors/source-jina-ai-reader/poetry.lock b/airbyte-integrations/connectors/source-jina-ai-reader/poetry.lock index 887ccfa30d058..cb49d9e5d5a19 100644 --- a/airbyte-integrations/connectors/source-jina-ai-reader/poetry.lock +++ b/airbyte-integrations/connectors/source-jina-ai-reader/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -473,13 +473,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -490,7 +490,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -654,13 +654,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -668,6 +668,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1228,6 +1229,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1287,13 +1302,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-jina-ai-reader/pyproject.toml b/airbyte-integrations/connectors/source-jina-ai-reader/pyproject.toml index 1698829bd2dde..493a573e9882d 100644 --- a/airbyte-integrations/connectors/source-jina-ai-reader/pyproject.toml +++ b/airbyte-integrations/connectors/source-jina-ai-reader/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.17" +version = "0.1.18" name = "source-jina-ai-reader" description = "Source implementation for jina-ai-reader." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/jina-ai-reader.md b/docs/integrations/sources/jina-ai-reader.md index 310d1f2e4a316..1a039053c91c6 100644 --- a/docs/integrations/sources/jina-ai-reader.md +++ b/docs/integrations/sources/jina-ai-reader.md @@ -50,6 +50,7 @@ The website also provides a free bearer token for testing with its interface. | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------- | +| 0.1.18 | 2024-10-05 | [46446](https://github.com/airbytehq/airbyte/pull/46446) | Update dependencies | | 0.1.17 | 2024-09-28 | [46205](https://github.com/airbytehq/airbyte/pull/46205) | Update dependencies | | 0.1.16 | 2024-09-21 | [45827](https://github.com/airbytehq/airbyte/pull/45827) | Update dependencies | | 0.1.15 | 2024-09-14 | [45565](https://github.com/airbytehq/airbyte/pull/45565) | Update dependencies | From 4e7eb4bd962c71be3292965c2663ab4efe8e4b5e Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:17 +0300 Subject: [PATCH 096/379] =?UTF-8?q?=F0=9F=90=99=20destination-cumulio:=20r?= =?UTF-8?q?un=20up-to-date=20pipeline=20[2024-10-05]=20(#46445)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/destination-cumulio/metadata.yaml | 2 +- .../connectors/destination-cumulio/poetry.lock | 14 +++++++------- .../connectors/destination-cumulio/pyproject.toml | 2 +- docs/integrations/destinations/cumulio.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/destination-cumulio/metadata.yaml b/airbyte-integrations/connectors/destination-cumulio/metadata.yaml index b6d0c44e1bf26..be6f07ddcb363 100644 --- a/airbyte-integrations/connectors/destination-cumulio/metadata.yaml +++ b/airbyte-integrations/connectors/destination-cumulio/metadata.yaml @@ -1,7 +1,7 @@ data: connectorType: destination definitionId: e088acb6-9780-4568-880c-54c2dd7f431b - dockerImageTag: 0.1.21 + dockerImageTag: 0.1.22 dockerRepository: airbyte/destination-cumulio githubIssueLabel: destination-cumulio connectorSubtype: api diff --git a/airbyte-integrations/connectors/destination-cumulio/poetry.lock b/airbyte-integrations/connectors/destination-cumulio/poetry.lock index 4eafb04d8a043..6d3cbb4237ca3 100644 --- a/airbyte-integrations/connectors/destination-cumulio/poetry.lock +++ b/airbyte-integrations/connectors/destination-cumulio/poetry.lock @@ -83,13 +83,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -857,13 +857,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-cumulio/pyproject.toml b/airbyte-integrations/connectors/destination-cumulio/pyproject.toml index 47ea9ec32d13d..cbb11a362ad7d 100644 --- a/airbyte-integrations/connectors/destination-cumulio/pyproject.toml +++ b/airbyte-integrations/connectors/destination-cumulio/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.21" +version = "0.1.22" name = "destination-cumulio" description = "Airbyte destination connector implementation for Cumul.io." authors = [ "Cumul.io ",] diff --git a/docs/integrations/destinations/cumulio.md b/docs/integrations/destinations/cumulio.md index 8c4375327a523..c475a79853cef 100644 --- a/docs/integrations/destinations/cumulio.md +++ b/docs/integrations/destinations/cumulio.md @@ -161,6 +161,7 @@ data less frequently** rather than _smaller amounts of data more frequently_! | Version | Date | Pull Request | Subject | |:--------| :--------- | :-------------------------------------------------------- | :-------------------------------------------------- | +| 0.1.22 | 2024-10-05 | [46445](https://github.com/airbytehq/airbyte/pull/46445) | Update dependencies | | 0.1.21 | 2024-09-28 | [46201](https://github.com/airbytehq/airbyte/pull/46201) | Update dependencies | | 0.1.20 | 2024-09-21 | [45831](https://github.com/airbytehq/airbyte/pull/45831) | Update dependencies | | 0.1.19 | 2024-09-14 | [45580](https://github.com/airbytehq/airbyte/pull/45580) | Update dependencies | From 8fc97b031e84d058b752b90dfc88cfb8b495a5c4 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:20 +0300 Subject: [PATCH 097/379] =?UTF-8?q?=F0=9F=90=99=20source-yandex-metrica:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46444)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-yandex-metrica/metadata.yaml | 2 +- .../connectors/source-yandex-metrica/poetry.lock | 6 +++--- .../connectors/source-yandex-metrica/pyproject.toml | 2 +- docs/integrations/sources/yandex-metrica.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-yandex-metrica/metadata.yaml b/airbyte-integrations/connectors/source-yandex-metrica/metadata.yaml index 0707e96aaec20..1c17259ea8c98 100644 --- a/airbyte-integrations/connectors/source-yandex-metrica/metadata.yaml +++ b/airbyte-integrations/connectors/source-yandex-metrica/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 7865dce4-2211-4f6a-88e5-9d0fe161afe7 - dockerImageTag: 1.0.19 + dockerImageTag: 1.0.20 dockerRepository: airbyte/source-yandex-metrica documentationUrl: https://docs.airbyte.com/integrations/sources/yandex-metrica githubIssueLabel: source-yandex-metrica diff --git a/airbyte-integrations/connectors/source-yandex-metrica/poetry.lock b/airbyte-integrations/connectors/source-yandex-metrica/poetry.lock index 7ce9ca5f7f883..57b10a4b2bc56 100644 --- a/airbyte-integrations/connectors/source-yandex-metrica/poetry.lock +++ b/airbyte-integrations/connectors/source-yandex-metrica/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-yandex-metrica/pyproject.toml b/airbyte-integrations/connectors/source-yandex-metrica/pyproject.toml index e86bf238f8046..7065cecd9582b 100644 --- a/airbyte-integrations/connectors/source-yandex-metrica/pyproject.toml +++ b/airbyte-integrations/connectors/source-yandex-metrica/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.0.19" +version = "1.0.20" name = "source-yandex-metrica" description = "Source implementation for Yandex Metrica." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/yandex-metrica.md b/docs/integrations/sources/yandex-metrica.md index df29a733b8e6c..eb2dd569b3af0 100644 --- a/docs/integrations/sources/yandex-metrica.md +++ b/docs/integrations/sources/yandex-metrica.md @@ -92,6 +92,7 @@ Because of the way API works some syncs may take a long time to finish. Timeout | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 1.0.20 | 2024-10-05 | [46444](https://github.com/airbytehq/airbyte/pull/46444) | Update dependencies | | 1.0.19 | 2024-09-28 | [46161](https://github.com/airbytehq/airbyte/pull/46161) | Update dependencies | | 1.0.18 | 2024-09-21 | [45755](https://github.com/airbytehq/airbyte/pull/45755) | Update dependencies | | 1.0.17 | 2024-09-14 | [45536](https://github.com/airbytehq/airbyte/pull/45536) | Update dependencies | From ff37ea4ed83c9c0188d16a2e586ec0048c3387d1 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:24 +0300 Subject: [PATCH 098/379] =?UTF-8?q?=F0=9F=90=99=20destination-timeplus:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46443)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-timeplus/metadata.yaml | 2 +- .../destination-timeplus/poetry.lock | 43 +++++++++++++------ .../destination-timeplus/pyproject.toml | 2 +- docs/integrations/destinations/timeplus.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/destination-timeplus/metadata.yaml b/airbyte-integrations/connectors/destination-timeplus/metadata.yaml index f2c540b4df49f..9ce81d8e5603b 100644 --- a/airbyte-integrations/connectors/destination-timeplus/metadata.yaml +++ b/airbyte-integrations/connectors/destination-timeplus/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: database connectorType: destination definitionId: f70a8ece-351e-4790-b37b-cb790bcd6d54 - dockerImageTag: 0.1.23 + dockerImageTag: 0.1.24 dockerRepository: airbyte/destination-timeplus githubIssueLabel: destination-timeplus icon: timeplus.svg diff --git a/airbyte-integrations/connectors/destination-timeplus/poetry.lock b/airbyte-integrations/connectors/destination-timeplus/poetry.lock index 15bc1cd81e510..10049eb3e1e40 100644 --- a/airbyte-integrations/connectors/destination-timeplus/poetry.lock +++ b/airbyte-integrations/connectors/destination-timeplus/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -559,13 +559,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -576,7 +576,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -740,13 +740,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -754,6 +754,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "loguru" @@ -1332,6 +1333,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1509,13 +1524,13 @@ urllib3 = ">=1.15" [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-timeplus/pyproject.toml b/airbyte-integrations/connectors/destination-timeplus/pyproject.toml index d1c32c25964eb..ed0b55da9f822 100644 --- a/airbyte-integrations/connectors/destination-timeplus/pyproject.toml +++ b/airbyte-integrations/connectors/destination-timeplus/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.23" +version = "0.1.24" name = "destination-timeplus" description = "Destination implementation for Timeplus." authors = ["Airbyte "] diff --git a/docs/integrations/destinations/timeplus.md b/docs/integrations/destinations/timeplus.md index 0090f4e5a84b9..8ec4416c729ff 100644 --- a/docs/integrations/destinations/timeplus.md +++ b/docs/integrations/destinations/timeplus.md @@ -39,6 +39,7 @@ You'll need the following information to configure the Timeplus destination: | Version | Date | Pull Request | Subject | |:--------| :--------- | :-------------------------------------------------------- | :------------------- | +| 0.1.24 | 2024-10-05 | [46443](https://github.com/airbytehq/airbyte/pull/46443) | Update dependencies | | 0.1.23 | 2024-09-28 | [46130](https://github.com/airbytehq/airbyte/pull/46130) | Update dependencies | | 0.1.22 | 2024-09-21 | [45826](https://github.com/airbytehq/airbyte/pull/45826) | Update dependencies | | 0.1.21 | 2024-09-14 | [45568](https://github.com/airbytehq/airbyte/pull/45568) | Update dependencies | From 172d51d7af520f5829a259506a29b9c6ec36dc92 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:27 +0300 Subject: [PATCH 099/379] =?UTF-8?q?=F0=9F=90=99=20source-us-census:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46442)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-us-census/metadata.yaml | 2 +- .../connectors/source-us-census/poetry.lock | 43 +++++++++++++------ .../source-us-census/pyproject.toml | 2 +- docs/integrations/sources/us-census.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-us-census/metadata.yaml b/airbyte-integrations/connectors/source-us-census/metadata.yaml index dee189542a6c3..14daefce6cb7a 100644 --- a/airbyte-integrations/connectors/source-us-census/metadata.yaml +++ b/airbyte-integrations/connectors/source-us-census/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: c4cfaeda-c757-489a-8aba-859fb08b6970 - dockerImageTag: 0.2.4 + dockerImageTag: 0.2.5 dockerRepository: airbyte/source-us-census githubIssueLabel: source-us-census icon: uscensus.svg diff --git a/airbyte-integrations/connectors/source-us-census/poetry.lock b/airbyte-integrations/connectors/source-us-census/poetry.lock index 20cf26c78e491..067496b8a8704 100644 --- a/airbyte-integrations/connectors/source-us-census/poetry.lock +++ b/airbyte-integrations/connectors/source-us-census/poetry.lock @@ -121,13 +121,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -500,13 +500,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -517,7 +517,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -692,13 +692,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -709,6 +709,7 @@ pydantic = [ {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, ] requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1462,6 +1463,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1521,13 +1536,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-us-census/pyproject.toml b/airbyte-integrations/connectors/source-us-census/pyproject.toml index cabc0033abec6..14f090b88f40a 100644 --- a/airbyte-integrations/connectors/source-us-census/pyproject.toml +++ b/airbyte-integrations/connectors/source-us-census/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.4" +version = "0.2.5" name = "source-us-census" description = "Source implementation for Us Census." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/us-census.md b/docs/integrations/sources/us-census.md index 40d14705b8d63..4e1a0d47df564 100644 --- a/docs/integrations/sources/us-census.md +++ b/docs/integrations/sources/us-census.md @@ -45,6 +45,7 @@ In addition, to understand how to configure the dataset path and query parameter | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------ | +| 0.2.5 | 2024-10-05 | [46442](https://github.com/airbytehq/airbyte/pull/46442) | Update dependencies | | 0.2.4 | 2024-09-28 | [46181](https://github.com/airbytehq/airbyte/pull/46181) | Update dependencies | | 0.2.3 | 2024-09-21 | [45743](https://github.com/airbytehq/airbyte/pull/45743) | Update dependencies | | 0.2.2 | 2024-09-14 | [44364](https://github.com/airbytehq/airbyte/pull/44364) | Update dependencies | From 4b14fc7b3c335a60570779bea572e24d41d3226c Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:29 +0300 Subject: [PATCH 100/379] =?UTF-8?q?=F0=9F=90=99=20source-pardot:=20run=20u?= =?UTF-8?q?p-to-date=20pipeline=20[2024-10-05]=20(#46441)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-integrations/connectors/source-pardot/metadata.yaml | 2 +- airbyte-integrations/connectors/source-pardot/poetry.lock | 6 +++--- .../connectors/source-pardot/pyproject.toml | 2 +- docs/integrations/sources/pardot.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-pardot/metadata.yaml b/airbyte-integrations/connectors/source-pardot/metadata.yaml index b766d1a7e887c..e4f34a49f1ddc 100644 --- a/airbyte-integrations/connectors/source-pardot/metadata.yaml +++ b/airbyte-integrations/connectors/source-pardot/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: ad15c7ba-72a7-440b-af15-b9a963dc1a8a - dockerImageTag: 0.1.20 + dockerImageTag: 0.1.21 dockerRepository: airbyte/source-pardot githubIssueLabel: source-pardot icon: salesforcepardot.svg diff --git a/airbyte-integrations/connectors/source-pardot/poetry.lock b/airbyte-integrations/connectors/source-pardot/poetry.lock index 45c71fcab3eb8..ce10b819fdf7e 100644 --- a/airbyte-integrations/connectors/source-pardot/poetry.lock +++ b/airbyte-integrations/connectors/source-pardot/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-pardot/pyproject.toml b/airbyte-integrations/connectors/source-pardot/pyproject.toml index 5f29a62a55c21..c9686393e0dcb 100644 --- a/airbyte-integrations/connectors/source-pardot/pyproject.toml +++ b/airbyte-integrations/connectors/source-pardot/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.20" +version = "0.1.21" name = "source-pardot" description = "Source implementation for Pardot." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/pardot.md b/docs/integrations/sources/pardot.md index 9eed78687d416..06ef63fb17299 100644 --- a/docs/integrations/sources/pardot.md +++ b/docs/integrations/sources/pardot.md @@ -61,6 +61,7 @@ The Pardot connector should not run into Pardot API limitations under normal usa | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------- | +| 0.1.21 | 2024-10-05 | [46441](https://github.com/airbytehq/airbyte/pull/46441) | Update dependencies | | 0.1.20 | 2024-09-28 | [46109](https://github.com/airbytehq/airbyte/pull/46109) | Update dependencies | | 0.1.19 | 2024-09-21 | [45799](https://github.com/airbytehq/airbyte/pull/45799) | Update dependencies | | 0.1.18 | 2024-09-14 | [45509](https://github.com/airbytehq/airbyte/pull/45509) | Update dependencies | From 5eb6dd561a3d9e545750e0eea015974a6b50db43 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:32 +0300 Subject: [PATCH 101/379] =?UTF-8?q?=F0=9F=90=99=20source-public-apis:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46440)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-public-apis/metadata.yaml | 2 +- .../connectors/source-public-apis/poetry.lock | 35 +++++++++++++------ .../source-public-apis/pyproject.toml | 2 +- docs/integrations/sources/public-apis.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-public-apis/metadata.yaml b/airbyte-integrations/connectors/source-public-apis/metadata.yaml index 56c2a6ae18177..f8f307b4e0f86 100644 --- a/airbyte-integrations/connectors/source-public-apis/metadata.yaml +++ b/airbyte-integrations/connectors/source-public-apis/metadata.yaml @@ -17,7 +17,7 @@ data: connectorSubtype: api connectorType: source definitionId: a4617b39-3c14-44cd-a2eb-6e720f269235 - dockerImageTag: 0.2.18 + dockerImageTag: 0.2.19 dockerRepository: airbyte/source-public-apis documentationUrl: https://docs.airbyte.com/integrations/sources/public-apis githubIssueLabel: source-public-apis diff --git a/airbyte-integrations/connectors/source-public-apis/poetry.lock b/airbyte-integrations/connectors/source-public-apis/poetry.lock index 68a741ee8ec78..1aa5b5c1ab01e 100644 --- a/airbyte-integrations/connectors/source-public-apis/poetry.lock +++ b/airbyte-integrations/connectors/source-public-apis/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-public-apis/pyproject.toml b/airbyte-integrations/connectors/source-public-apis/pyproject.toml index 38b3016d437c8..38ce0ad1f61a7 100644 --- a/airbyte-integrations/connectors/source-public-apis/pyproject.toml +++ b/airbyte-integrations/connectors/source-public-apis/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.18" +version = "0.2.19" name = "source-public-apis" description = "Source implementation for Public Apis." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/public-apis.md b/docs/integrations/sources/public-apis.md index d7226cbb54012..b1caaab3fe5a7 100644 --- a/docs/integrations/sources/public-apis.md +++ b/docs/integrations/sources/public-apis.md @@ -46,6 +46,7 @@ This source requires no setup. | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------- | +| 0.2.19 | 2024-10-05 | [46440](https://github.com/airbytehq/airbyte/pull/46440) | Update dependencies | | 0.2.18 | 2024-09-28 | [46198](https://github.com/airbytehq/airbyte/pull/46198) | Update dependencies | | 0.2.17 | 2024-09-21 | [45797](https://github.com/airbytehq/airbyte/pull/45797) | Update dependencies | | 0.2.16 | 2024-09-14 | [45515](https://github.com/airbytehq/airbyte/pull/45515) | Update dependencies | From 7bd9b56933263c77129abcad19a1b107f050b4b8 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:35 +0300 Subject: [PATCH 102/379] =?UTF-8?q?=F0=9F=90=99=20source-qualaroo:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46439)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-qualaroo/metadata.yaml | 2 +- .../connectors/source-qualaroo/poetry.lock | 35 +++++++++++++------ .../connectors/source-qualaroo/pyproject.toml | 2 +- docs/integrations/sources/qualaroo.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-qualaroo/metadata.yaml b/airbyte-integrations/connectors/source-qualaroo/metadata.yaml index 4dbe1883dccc4..ed228502a7658 100644 --- a/airbyte-integrations/connectors/source-qualaroo/metadata.yaml +++ b/airbyte-integrations/connectors/source-qualaroo/metadata.yaml @@ -14,7 +14,7 @@ data: connectorSubtype: api connectorType: source definitionId: eb655362-28a8-4311-8806-4fcc612734a7 - dockerImageTag: 0.3.21 + dockerImageTag: 0.3.22 dockerRepository: airbyte/source-qualaroo githubIssueLabel: source-qualaroo icon: qualaroo.svg diff --git a/airbyte-integrations/connectors/source-qualaroo/poetry.lock b/airbyte-integrations/connectors/source-qualaroo/poetry.lock index 68a741ee8ec78..1aa5b5c1ab01e 100644 --- a/airbyte-integrations/connectors/source-qualaroo/poetry.lock +++ b/airbyte-integrations/connectors/source-qualaroo/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-qualaroo/pyproject.toml b/airbyte-integrations/connectors/source-qualaroo/pyproject.toml index c45f2f1febe38..2006059b23d71 100644 --- a/airbyte-integrations/connectors/source-qualaroo/pyproject.toml +++ b/airbyte-integrations/connectors/source-qualaroo/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.3.21" +version = "0.3.22" name = "source-qualaroo" description = "Source implementation for Qualaroo." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/qualaroo.md b/docs/integrations/sources/qualaroo.md index b118951b469e2..a1ead849b201e 100644 --- a/docs/integrations/sources/qualaroo.md +++ b/docs/integrations/sources/qualaroo.md @@ -46,6 +46,7 @@ Please read [How to get your APIs Token and Key](https://help.qualaroo.com/hc/en | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | +| 0.3.22 | 2024-10-05 | [46439](https://github.com/airbytehq/airbyte/pull/46439) | Update dependencies | | 0.3.21 | 2024-09-28 | [46168](https://github.com/airbytehq/airbyte/pull/46168) | Update dependencies | | 0.3.20 | 2024-09-21 | [45825](https://github.com/airbytehq/airbyte/pull/45825) | Update dependencies | | 0.3.19 | 2024-09-14 | [45527](https://github.com/airbytehq/airbyte/pull/45527) | Update dependencies | From 7b906152bf4b2d888a16d31274abbae1fb4d5144 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:37 +0300 Subject: [PATCH 103/379] =?UTF-8?q?=F0=9F=90=99=20destination-vectara:=20r?= =?UTF-8?q?un=20up-to-date=20pipeline=20[2024-10-05]=20(#46438)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-vectara/metadata.yaml | 2 +- .../destination-vectara/poetry.lock | 43 +++++++++++++------ .../destination-vectara/pyproject.toml | 2 +- docs/integrations/destinations/vectara.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/destination-vectara/metadata.yaml b/airbyte-integrations/connectors/destination-vectara/metadata.yaml index af8053542718e..6f55fea8ea086 100644 --- a/airbyte-integrations/connectors/destination-vectara/metadata.yaml +++ b/airbyte-integrations/connectors/destination-vectara/metadata.yaml @@ -13,7 +13,7 @@ data: connectorSubtype: database connectorType: destination definitionId: 102900e7-a236-4c94-83e4-a4189b99adc2 - dockerImageTag: 0.2.25 + dockerImageTag: 0.2.26 dockerRepository: airbyte/destination-vectara githubIssueLabel: destination-vectara icon: vectara.svg diff --git a/airbyte-integrations/connectors/destination-vectara/poetry.lock b/airbyte-integrations/connectors/destination-vectara/poetry.lock index 3a2e2d65b5499..4db8cf58a3c12 100644 --- a/airbyte-integrations/connectors/destination-vectara/poetry.lock +++ b/airbyte-integrations/connectors/destination-vectara/poetry.lock @@ -105,13 +105,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -337,13 +337,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -354,7 +354,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -518,13 +518,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -532,6 +532,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1077,6 +1078,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.3.7" @@ -1162,13 +1177,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-vectara/pyproject.toml b/airbyte-integrations/connectors/destination-vectara/pyproject.toml index 21e39aeefe7e8..f5ecb25d19091 100644 --- a/airbyte-integrations/connectors/destination-vectara/pyproject.toml +++ b/airbyte-integrations/connectors/destination-vectara/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-destination-vectara" -version = "0.2.25" +version = "0.2.26" description = "Airbyte destination implementation for Vectara" authors = ["Airbyte "] license = "MIT" diff --git a/docs/integrations/destinations/vectara.md b/docs/integrations/destinations/vectara.md index 0417614bf21d7..cadea824c018f 100644 --- a/docs/integrations/destinations/vectara.md +++ b/docs/integrations/destinations/vectara.md @@ -68,6 +68,7 @@ In addition, in the connector UI you define two set of fields for this connector | Version | Date | Pull Request | Subject | |:--------| :--------- | :-------------------------------------------------------- | :----------------------------------------------------------- | +| 0.2.26 | 2024-10-05 | [46438](https://github.com/airbytehq/airbyte/pull/46438) | Update dependencies | | 0.2.25 | 2024-09-28 | [46114](https://github.com/airbytehq/airbyte/pull/46114) | Update dependencies | | 0.2.24 | 2024-09-21 | [45806](https://github.com/airbytehq/airbyte/pull/45806) | Update dependencies | | 0.2.23 | 2024-09-14 | [45481](https://github.com/airbytehq/airbyte/pull/45481) | Update dependencies | From 72941f60404c03ab99f88ff72456057990ca5f28 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:40 +0300 Subject: [PATCH 104/379] =?UTF-8?q?=F0=9F=90=99=20destination-rabbitmq:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46437)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/destination-rabbitmq/metadata.yaml | 2 +- .../connectors/destination-rabbitmq/poetry.lock | 14 +++++++------- .../connectors/destination-rabbitmq/pyproject.toml | 2 +- docs/integrations/destinations/rabbitmq.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/destination-rabbitmq/metadata.yaml b/airbyte-integrations/connectors/destination-rabbitmq/metadata.yaml index c8ad90326b1fe..277f55ad54f1e 100644 --- a/airbyte-integrations/connectors/destination-rabbitmq/metadata.yaml +++ b/airbyte-integrations/connectors/destination-rabbitmq/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: database connectorType: destination definitionId: e06ad785-ad6f-4647-b2e8-3027a5c59454 - dockerImageTag: 0.1.22 + dockerImageTag: 0.1.23 dockerRepository: airbyte/destination-rabbitmq githubIssueLabel: destination-rabbitmq icon: pulsar.svg diff --git a/airbyte-integrations/connectors/destination-rabbitmq/poetry.lock b/airbyte-integrations/connectors/destination-rabbitmq/poetry.lock index b2be781f0b534..6e5c94b738bf8 100644 --- a/airbyte-integrations/connectors/destination-rabbitmq/poetry.lock +++ b/airbyte-integrations/connectors/destination-rabbitmq/poetry.lock @@ -82,13 +82,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -858,13 +858,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-rabbitmq/pyproject.toml b/airbyte-integrations/connectors/destination-rabbitmq/pyproject.toml index c698e85c6f045..4048d79641d9f 100644 --- a/airbyte-integrations/connectors/destination-rabbitmq/pyproject.toml +++ b/airbyte-integrations/connectors/destination-rabbitmq/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.22" +version = "0.1.23" name = "destination-rabbitmq" description = "Destination implementation for Rabbitmq." authors = [ "Airbyte ",] diff --git a/docs/integrations/destinations/rabbitmq.md b/docs/integrations/destinations/rabbitmq.md index 8a6159afea0d6..eb6f7204b3b63 100644 --- a/docs/integrations/destinations/rabbitmq.md +++ b/docs/integrations/destinations/rabbitmq.md @@ -48,6 +48,7 @@ To use the RabbitMQ destination, you'll need: | Version | Date | Pull Request | Subject | |:--------| :--------------- | :-------------------------------------------------------- | :---------------------------------------------- | +| 0.1.23 | 2024-10-05 | [46437](https://github.com/airbytehq/airbyte/pull/46437) | Update dependencies | | 0.1.22 | 2024-09-28 | [46139](https://github.com/airbytehq/airbyte/pull/46139) | Update dependencies | | 0.1.21 | 2024-09-21 | [45814](https://github.com/airbytehq/airbyte/pull/45814) | Update dependencies | | 0.1.20 | 2024-09-14 | [45293](https://github.com/airbytehq/airbyte/pull/45293) | Update dependencies | From 7bf1718b09594d55bfc8f8804c9a4874f1c064f3 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:43 +0300 Subject: [PATCH 105/379] =?UTF-8?q?=F0=9F=90=99=20source-salesforce:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46436)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-salesforce/metadata.yaml | 2 +- .../connectors/source-salesforce/poetry.lock | 29 ++++++--- .../source-salesforce/pyproject.toml | 2 +- docs/integrations/sources/salesforce.md | 61 ++++++++++--------- 4 files changed, 55 insertions(+), 39 deletions(-) diff --git a/airbyte-integrations/connectors/source-salesforce/metadata.yaml b/airbyte-integrations/connectors/source-salesforce/metadata.yaml index cb2cd888407fc..0cf5b1fe0bfdc 100644 --- a/airbyte-integrations/connectors/source-salesforce/metadata.yaml +++ b/airbyte-integrations/connectors/source-salesforce/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: b117307c-14b6-41aa-9422-947e34922962 - dockerImageTag: 2.6.0 + dockerImageTag: 2.6.1 dockerRepository: airbyte/source-salesforce documentationUrl: https://docs.airbyte.com/integrations/sources/salesforce githubIssueLabel: source-salesforce diff --git a/airbyte-integrations/connectors/source-salesforce/poetry.lock b/airbyte-integrations/connectors/source-salesforce/poetry.lock index 8dc4a4c74f3df..fbe6aeac53c91 100644 --- a/airbyte-integrations/connectors/source-salesforce/poetry.lock +++ b/airbyte-integrations/connectors/source-salesforce/poetry.lock @@ -1,14 +1,14 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "5.10.1" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.10.1-py3-none-any.whl", hash = "sha256:b965f38b28b303a8c85da29f80d9669c086cf0c502b919793b5cf66300d81997"}, - {file = "airbyte_cdk-5.10.1.tar.gz", hash = "sha256:9f100bf3da49aa087f11c9e42d9cc16801d232823a0c587eaf497e9fc7946c5a"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -726,13 +726,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -740,6 +740,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1651,6 +1652,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "serpyco-rs" version = "1.11.0" diff --git a/airbyte-integrations/connectors/source-salesforce/pyproject.toml b/airbyte-integrations/connectors/source-salesforce/pyproject.toml index 36f7eaf4bfaa9..c415cfef3d241 100644 --- a/airbyte-integrations/connectors/source-salesforce/pyproject.toml +++ b/airbyte-integrations/connectors/source-salesforce/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.6.0" +version = "2.6.1" name = "source-salesforce" description = "Source implementation for Salesforce." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/salesforce.md b/docs/integrations/sources/salesforce.md index 9f71498ab8e78..11b808b111c2e 100644 --- a/docs/integrations/sources/salesforce.md +++ b/docs/integrations/sources/salesforce.md @@ -219,36 +219,37 @@ Now that you have set up the Salesforce source connector, check out the followin | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------| -| 2.6.0 | 2024-10-02 | [45678](https://github.com/airbytehq/airbyte/pull/45678) | Have bulk streams use CDK components | -| 2.5.34 | 2024-09-28 | [46187](https://github.com/airbytehq/airbyte/pull/46187) | Update dependencies | -| 2.5.33 | 2024-09-21 | [45779](https://github.com/airbytehq/airbyte/pull/45779) | Update dependencies | -| 2.5.32 | 2024-09-14 | [45579](https://github.com/airbytehq/airbyte/pull/45579) | Update dependencies | -| 2.5.31 | 2024-09-07 | [45329](https://github.com/airbytehq/airbyte/pull/45329) | Update dependencies | -| 2.5.30 | 2024-08-31 | [44959](https://github.com/airbytehq/airbyte/pull/44959) | Update dependencies | -| 2.5.29 | 2024-08-24 | [44747](https://github.com/airbytehq/airbyte/pull/44747) | Update dependencies | -| 2.5.28 | 2024-08-17 | [44327](https://github.com/airbytehq/airbyte/pull/44327) | Update dependencies | -| 2.5.27 | 2024-08-12 | [43732](https://github.com/airbytehq/airbyte/pull/43732) | Update dependencies | -| 2.5.26 | 2024-08-10 | [43673](https://github.com/airbytehq/airbyte/pull/43673) | Update dependencies | -| 2.5.25 | 2024-08-03 | [43211](https://github.com/airbytehq/airbyte/pull/43211) | Update dependencies | -| 2.5.24 | 2024-07-27 | [42685](https://github.com/airbytehq/airbyte/pull/42685) | Update dependencies | -| 2.5.23 | 2024-07-20 | [42166](https://github.com/airbytehq/airbyte/pull/42166) | Update dependencies | -| 2.5.22 | 2024-07-13 | [41752](https://github.com/airbytehq/airbyte/pull/41752) | Update dependencies | -| 2.5.21 | 2024-07-10 | [41529](https://github.com/airbytehq/airbyte/pull/41529) | Update dependencies | -| 2.5.20 | 2024-07-09 | [41255](https://github.com/airbytehq/airbyte/pull/41255) | Update dependencies | -| 2.5.19 | 2024-07-08 | [41043](https://github.com/airbytehq/airbyte/pull/41043) | Use the latest `CDK` version possible | -| 2.5.18 | 2024-07-06 | [40835](https://github.com/airbytehq/airbyte/pull/40835) | Update dependencies | -| 2.5.17 | 2024-06-25 | [40329](https://github.com/airbytehq/airbyte/pull/40329) | Update dependencies | -| 2.5.16 | 2024-06-21 | [39927](https://github.com/airbytehq/airbyte/pull/39927) | Update dependencies | -| 2.5.15 | 2024-06-16 | [39517](https://github.com/airbytehq/airbyte/pull/39517) | Salesforce refactor: add CheckpointMixin for state management | -| 2.5.14 | 2024-06-06 | [39269](https://github.com/airbytehq/airbyte/pull/39269) | [autopull] Upgrade base image to v1.2.2 | -| 2.5.13 | 2024-05-23 | [38563](https://github.com/airbytehq/airbyte/pull/38563) | Use HttpClient to perform HTTP requests for bulk, authentication and schema discovery | -| 2.5.12 | 2024-05-16 | [38255](https://github.com/airbytehq/airbyte/pull/38255) | Replace AirbyteLogger with logging.Logger | -| 2.5.11 | 2024-05-09 | [38205](https://github.com/airbytehq/airbyte/pull/38205) | Use new delete method of HttpMocker for test_bulk_stream | -| 2.5.10 | 2024-05-09 | [38065](https://github.com/airbytehq/airbyte/pull/38065) | Replace deprecated authentication mechanism to up-to-date one | -| 2.5.9 | 2024-05-02 | [37749](https://github.com/airbytehq/airbyte/pull/37749) | Adding mock server tests for bulk streams | -| 2.5.8 | 2024-04-30 | [37340](https://github.com/airbytehq/airbyte/pull/37340) | Source Salesforce: reduce info logs | -| 2.5.7 | 2024-04-24 | [36657](https://github.com/airbytehq/airbyte/pull/36657) | Schema descriptions | -| 2.5.6 | 2024-04-19 | [37448](https://github.com/airbytehq/airbyte/pull/37448) | Ensure AirbyteTracedException in concurrent CDK are emitted with the right type | +| 2.6.1 | 2024-10-05 | [46436](https://github.com/airbytehq/airbyte/pull/46436) | Update dependencies | +| 2.6.0 | 2024-10-02 | [45678](https://github.com/airbytehq/airbyte/pull/45678) | Have bulk streams use CDK components | +| 2.5.34 | 2024-09-28 | [46187](https://github.com/airbytehq/airbyte/pull/46187) | Update dependencies | +| 2.5.33 | 2024-09-21 | [45779](https://github.com/airbytehq/airbyte/pull/45779) | Update dependencies | +| 2.5.32 | 2024-09-14 | [45579](https://github.com/airbytehq/airbyte/pull/45579) | Update dependencies | +| 2.5.31 | 2024-09-07 | [45329](https://github.com/airbytehq/airbyte/pull/45329) | Update dependencies | +| 2.5.30 | 2024-08-31 | [44959](https://github.com/airbytehq/airbyte/pull/44959) | Update dependencies | +| 2.5.29 | 2024-08-24 | [44747](https://github.com/airbytehq/airbyte/pull/44747) | Update dependencies | +| 2.5.28 | 2024-08-17 | [44327](https://github.com/airbytehq/airbyte/pull/44327) | Update dependencies | +| 2.5.27 | 2024-08-12 | [43732](https://github.com/airbytehq/airbyte/pull/43732) | Update dependencies | +| 2.5.26 | 2024-08-10 | [43673](https://github.com/airbytehq/airbyte/pull/43673) | Update dependencies | +| 2.5.25 | 2024-08-03 | [43211](https://github.com/airbytehq/airbyte/pull/43211) | Update dependencies | +| 2.5.24 | 2024-07-27 | [42685](https://github.com/airbytehq/airbyte/pull/42685) | Update dependencies | +| 2.5.23 | 2024-07-20 | [42166](https://github.com/airbytehq/airbyte/pull/42166) | Update dependencies | +| 2.5.22 | 2024-07-13 | [41752](https://github.com/airbytehq/airbyte/pull/41752) | Update dependencies | +| 2.5.21 | 2024-07-10 | [41529](https://github.com/airbytehq/airbyte/pull/41529) | Update dependencies | +| 2.5.20 | 2024-07-09 | [41255](https://github.com/airbytehq/airbyte/pull/41255) | Update dependencies | +| 2.5.19 | 2024-07-08 | [41043](https://github.com/airbytehq/airbyte/pull/41043) | Use the latest `CDK` version possible | +| 2.5.18 | 2024-07-06 | [40835](https://github.com/airbytehq/airbyte/pull/40835) | Update dependencies | +| 2.5.17 | 2024-06-25 | [40329](https://github.com/airbytehq/airbyte/pull/40329) | Update dependencies | +| 2.5.16 | 2024-06-21 | [39927](https://github.com/airbytehq/airbyte/pull/39927) | Update dependencies | +| 2.5.15 | 2024-06-16 | [39517](https://github.com/airbytehq/airbyte/pull/39517) | Salesforce refactor: add CheckpointMixin for state management | +| 2.5.14 | 2024-06-06 | [39269](https://github.com/airbytehq/airbyte/pull/39269) | [autopull] Upgrade base image to v1.2.2 | +| 2.5.13 | 2024-05-23 | [38563](https://github.com/airbytehq/airbyte/pull/38563) | Use HttpClient to perform HTTP requests for bulk, authentication and schema discovery | +| 2.5.12 | 2024-05-16 | [38255](https://github.com/airbytehq/airbyte/pull/38255) | Replace AirbyteLogger with logging.Logger | +| 2.5.11 | 2024-05-09 | [38205](https://github.com/airbytehq/airbyte/pull/38205) | Use new delete method of HttpMocker for test_bulk_stream | +| 2.5.10 | 2024-05-09 | [38065](https://github.com/airbytehq/airbyte/pull/38065) | Replace deprecated authentication mechanism to up-to-date one | +| 2.5.9 | 2024-05-02 | [37749](https://github.com/airbytehq/airbyte/pull/37749) | Adding mock server tests for bulk streams | +| 2.5.8 | 2024-04-30 | [37340](https://github.com/airbytehq/airbyte/pull/37340) | Source Salesforce: reduce info logs | +| 2.5.7 | 2024-04-24 | [36657](https://github.com/airbytehq/airbyte/pull/36657) | Schema descriptions | +| 2.5.6 | 2024-04-19 | [37448](https://github.com/airbytehq/airbyte/pull/37448) | Ensure AirbyteTracedException in concurrent CDK are emitted with the right type | | 2.5.5 | 2024-04-18 | [37392](https://github.com/airbytehq/airbyte/pull/37419) | Ensure python return code != 0 in case of error | | 2.5.4 | 2024-04-18 | [37392](https://github.com/airbytehq/airbyte/pull/37392) | Update CDK version to have partitioned state fix | | 2.5.3 | 2024-04-17 | [37376](https://github.com/airbytehq/airbyte/pull/37376) | Improve rate limit error message during check command | From 66e79d64bab5e5226f7d9d6c18e4aa37544ffb7e Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:46 +0300 Subject: [PATCH 106/379] =?UTF-8?q?=F0=9F=90=99=20source-freshcaller:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46435)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-freshcaller/metadata.yaml | 2 +- .../connectors/source-freshcaller/poetry.lock | 14 +++++++------- .../connectors/source-freshcaller/pyproject.toml | 2 +- docs/integrations/sources/freshcaller.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/source-freshcaller/metadata.yaml b/airbyte-integrations/connectors/source-freshcaller/metadata.yaml index 7eaa01131379a..1e4f5931dc304 100644 --- a/airbyte-integrations/connectors/source-freshcaller/metadata.yaml +++ b/airbyte-integrations/connectors/source-freshcaller/metadata.yaml @@ -19,7 +19,7 @@ data: type: GSM connectorType: source definitionId: 8a5d48f6-03bb-4038-a942-a8d3f175cca3 - dockerImageTag: 0.4.14 + dockerImageTag: 0.4.15 dockerRepository: airbyte/source-freshcaller documentationUrl: https://docs.airbyte.com/integrations/sources/freshcaller githubIssueLabel: source-freshcaller diff --git a/airbyte-integrations/connectors/source-freshcaller/poetry.lock b/airbyte-integrations/connectors/source-freshcaller/poetry.lock index 3e57994af9a7a..578472c92a261 100644 --- a/airbyte-integrations/connectors/source-freshcaller/poetry.lock +++ b/airbyte-integrations/connectors/source-freshcaller/poetry.lock @@ -83,13 +83,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -931,13 +931,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-freshcaller/pyproject.toml b/airbyte-integrations/connectors/source-freshcaller/pyproject.toml index 78f001122a30e..ef2992987689a 100644 --- a/airbyte-integrations/connectors/source-freshcaller/pyproject.toml +++ b/airbyte-integrations/connectors/source-freshcaller/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.4.14" +version = "0.4.15" name = "source-freshcaller" description = "Source implementation for Freshcaller" authors = ["Airbyte "] diff --git a/docs/integrations/sources/freshcaller.md b/docs/integrations/sources/freshcaller.md index 1a48087f2870b..7764103f6b9c6 100644 --- a/docs/integrations/sources/freshcaller.md +++ b/docs/integrations/sources/freshcaller.md @@ -46,6 +46,7 @@ Please read [How to find your API key](https://support.freshdesk.com/en/support/ | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------ | +| 0.4.15 | 2024-10-05 | [46435](https://github.com/airbytehq/airbyte/pull/46435) | Update dependencies | | 0.4.14 | 2024-09-28 | [46173](https://github.com/airbytehq/airbyte/pull/46173) | Update dependencies | | 0.4.13 | 2024-09-21 | [45760](https://github.com/airbytehq/airbyte/pull/45760) | Update dependencies | | 0.4.12 | 2024-09-14 | [45522](https://github.com/airbytehq/airbyte/pull/45522) | Update dependencies | From 5e801771e0da6e33b1ba9cafde7a75008106376b Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:50 +0300 Subject: [PATCH 107/379] =?UTF-8?q?=F0=9F=90=99=20source-linkedin-ads:=20r?= =?UTF-8?q?un=20up-to-date=20pipeline=20[2024-10-05]=20(#46433)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-linkedin-ads/metadata.yaml | 2 +- .../source-linkedin-ads/poetry.lock | 203 ++++++++++-------- .../source-linkedin-ads/pyproject.toml | 2 +- docs/integrations/sources/linkedin-ads.md | 1 + 4 files changed, 121 insertions(+), 87 deletions(-) diff --git a/airbyte-integrations/connectors/source-linkedin-ads/metadata.yaml b/airbyte-integrations/connectors/source-linkedin-ads/metadata.yaml index 7419a6c77c4b2..00bcfae9d14f0 100644 --- a/airbyte-integrations/connectors/source-linkedin-ads/metadata.yaml +++ b/airbyte-integrations/connectors/source-linkedin-ads/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 137ece28-5434-455c-8f34-69dc3782f451 - dockerImageTag: 4.1.2 + dockerImageTag: 4.1.3 dockerRepository: airbyte/source-linkedin-ads documentationUrl: https://docs.airbyte.com/integrations/sources/linkedin-ads githubIssueLabel: source-linkedin-ads diff --git a/airbyte-integrations/connectors/source-linkedin-ads/poetry.lock b/airbyte-integrations/connectors/source-linkedin-ads/poetry.lock index e19c85e0e21ca..26d3e72990cfa 100644 --- a/airbyte-integrations/connectors/source-linkedin-ads/poetry.lock +++ b/airbyte-integrations/connectors/source-linkedin-ads/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.7.5" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.7.5-py3-none-any.whl", hash = "sha256:57f1ba57f0ffdff384a2b1095143b527ab7320a4b2d9732faa2ea9b4b471e756"}, - {file = "airbyte_cdk-5.7.5.tar.gz", hash = "sha256:3a549fe4c987b900a08d8392a2910ab92c387406bb26ead2c48dc34e605ddb3b"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -26,7 +26,7 @@ jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" nltk = "3.8.1" orjson = ">=3.10.7,<4.0.0" -pandas = "2.2.0" +pandas = "2.2.2" pendulum = "<3.0.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" @@ -141,13 +141,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -618,13 +618,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -635,7 +635,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -810,13 +810,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -824,6 +824,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -921,47 +922,64 @@ twitter = ["twython"] [[package]] name = "numpy" -version = "1.26.4" +version = "2.1.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, ] [[package]] @@ -1043,46 +1061,46 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1107,6 +1125,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -1703,6 +1722,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "serpyco-rs" version = "1.11.0" diff --git a/airbyte-integrations/connectors/source-linkedin-ads/pyproject.toml b/airbyte-integrations/connectors/source-linkedin-ads/pyproject.toml index 08a1a1f4adc73..5b39a82d77b2a 100644 --- a/airbyte-integrations/connectors/source-linkedin-ads/pyproject.toml +++ b/airbyte-integrations/connectors/source-linkedin-ads/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "4.1.2" +version = "4.1.3" name = "source-linkedin-ads" description = "Source implementation for Linkedin Ads." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/linkedin-ads.md b/docs/integrations/sources/linkedin-ads.md index 1bca0cd5fb68c..4c5ce1cb19503 100644 --- a/docs/integrations/sources/linkedin-ads.md +++ b/docs/integrations/sources/linkedin-ads.md @@ -191,6 +191,7 @@ After 5 unsuccessful attempts - the connector will stop the sync operation. In s | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------| +| 4.1.3 | 2024-10-05 | [46433](https://github.com/airbytehq/airbyte/pull/46433) | Update dependencies | | 4.1.2 | 2024-09-28 | [46171](https://github.com/airbytehq/airbyte/pull/46171) | Update dependencies | | 4.1.1 | 2024-09-21 | [45774](https://github.com/airbytehq/airbyte/pull/45774) | Update dependencies | | 4.1.0 | 2024-09-20 | [44370](https://github.com/airbytehq/airbyte/pull/44370) | Migrate to low-code | From e990255834dc3455358cb5800c8a5d1057213a96 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:52 +0300 Subject: [PATCH 108/379] =?UTF-8?q?=F0=9F=90=99=20source-younium:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46432)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-younium/metadata.yaml | 2 +- .../connectors/source-younium/poetry.lock | 35 +++++++++++++------ .../connectors/source-younium/pyproject.toml | 2 +- docs/integrations/sources/younium.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-younium/metadata.yaml b/airbyte-integrations/connectors/source-younium/metadata.yaml index 403a4e6b3447b..c5ce52274e560 100644 --- a/airbyte-integrations/connectors/source-younium/metadata.yaml +++ b/airbyte-integrations/connectors/source-younium/metadata.yaml @@ -16,7 +16,7 @@ data: connectorSubtype: api connectorType: source definitionId: 9c74c2d7-531a-4ebf-b6d8-6181f805ecdc - dockerImageTag: 0.3.21 + dockerImageTag: 0.3.22 dockerRepository: airbyte/source-younium githubIssueLabel: source-younium icon: younium.svg diff --git a/airbyte-integrations/connectors/source-younium/poetry.lock b/airbyte-integrations/connectors/source-younium/poetry.lock index 68a741ee8ec78..1aa5b5c1ab01e 100644 --- a/airbyte-integrations/connectors/source-younium/poetry.lock +++ b/airbyte-integrations/connectors/source-younium/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-younium/pyproject.toml b/airbyte-integrations/connectors/source-younium/pyproject.toml index c86f868601c7d..2ab2787a165d3 100644 --- a/airbyte-integrations/connectors/source-younium/pyproject.toml +++ b/airbyte-integrations/connectors/source-younium/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.3.21" +version = "0.3.22" name = "source-younium" description = "Source implementation for Younium." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/younium.md b/docs/integrations/sources/younium.md index 72a83df0871bd..be61982cb63bd 100644 --- a/docs/integrations/sources/younium.md +++ b/docs/integrations/sources/younium.md @@ -46,6 +46,7 @@ The Younium source connector supports the following [sync modes](https://docs.ai | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------------------------------- | +| 0.3.22 | 2024-10-05 | [46432](https://github.com/airbytehq/airbyte/pull/46432) | Update dependencies | | 0.3.21 | 2024-09-28 | [46176](https://github.com/airbytehq/airbyte/pull/46176) | Update dependencies | | 0.3.20 | 2024-09-21 | [45807](https://github.com/airbytehq/airbyte/pull/45807) | Update dependencies | | 0.3.19 | 2024-09-14 | [45475](https://github.com/airbytehq/airbyte/pull/45475) | Update dependencies | From f0eb7abdf037991aa32bab7368853cfa8e182faf Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:55 +0300 Subject: [PATCH 109/379] =?UTF-8?q?=F0=9F=90=99=20source-zenloop:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46431)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-zenloop/metadata.yaml | 2 +- airbyte-integrations/connectors/source-zenloop/poetry.lock | 6 +++--- .../connectors/source-zenloop/pyproject.toml | 2 +- docs/integrations/sources/zenloop.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-zenloop/metadata.yaml b/airbyte-integrations/connectors/source-zenloop/metadata.yaml index 5cbe438888f07..91f3ad05bd1b5 100644 --- a/airbyte-integrations/connectors/source-zenloop/metadata.yaml +++ b/airbyte-integrations/connectors/source-zenloop/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: f1e4c7f6-db5c-4035-981f-d35ab4998794 - dockerImageTag: 0.1.32 + dockerImageTag: 0.1.33 dockerRepository: airbyte/source-zenloop documentationUrl: https://docs.airbyte.com/integrations/sources/zenloop githubIssueLabel: source-zenloop diff --git a/airbyte-integrations/connectors/source-zenloop/poetry.lock b/airbyte-integrations/connectors/source-zenloop/poetry.lock index e49e13a2ccc54..ba40f7066714e 100644 --- a/airbyte-integrations/connectors/source-zenloop/poetry.lock +++ b/airbyte-integrations/connectors/source-zenloop/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-zenloop/pyproject.toml b/airbyte-integrations/connectors/source-zenloop/pyproject.toml index b1fc79290d270..554c63122d8a5 100644 --- a/airbyte-integrations/connectors/source-zenloop/pyproject.toml +++ b/airbyte-integrations/connectors/source-zenloop/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.32" +version = "0.1.33" name = "source-zenloop" description = "Source implementation for Zenloop." authors = [ "Alexander Batoulis ",] diff --git a/docs/integrations/sources/zenloop.md b/docs/integrations/sources/zenloop.md index 586fae865c5f7..88f7a10ea65c6 100644 --- a/docs/integrations/sources/zenloop.md +++ b/docs/integrations/sources/zenloop.md @@ -77,6 +77,7 @@ The Zenloop connector should not run into Zenloop API limitations under normal u | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.1.33 | 2024-10-05 | [46431](https://github.com/airbytehq/airbyte/pull/46431) | Update dependencies | | 0.1.32 | 2024-09-28 | [46141](https://github.com/airbytehq/airbyte/pull/46141) | Update dependencies | | 0.1.31 | 2024-09-21 | [45823](https://github.com/airbytehq/airbyte/pull/45823) | Update dependencies | | 0.1.30 | 2024-09-14 | [45485](https://github.com/airbytehq/airbyte/pull/45485) | Update dependencies | From a3ee8ecb8cf3c8e957a55d61d3a0af47fc3689b5 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:20:57 +0300 Subject: [PATCH 110/379] =?UTF-8?q?=F0=9F=90=99=20source-apify-dataset:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46430)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-apify-dataset/metadata.yaml | 2 +- .../connectors/source-apify-dataset/poetry.lock | 6 +++--- .../connectors/source-apify-dataset/pyproject.toml | 2 +- docs/integrations/sources/apify-dataset.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-apify-dataset/metadata.yaml b/airbyte-integrations/connectors/source-apify-dataset/metadata.yaml index c0f6caddc8be1..8b2aced92efbf 100644 --- a/airbyte-integrations/connectors/source-apify-dataset/metadata.yaml +++ b/airbyte-integrations/connectors/source-apify-dataset/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: 47f17145-fe20-4ef5-a548-e29b048adf84 - dockerImageTag: 2.1.23 + dockerImageTag: 2.1.24 dockerRepository: airbyte/source-apify-dataset documentationUrl: https://docs.airbyte.com/integrations/sources/apify-dataset githubIssueLabel: source-apify-dataset diff --git a/airbyte-integrations/connectors/source-apify-dataset/poetry.lock b/airbyte-integrations/connectors/source-apify-dataset/poetry.lock index f46b9f785e722..4db559b53ed78 100644 --- a/airbyte-integrations/connectors/source-apify-dataset/poetry.lock +++ b/airbyte-integrations/connectors/source-apify-dataset/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-apify-dataset/pyproject.toml b/airbyte-integrations/connectors/source-apify-dataset/pyproject.toml index c842d57f53c01..cfc834485a66c 100644 --- a/airbyte-integrations/connectors/source-apify-dataset/pyproject.toml +++ b/airbyte-integrations/connectors/source-apify-dataset/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.1.23" +version = "2.1.24" name = "source-apify-dataset" description = "Source implementation for Apify Dataset." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/apify-dataset.md b/docs/integrations/sources/apify-dataset.md index e28a84b1827ec..0ecf51f788da0 100644 --- a/docs/integrations/sources/apify-dataset.md +++ b/docs/integrations/sources/apify-dataset.md @@ -72,6 +72,7 @@ The Apify dataset connector uses [Apify Python Client](https://docs.apify.com/ap | Version | Date | Pull Request | Subject | | :------ | :--------- | :----------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 2.1.24 | 2024-10-05 | [46430](https://github.com/airbytehq/airbyte/pull/46430) | Update dependencies | | 2.1.23 | 2024-09-28 | [46146](https://github.com/airbytehq/airbyte/pull/46146) | Update dependencies | | 2.1.22 | 2024-09-21 | [45820](https://github.com/airbytehq/airbyte/pull/45820) | Update dependencies | | 2.1.21 | 2024-09-14 | [45479](https://github.com/airbytehq/airbyte/pull/45479) | Update dependencies | From 163982f6a1ecd936bc39d24670545d31c3c3315c Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:00 +0300 Subject: [PATCH 111/379] =?UTF-8?q?=F0=9F=90=99=20source-retently:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46429)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-retently/metadata.yaml | 2 +- airbyte-integrations/connectors/source-retently/poetry.lock | 6 +++--- .../connectors/source-retently/pyproject.toml | 2 +- docs/integrations/sources/retently.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-retently/metadata.yaml b/airbyte-integrations/connectors/source-retently/metadata.yaml index f75074d097525..ec631c11319f7 100644 --- a/airbyte-integrations/connectors/source-retently/metadata.yaml +++ b/airbyte-integrations/connectors/source-retently/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: db04ecd1-42e7-4115-9cec-95812905c626 - dockerImageTag: 0.2.21 + dockerImageTag: 0.2.22 dockerRepository: airbyte/source-retently documentationUrl: https://docs.airbyte.com/integrations/sources/retently githubIssueLabel: source-retently diff --git a/airbyte-integrations/connectors/source-retently/poetry.lock b/airbyte-integrations/connectors/source-retently/poetry.lock index f46b9f785e722..4db559b53ed78 100644 --- a/airbyte-integrations/connectors/source-retently/poetry.lock +++ b/airbyte-integrations/connectors/source-retently/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-retently/pyproject.toml b/airbyte-integrations/connectors/source-retently/pyproject.toml index 4381d4a077df9..24bfaa85d6b45 100644 --- a/airbyte-integrations/connectors/source-retently/pyproject.toml +++ b/airbyte-integrations/connectors/source-retently/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.21" +version = "0.2.22" name = "source-retently" description = "Source implementation for Retently." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/retently.md b/docs/integrations/sources/retently.md index 837646463bc20..df94e4aa1a661 100644 --- a/docs/integrations/sources/retently.md +++ b/docs/integrations/sources/retently.md @@ -49,6 +49,7 @@ OAuth application is [here](https://app.retently.com/settings/oauth). | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.2.22 | 2024-10-05 | [46429](https://github.com/airbytehq/airbyte/pull/46429) | Update dependencies | | 0.2.21 | 2024-09-28 | [46150](https://github.com/airbytehq/airbyte/pull/46150) | Update dependencies | | 0.2.20 | 2024-09-21 | [45513](https://github.com/airbytehq/airbyte/pull/45513) | Update dependencies | | 0.2.19 | 2024-09-07 | [45243](https://github.com/airbytehq/airbyte/pull/45243) | Update dependencies | From 8eacac70c9c5e48b5fb865a4823d2f8729a487c3 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:02 +0300 Subject: [PATCH 112/379] =?UTF-8?q?=F0=9F=90=99=20source-mixpanel:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46428)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-mixpanel/metadata.yaml | 2 +- .../connectors/source-mixpanel/poetry.lock | 35 +++++++++++++------ .../connectors/source-mixpanel/pyproject.toml | 2 +- docs/integrations/sources/mixpanel.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-mixpanel/metadata.yaml b/airbyte-integrations/connectors/source-mixpanel/metadata.yaml index 1d5ad6cdfc7f3..ea93b83caa697 100644 --- a/airbyte-integrations/connectors/source-mixpanel/metadata.yaml +++ b/airbyte-integrations/connectors/source-mixpanel/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 12928b32-bf0a-4f1e-964f-07e12e37153a - dockerImageTag: 3.4.6 + dockerImageTag: 3.4.7 dockerRepository: airbyte/source-mixpanel documentationUrl: https://docs.airbyte.com/integrations/sources/mixpanel githubIssueLabel: source-mixpanel diff --git a/airbyte-integrations/connectors/source-mixpanel/poetry.lock b/airbyte-integrations/connectors/source-mixpanel/poetry.lock index 9d1802ca81088..4d87e06a4cadd 100644 --- a/airbyte-integrations/connectors/source-mixpanel/poetry.lock +++ b/airbyte-integrations/connectors/source-mixpanel/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -510,13 +510,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -527,7 +527,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -702,13 +702,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -716,6 +716,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1479,6 +1480,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-mixpanel/pyproject.toml b/airbyte-integrations/connectors/source-mixpanel/pyproject.toml index 04047bc8c6dae..f4df7cd3e1061 100644 --- a/airbyte-integrations/connectors/source-mixpanel/pyproject.toml +++ b/airbyte-integrations/connectors/source-mixpanel/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "3.4.6" +version = "3.4.7" name = "source-mixpanel" description = "Source implementation for Mixpanel." authors = ["Airbyte "] diff --git a/docs/integrations/sources/mixpanel.md b/docs/integrations/sources/mixpanel.md index 0db9dee58da41..d355355c0ae00 100644 --- a/docs/integrations/sources/mixpanel.md +++ b/docs/integrations/sources/mixpanel.md @@ -58,6 +58,7 @@ Syncing huge date windows may take longer due to Mixpanel's low API rate-limits | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 3.4.7 | 2024-10-05 | [46428](https://github.com/airbytehq/airbyte/pull/46428) | Update dependencies | | 3.4.6 | 2024-09-28 | [45747](https://github.com/airbytehq/airbyte/pull/45747) | Update dependencies | | 3.4.5 | 2024-09-14 | [45473](https://github.com/airbytehq/airbyte/pull/45473) | Update dependencies | | 3.4.4 | 2024-09-07 | [45264](https://github.com/airbytehq/airbyte/pull/45264) | Update dependencies | From 11864ba224ccd41a3aec1b485f33b46b1f075c56 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:05 +0300 Subject: [PATCH 113/379] =?UTF-8?q?=F0=9F=90=99=20source-smartsheets:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46427)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-smartsheets/metadata.yaml | 2 +- .../connectors/source-smartsheets/poetry.lock | 14 +++++++------- .../connectors/source-smartsheets/pyproject.toml | 2 +- docs/integrations/sources/smartsheets.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/source-smartsheets/metadata.yaml b/airbyte-integrations/connectors/source-smartsheets/metadata.yaml index b9d6c02bf7ebd..a4c6674286ce3 100644 --- a/airbyte-integrations/connectors/source-smartsheets/metadata.yaml +++ b/airbyte-integrations/connectors/source-smartsheets/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: api connectorType: source definitionId: 374ebc65-6636-4ea0-925c-7d35999a8ffc - dockerImageTag: 1.1.21 + dockerImageTag: 1.1.22 dockerRepository: airbyte/source-smartsheets documentationUrl: https://docs.airbyte.com/integrations/sources/smartsheets githubIssueLabel: source-smartsheets diff --git a/airbyte-integrations/connectors/source-smartsheets/poetry.lock b/airbyte-integrations/connectors/source-smartsheets/poetry.lock index 5530e779711b9..675618517e1c8 100644 --- a/airbyte-integrations/connectors/source-smartsheets/poetry.lock +++ b/airbyte-integrations/connectors/source-smartsheets/poetry.lock @@ -82,13 +82,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -912,13 +912,13 @@ test = ["coverage", "coveralls", "pytest"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-smartsheets/pyproject.toml b/airbyte-integrations/connectors/source-smartsheets/pyproject.toml index be9a6b7df27c1..abef1a6ed594d 100644 --- a/airbyte-integrations/connectors/source-smartsheets/pyproject.toml +++ b/airbyte-integrations/connectors/source-smartsheets/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.1.21" +version = "1.1.22" name = "source-smartsheets" description = "Source implementation for Smartsheets." authors = [ "Nate Nowack ",] diff --git a/docs/integrations/sources/smartsheets.md b/docs/integrations/sources/smartsheets.md index 9cfc6ceb47f1b..8836902aeb347 100644 --- a/docs/integrations/sources/smartsheets.md +++ b/docs/integrations/sources/smartsheets.md @@ -117,6 +117,7 @@ The remaining column datatypes supported by Smartsheets are more complex types ( | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------------------------------------------- | +| 1.1.22 | 2024-10-05 | [46427](https://github.com/airbytehq/airbyte/pull/46427) | Update dependencies | | 1.1.21 | 2024-09-28 | [46154](https://github.com/airbytehq/airbyte/pull/46154) | Update dependencies | | 1.1.20 | 2024-09-21 | [45722](https://github.com/airbytehq/airbyte/pull/45722) | Update dependencies | | 1.1.19 | 2024-09-14 | [45575](https://github.com/airbytehq/airbyte/pull/45575) | Update dependencies | From ac946e4c0806769e4e8a3169c2fd5685d341470b Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:07 +0300 Subject: [PATCH 114/379] =?UTF-8?q?=F0=9F=90=99=20destination-typesense:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46426)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/destination-typesense/metadata.yaml | 2 +- .../connectors/destination-typesense/poetry.lock | 14 +++++++------- .../destination-typesense/pyproject.toml | 2 +- docs/integrations/destinations/typesense.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/destination-typesense/metadata.yaml b/airbyte-integrations/connectors/destination-typesense/metadata.yaml index a9b97f810ae09..15da73794beac 100644 --- a/airbyte-integrations/connectors/destination-typesense/metadata.yaml +++ b/airbyte-integrations/connectors/destination-typesense/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: database connectorType: destination definitionId: 36be8dc6-9851-49af-b776-9d4c30e4ab6a - dockerImageTag: 0.1.26 + dockerImageTag: 0.1.27 dockerRepository: airbyte/destination-typesense connectorBuildOptions: baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 diff --git a/airbyte-integrations/connectors/destination-typesense/poetry.lock b/airbyte-integrations/connectors/destination-typesense/poetry.lock index b2e418c8b4625..8cc4bdea2f633 100644 --- a/airbyte-integrations/connectors/destination-typesense/poetry.lock +++ b/airbyte-integrations/connectors/destination-typesense/poetry.lock @@ -83,13 +83,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -877,13 +877,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-typesense/pyproject.toml b/airbyte-integrations/connectors/destination-typesense/pyproject.toml index 60a40c3a51dea..5b562cbca7363 100644 --- a/airbyte-integrations/connectors/destination-typesense/pyproject.toml +++ b/airbyte-integrations/connectors/destination-typesense/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.26" +version = "0.1.27" name = "destination-typesense" description = "Destination Implementation for Typesense." authors = [ "Airbyte ",] diff --git a/docs/integrations/destinations/typesense.md b/docs/integrations/destinations/typesense.md index 72100a2a1bbd0..31756eabfe2fd 100644 --- a/docs/integrations/destinations/typesense.md +++ b/docs/integrations/destinations/typesense.md @@ -44,6 +44,7 @@ To connect a Typesense with HA, you can type multiple hosts on the host field us | Version | Date | Pull Request | Subject | |:--------| :--------- | :------------------------------------------------------- | :---------------------------- | +| 0.1.27 | 2024-10-05 | [46426](https://github.com/airbytehq/airbyte/pull/46426) | Update dependencies | | 0.1.26 | 2024-09-28 | [46119](https://github.com/airbytehq/airbyte/pull/46119) | Update dependencies | | 0.1.25 | 2024-09-21 | [45768](https://github.com/airbytehq/airbyte/pull/45768) | Update dependencies | | 0.1.24 | 2024-09-14 | [45491](https://github.com/airbytehq/airbyte/pull/45491) | Update dependencies | From b9f58979e4ff845cf660839dd27e54062e0d88a3 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:10 +0300 Subject: [PATCH 115/379] =?UTF-8?q?=F0=9F=90=99=20source-gnews:=20run=20up?= =?UTF-8?q?-to-date=20pipeline=20[2024-10-05]=20(#46425)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-gnews/metadata.yaml | 2 +- .../connectors/source-gnews/poetry.lock | 35 +++++++++++++------ .../connectors/source-gnews/pyproject.toml | 2 +- docs/integrations/sources/gnews.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-gnews/metadata.yaml b/airbyte-integrations/connectors/source-gnews/metadata.yaml index 6337832d6857f..b0f261e831ae6 100644 --- a/airbyte-integrations/connectors/source-gnews/metadata.yaml +++ b/airbyte-integrations/connectors/source-gnews/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: ce38aec4-5a77-439a-be29-9ca44fd4e811 - dockerImageTag: 0.1.23 + dockerImageTag: 0.1.24 dockerRepository: airbyte/source-gnews githubIssueLabel: source-gnews icon: gnews.svg diff --git a/airbyte-integrations/connectors/source-gnews/poetry.lock b/airbyte-integrations/connectors/source-gnews/poetry.lock index 116b0d191d745..b5f0e47b6b507 100644 --- a/airbyte-integrations/connectors/source-gnews/poetry.lock +++ b/airbyte-integrations/connectors/source-gnews/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-gnews/pyproject.toml b/airbyte-integrations/connectors/source-gnews/pyproject.toml index 1ef25d2690965..b52c6c169febc 100644 --- a/airbyte-integrations/connectors/source-gnews/pyproject.toml +++ b/airbyte-integrations/connectors/source-gnews/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.23" +version = "0.1.24" name = "source-gnews" description = "Source implementation for Gnews." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/gnews.md b/docs/integrations/sources/gnews.md index 8caf99c64993b..34026f2563c0a 100644 --- a/docs/integrations/sources/gnews.md +++ b/docs/integrations/sources/gnews.md @@ -40,6 +40,7 @@ Rate Limiting is based on the API Key tier subscription, get more info [here](ht | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------------------------- | +| 0.1.24 | 2024-10-05 | [46425](https://github.com/airbytehq/airbyte/pull/46425) | Update dependencies | | 0.1.23 | 2024-09-28 | [46209](https://github.com/airbytehq/airbyte/pull/46209) | Update dependencies | | 0.1.22 | 2024-09-21 | [45808](https://github.com/airbytehq/airbyte/pull/45808) | Update dependencies | | 0.1.21 | 2024-09-14 | [45541](https://github.com/airbytehq/airbyte/pull/45541) | Update dependencies | From 3e192b1b4215b4c18f6f1374e5f8d39ef1c76655 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:13 +0300 Subject: [PATCH 116/379] =?UTF-8?q?=F0=9F=90=99=20source-quickbooks:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46424)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-quickbooks/metadata.yaml | 2 +- .../connectors/source-quickbooks/poetry.lock | 35 +++++++++++++------ .../source-quickbooks/pyproject.toml | 2 +- docs/integrations/sources/quickbooks.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-quickbooks/metadata.yaml b/airbyte-integrations/connectors/source-quickbooks/metadata.yaml index 6db3977fe4825..64c23954d9e92 100644 --- a/airbyte-integrations/connectors/source-quickbooks/metadata.yaml +++ b/airbyte-integrations/connectors/source-quickbooks/metadata.yaml @@ -9,7 +9,7 @@ data: baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 connectorType: source definitionId: cf9c4355-b171-4477-8f2d-6c5cc5fc8b7e - dockerImageTag: 3.0.24 + dockerImageTag: 3.0.25 dockerRepository: airbyte/source-quickbooks githubIssueLabel: source-quickbooks icon: quickbooks.svg diff --git a/airbyte-integrations/connectors/source-quickbooks/poetry.lock b/airbyte-integrations/connectors/source-quickbooks/poetry.lock index 8660e81f4ebac..0120669532e44 100644 --- a/airbyte-integrations/connectors/source-quickbooks/poetry.lock +++ b/airbyte-integrations/connectors/source-quickbooks/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1355,6 +1356,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-quickbooks/pyproject.toml b/airbyte-integrations/connectors/source-quickbooks/pyproject.toml index 9ab2bad7688da..717fcd96bc648 100644 --- a/airbyte-integrations/connectors/source-quickbooks/pyproject.toml +++ b/airbyte-integrations/connectors/source-quickbooks/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "3.0.24" +version = "3.0.25" name = "source-quickbooks" description = "Source implementation for quickbooks." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/quickbooks.md b/docs/integrations/sources/quickbooks.md index bfab43dab205d..5bf3a9f734f7c 100644 --- a/docs/integrations/sources/quickbooks.md +++ b/docs/integrations/sources/quickbooks.md @@ -108,6 +108,7 @@ This Source is capable of syncing the following [Streams](https://developer.intu | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------------------------------------------- | +| 3.0.25 | 2024-10-05 | [46424](https://github.com/airbytehq/airbyte/pull/46424) | Update dependencies | | 3.0.24 | 2024-09-28 | [46142](https://github.com/airbytehq/airbyte/pull/46142) | Update dependencies | | 3.0.23 | 2024-09-21 | [45727](https://github.com/airbytehq/airbyte/pull/45727) | Update dependencies | | 3.0.22 | 2024-09-14 | [45517](https://github.com/airbytehq/airbyte/pull/45517) | Update dependencies | From 3275636b08afe475891b7ece668f774b680f2023 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:15 +0300 Subject: [PATCH 117/379] =?UTF-8?q?=F0=9F=90=99=20source-woocommerce:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46423)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-woocommerce/metadata.yaml | 2 +- .../connectors/source-woocommerce/poetry.lock | 35 +++++++++++++------ .../source-woocommerce/pyproject.toml | 2 +- docs/integrations/sources/woocommerce.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-woocommerce/metadata.yaml b/airbyte-integrations/connectors/source-woocommerce/metadata.yaml index dc0ded0ec8b25..0715e3b29af75 100644 --- a/airbyte-integrations/connectors/source-woocommerce/metadata.yaml +++ b/airbyte-integrations/connectors/source-woocommerce/metadata.yaml @@ -8,7 +8,7 @@ data: connectorSubtype: api connectorType: source definitionId: 2a2552ca-9f78-4c1c-9eb7-4d0dc66d72df - dockerImageTag: 0.4.10 + dockerImageTag: 0.4.11 dockerRepository: airbyte/source-woocommerce documentationUrl: https://docs.airbyte.com/integrations/sources/woocommerce githubIssueLabel: source-woocommerce diff --git a/airbyte-integrations/connectors/source-woocommerce/poetry.lock b/airbyte-integrations/connectors/source-woocommerce/poetry.lock index 61b4c7a9979cb..6dffd5f549d58 100644 --- a/airbyte-integrations/connectors/source-woocommerce/poetry.lock +++ b/airbyte-integrations/connectors/source-woocommerce/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -524,13 +524,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -541,7 +541,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -716,13 +716,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -730,6 +730,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1493,6 +1494,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-woocommerce/pyproject.toml b/airbyte-integrations/connectors/source-woocommerce/pyproject.toml index 1bfe57acb1afd..8a29e011692c9 100644 --- a/airbyte-integrations/connectors/source-woocommerce/pyproject.toml +++ b/airbyte-integrations/connectors/source-woocommerce/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.4.10" +version = "0.4.11" name = "source-woocommerce" description = "Source implementation for Woocommerce." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/woocommerce.md b/docs/integrations/sources/woocommerce.md index 102a890dd922a..cc3d1d97091ba 100644 --- a/docs/integrations/sources/woocommerce.md +++ b/docs/integrations/sources/woocommerce.md @@ -122,6 +122,7 @@ maximum number of seconds between API calls. | Version | Date | Pull Request | Subject | |:--------| :--------- |:---------------------------------------------------------|:-----------------------------------------------------------------------| +| 0.4.11 | 2024-10-05 | [46423](https://github.com/airbytehq/airbyte/pull/46423) | Update dependencies | | 0.4.10 | 2024-09-28 | [46193](https://github.com/airbytehq/airbyte/pull/46193) | Update dependencies | | 0.4.9 | 2024-09-21 | [45776](https://github.com/airbytehq/airbyte/pull/45776) | Update dependencies | | 0.4.8 | 2024-09-14 | [45534](https://github.com/airbytehq/airbyte/pull/45534) | Update dependencies | From b7670d820e01cdcd59e3c26fd797818421b6c29e Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:18 +0300 Subject: [PATCH 118/379] =?UTF-8?q?=F0=9F=90=99=20source-google-directory:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46422)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-google-directory/metadata.yaml | 4 ++-- .../connectors/source-google-directory/poetry.lock | 6 +++--- .../connectors/source-google-directory/pyproject.toml | 2 +- docs/integrations/sources/google-directory.md | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/airbyte-integrations/connectors/source-google-directory/metadata.yaml b/airbyte-integrations/connectors/source-google-directory/metadata.yaml index 17c9dce9d6c88..c586fc34034b2 100644 --- a/airbyte-integrations/connectors/source-google-directory/metadata.yaml +++ b/airbyte-integrations/connectors/source-google-directory/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: d19ae824-e289-4b14-995a-0632eb46d246 - dockerImageTag: 0.2.19 + dockerImageTag: 0.2.20 dockerRepository: airbyte/source-google-directory githubIssueLabel: source-google-directory icon: googledirectory.svg @@ -14,7 +14,7 @@ data: packageName: airbyte-source-google-directory registryOverrides: cloud: - dockerImageTag: 0.2.19 + dockerImageTag: 0.2.20 enabled: true oss: enabled: true diff --git a/airbyte-integrations/connectors/source-google-directory/poetry.lock b/airbyte-integrations/connectors/source-google-directory/poetry.lock index c13533faebf7f..e3a6a16d7c417 100644 --- a/airbyte-integrations/connectors/source-google-directory/poetry.lock +++ b/airbyte-integrations/connectors/source-google-directory/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-google-directory/pyproject.toml b/airbyte-integrations/connectors/source-google-directory/pyproject.toml index a2a48fdd9eccd..0118e425111ca 100644 --- a/airbyte-integrations/connectors/source-google-directory/pyproject.toml +++ b/airbyte-integrations/connectors/source-google-directory/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.19" +version = "0.2.20" name = "source-google-directory" description = "Source implementation for Google Directory." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/google-directory.md b/docs/integrations/sources/google-directory.md index d1ad2ec08768f..12ecf6547dda3 100644 --- a/docs/integrations/sources/google-directory.md +++ b/docs/integrations/sources/google-directory.md @@ -70,6 +70,7 @@ You should now be ready to use the Google Directory connector in Airbyte. | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :----------------------------------------------------------- | +| 0.2.20 | 2024-10-05 | [46422](https://github.com/airbytehq/airbyte/pull/46422) | Update dependencies | | 0.2.19 | 2024-09-28 | [46136](https://github.com/airbytehq/airbyte/pull/46136) | Update dependencies | | 0.2.18 | 2024-09-21 | [45733](https://github.com/airbytehq/airbyte/pull/45733) | Update dependencies | | 0.2.17 | 2024-09-14 | [45540](https://github.com/airbytehq/airbyte/pull/45540) | Update dependencies | From 93c487f038397b1623d4d31cc7c5f78fd399d2f0 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:21 +0300 Subject: [PATCH 119/379] =?UTF-8?q?=F0=9F=90=99=20source-posthog:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46421)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-posthog/metadata.yaml | 2 +- airbyte-integrations/connectors/source-posthog/poetry.lock | 6 +++--- .../connectors/source-posthog/pyproject.toml | 2 +- docs/integrations/sources/posthog.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-posthog/metadata.yaml b/airbyte-integrations/connectors/source-posthog/metadata.yaml index cf369b0e15e32..dfe67c52e0ad7 100644 --- a/airbyte-integrations/connectors/source-posthog/metadata.yaml +++ b/airbyte-integrations/connectors/source-posthog/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: api connectorType: source definitionId: af6d50ee-dddf-4126-a8ee-7faee990774f - dockerImageTag: 1.1.13 + dockerImageTag: 1.1.14 dockerRepository: airbyte/source-posthog documentationUrl: https://docs.airbyte.com/integrations/sources/posthog githubIssueLabel: source-posthog diff --git a/airbyte-integrations/connectors/source-posthog/poetry.lock b/airbyte-integrations/connectors/source-posthog/poetry.lock index 22bea5a03621e..66128eb34a00b 100644 --- a/airbyte-integrations/connectors/source-posthog/poetry.lock +++ b/airbyte-integrations/connectors/source-posthog/poetry.lock @@ -93,13 +93,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-posthog/pyproject.toml b/airbyte-integrations/connectors/source-posthog/pyproject.toml index cf1a3f82671a4..f6187283ee611 100644 --- a/airbyte-integrations/connectors/source-posthog/pyproject.toml +++ b/airbyte-integrations/connectors/source-posthog/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.1.13" +version = "1.1.14" name = "source-posthog" description = "Source implementation for Posthog." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/posthog.md b/docs/integrations/sources/posthog.md index 4e29b1685e4a7..7878c38d64f86 100644 --- a/docs/integrations/sources/posthog.md +++ b/docs/integrations/sources/posthog.md @@ -71,6 +71,7 @@ Want to use the PostHog API beyond these limits? Email Posthog at `customers@pos | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | +| 1.1.14 | 2024-10-05 | [46421](https://github.com/airbytehq/airbyte/pull/46421) | Update dependencies | | 1.1.13 | 2024-09-28 | [46108](https://github.com/airbytehq/airbyte/pull/46108) | Update dependencies | | 1.1.12 | 2024-09-21 | [45796](https://github.com/airbytehq/airbyte/pull/45796) | Update dependencies | | 1.1.11 | 2024-09-14 | [45570](https://github.com/airbytehq/airbyte/pull/45570) | Update dependencies | From 628314138b99b356f081e92317b1dbfcb707f2ba Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:23 +0300 Subject: [PATCH 120/379] =?UTF-8?q?=F0=9F=90=99=20destination-firebolt:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46420)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-firebolt/metadata.yaml | 2 +- .../destination-firebolt/poetry.lock | 22 +++++++++---------- .../destination-firebolt/pyproject.toml | 2 +- docs/integrations/destinations/firebolt.md | 1 + 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/airbyte-integrations/connectors/destination-firebolt/metadata.yaml b/airbyte-integrations/connectors/destination-firebolt/metadata.yaml index a883cb56f4cf8..c4027a03e24be 100644 --- a/airbyte-integrations/connectors/destination-firebolt/metadata.yaml +++ b/airbyte-integrations/connectors/destination-firebolt/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: database connectorType: destination definitionId: 18081484-02a5-4662-8dba-b270b582f321 - dockerImageTag: 0.2.20 + dockerImageTag: 0.2.21 dockerRepository: airbyte/destination-firebolt githubIssueLabel: destination-firebolt connectorBuildOptions: diff --git a/airbyte-integrations/connectors/destination-firebolt/poetry.lock b/airbyte-integrations/connectors/destination-firebolt/poetry.lock index 3c3d68382f0fa..2fe419a1319da 100644 --- a/airbyte-integrations/connectors/destination-firebolt/poetry.lock +++ b/airbyte-integrations/connectors/destination-firebolt/poetry.lock @@ -163,13 +163,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -581,13 +581,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -598,7 +598,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -1405,13 +1405,13 @@ doc = ["sphinx"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-firebolt/pyproject.toml b/airbyte-integrations/connectors/destination-firebolt/pyproject.toml index 15633ac62d398..a465b67c30f60 100644 --- a/airbyte-integrations/connectors/destination-firebolt/pyproject.toml +++ b/airbyte-integrations/connectors/destination-firebolt/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.20" +version = "0.2.21" name = "destination-firebolt" description = "Destination implementation for Firebolt." authors = [ "Airbyte ",] diff --git a/docs/integrations/destinations/firebolt.md b/docs/integrations/destinations/firebolt.md index c107b79ed19dd..0188b2fcf9d29 100644 --- a/docs/integrations/destinations/firebolt.md +++ b/docs/integrations/destinations/firebolt.md @@ -98,6 +98,7 @@ Firebolt. Each table will contain 3 columns: | Version | Date | Pull Request | Subject | |:--------| :--------- | :------------------------------------------------------- | :------------------------------------- | +| 0.2.21 | 2024-10-05 | [46420](https://github.com/airbytehq/airbyte/pull/46420) | Update dependencies | | 0.2.20 | 2024-09-28 | [46144](https://github.com/airbytehq/airbyte/pull/46144) | Update dependencies | | 0.2.19 | 2024-09-21 | [45744](https://github.com/airbytehq/airbyte/pull/45744) | Update dependencies | | 0.2.18 | 2024-09-14 | [45562](https://github.com/airbytehq/airbyte/pull/45562) | Update dependencies | From 8bb4875f95d8ad308c8ccf9020f0d0ad93777b03 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:26 +0300 Subject: [PATCH 121/379] =?UTF-8?q?=F0=9F=90=99=20source-snapchat-marketin?= =?UTF-8?q?g:=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46419)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-snapchat-marketing/metadata.yaml | 2 +- .../source-snapchat-marketing/poetry.lock | 35 +++++++++++++------ .../source-snapchat-marketing/pyproject.toml | 2 +- .../sources/snapchat-marketing.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-snapchat-marketing/metadata.yaml b/airbyte-integrations/connectors/source-snapchat-marketing/metadata.yaml index 7a41205e2ebce..f5fdc6aee1ce0 100644 --- a/airbyte-integrations/connectors/source-snapchat-marketing/metadata.yaml +++ b/airbyte-integrations/connectors/source-snapchat-marketing/metadata.yaml @@ -8,7 +8,7 @@ data: connectorSubtype: api connectorType: source definitionId: 200330b2-ea62-4d11-ac6d-cfe3e3f8ab2b - dockerImageTag: 1.2.10 + dockerImageTag: 1.2.11 dockerRepository: airbyte/source-snapchat-marketing githubIssueLabel: source-snapchat-marketing icon: snapchat.svg diff --git a/airbyte-integrations/connectors/source-snapchat-marketing/poetry.lock b/airbyte-integrations/connectors/source-snapchat-marketing/poetry.lock index 731b989e9739b..1b4dba2d2cbad 100644 --- a/airbyte-integrations/connectors/source-snapchat-marketing/poetry.lock +++ b/airbyte-integrations/connectors/source-snapchat-marketing/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -510,13 +510,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -527,7 +527,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -702,13 +702,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -716,6 +716,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1479,6 +1480,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-snapchat-marketing/pyproject.toml b/airbyte-integrations/connectors/source-snapchat-marketing/pyproject.toml index 99eb8de51300d..14360d3397a0d 100644 --- a/airbyte-integrations/connectors/source-snapchat-marketing/pyproject.toml +++ b/airbyte-integrations/connectors/source-snapchat-marketing/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.2.10" +version = "1.2.11" name = "source-snapchat-marketing" description = "Source implementation for Snapchat Marketing." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/snapchat-marketing.md b/docs/integrations/sources/snapchat-marketing.md index 710635f488b67..ffe7fed9447b3 100644 --- a/docs/integrations/sources/snapchat-marketing.md +++ b/docs/integrations/sources/snapchat-marketing.md @@ -143,6 +143,7 @@ Syncing data with an hourly granularity often generates large data volumes and c | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-------------------------------------------------------------------------------| +| 1.2.11 | 2024-10-05 | [46419](https://github.com/airbytehq/airbyte/pull/46419) | Update dependencies | | 1.2.10 | 2024-09-28 | [46106](https://github.com/airbytehq/airbyte/pull/46106) | Update dependencies | | 1.2.9 | 2024-09-21 | [45780](https://github.com/airbytehq/airbyte/pull/45780) | Update dependencies | | 1.2.8 | 2024-09-14 | [45477](https://github.com/airbytehq/airbyte/pull/45477) | Update dependencies | From 17c480d129274c79d239661e0fcd78d6731d72c4 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:29 +0300 Subject: [PATCH 122/379] =?UTF-8?q?=F0=9F=90=99=20destination-databend:=20?= =?UTF-8?q?run=20up-to-date=20pipeline=20[2024-10-05]=20(#46418)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/destination-databend/metadata.yaml | 2 +- .../connectors/destination-databend/poetry.lock | 14 +++++++------- .../connectors/destination-databend/pyproject.toml | 2 +- docs/integrations/destinations/databend.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/destination-databend/metadata.yaml b/airbyte-integrations/connectors/destination-databend/metadata.yaml index a7c32f3372057..6309a80e119f4 100644 --- a/airbyte-integrations/connectors/destination-databend/metadata.yaml +++ b/airbyte-integrations/connectors/destination-databend/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: database connectorType: destination definitionId: 302e4d8e-08d3-4098-acd4-ac67ca365b88 - dockerImageTag: 0.1.24 + dockerImageTag: 0.1.25 dockerRepository: airbyte/destination-databend githubIssueLabel: destination-databend icon: databend.svg diff --git a/airbyte-integrations/connectors/destination-databend/poetry.lock b/airbyte-integrations/connectors/destination-databend/poetry.lock index 18c8ed289ac99..0ad8e1e7b82f7 100644 --- a/airbyte-integrations/connectors/destination-databend/poetry.lock +++ b/airbyte-integrations/connectors/destination-databend/poetry.lock @@ -83,13 +83,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -1121,13 +1121,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-databend/pyproject.toml b/airbyte-integrations/connectors/destination-databend/pyproject.toml index 0c3338f565224..ed853b073cdfb 100644 --- a/airbyte-integrations/connectors/destination-databend/pyproject.toml +++ b/airbyte-integrations/connectors/destination-databend/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.24" +version = "0.1.25" name = "destination-databend" description = "Destination implementation for Databend." authors = [ "Airbyte ",] diff --git a/docs/integrations/destinations/databend.md b/docs/integrations/destinations/databend.md index 114475038cab4..79c2b2ef8b3bf 100644 --- a/docs/integrations/destinations/databend.md +++ b/docs/integrations/destinations/databend.md @@ -72,6 +72,7 @@ And the [Databend Cloud](https://app.databend.com/) will only support databend v | Version | Date | Pull Request | Subject | | :------------------------------------------------------- | :--------------------------------------- | :-------------------------------------------------------- | :------------------------------------------------------- | ----------- | +| 0.1.25 | 2024-10-05 | [46418](https://github.com/airbytehq/airbyte/pull/46418) | Update dependencies | | 0.1.24 | 2024-09-28 | [46197](https://github.com/airbytehq/airbyte/pull/46197) | Update dependencies | | 0.1.23 | 2024-09-21 | [45824](https://github.com/airbytehq/airbyte/pull/45824) | Update dependencies | | 0.1.22 | 2024-09-14 | [45531](https://github.com/airbytehq/airbyte/pull/45531) | Update dependencies | From c05e0846c0747fd1965349cc148cd29506e6c18f Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:32 +0300 Subject: [PATCH 123/379] =?UTF-8?q?=F0=9F=90=99=20destination-qdrant:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46417)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-qdrant/metadata.yaml | 2 +- .../connectors/destination-qdrant/poetry.lock | 334 ++++++++++-------- .../destination-qdrant/pyproject.toml | 2 +- docs/integrations/destinations/qdrant.md | 1 + 4 files changed, 182 insertions(+), 157 deletions(-) diff --git a/airbyte-integrations/connectors/destination-qdrant/metadata.yaml b/airbyte-integrations/connectors/destination-qdrant/metadata.yaml index 62bb097473f9b..e1c6de2aaad4d 100644 --- a/airbyte-integrations/connectors/destination-qdrant/metadata.yaml +++ b/airbyte-integrations/connectors/destination-qdrant/metadata.yaml @@ -22,7 +22,7 @@ data: connectorSubtype: vectorstore connectorType: destination definitionId: 6eb1198a-6d38-43e5-aaaa-dccd8f71db2b - dockerImageTag: 0.1.14 + dockerImageTag: 0.1.15 dockerRepository: airbyte/destination-qdrant githubIssueLabel: destination-qdrant icon: qdrant.svg diff --git a/airbyte-integrations/connectors/destination-qdrant/poetry.lock b/airbyte-integrations/connectors/destination-qdrant/poetry.lock index db07610c029df..b41cce06b48bc 100644 --- a/airbyte-integrations/connectors/destination-qdrant/poetry.lock +++ b/airbyte-integrations/connectors/destination-qdrant/poetry.lock @@ -2,113 +2,113 @@ [[package]] name = "aiohappyeyeballs" -version = "2.4.2" +version = "2.4.3" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "aiohappyeyeballs-2.4.2-py3-none-any.whl", hash = "sha256:8522691d9a154ba1145b157d6d5c15e5c692527ce6a53c5e5f9876977f6dab2f"}, - {file = "aiohappyeyeballs-2.4.2.tar.gz", hash = "sha256:4ca893e6c5c1f5bf3888b04cb5a3bee24995398efef6e0b9f747b5e89d84fd74"}, + {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, + {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, ] [[package]] name = "aiohttp" -version = "3.10.7" +version = "3.10.9" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df23cb35bec54b73fba371c7c904994433651458acf8bfb7c84464fef5834c0a"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33a6d023b207ad8227e607814c0020b42c53e01a66004fc0f2555e1a4941282"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d23df9f01c8945d03cffcdd9ba9bfd88aa21ac567a39d0ac4d0c80499ed0d23"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ddf2c8c9ec6bb3f5c057e5c95605adb8e3f1e2d999e8801736f448aff29280e"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d09e40e2ae6723af487ffde019055d0b6ce4eae0749fcfe9de624b61f1af6ec"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc1f4e0f4b1ae9289b4d0cc3bf5d6d55176c38ef1d41484550f3f9a0a78bedae"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636e3efb0bb024817cefa1ef86d678d1a73eb210ae162aff4234214060011ff5"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bab2544f09cd1db154c105e03b1c941032fd7237da5da184595771999ca90daa"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:431852e77cd72f60a0278f8cf557c8e568cd856f755a4b6c5232c7d8c6343d2e"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6bae913cbb183cd34863905088ef26a17c75332bd6bdd451ee8bf158c987cf19"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:278cd430ba93a157ad1faf490fdd6051801085ffa31a27762133472555e56888"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e083e29b6db8e34a507cd678f89eab3ae5f307486ea6010c6473436d3769628d"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:150deb28d5302cfec89fc31ea4bce774df06f5c03d95519f7588ca6517a472d7"}, - {file = "aiohttp-3.10.7-cp310-cp310-win32.whl", hash = "sha256:e19337d6552af197ebb8c886daea0b938ae34eff776c1fa914ad433f6db3970f"}, - {file = "aiohttp-3.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:bff7ef30cb6fc186ea6dda9e19d6105b1c213e3a3f759b5a23c271c778027260"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1378164474a3866f7684a95efede1bee4016cd104bc10bf885e492c4459b715a"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:87d0e52b2905dbc1aeffcbf0611fa82e27874764332c11b984293a4b91cc8e9f"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2783754bfcee0b13b8e55932b418cf8984c17099fd1b37341d4696447d0c328"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d26881d98274ef0dbd4f069f383e5e90eb6e42e957289db14c47186386832ce"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e152296b2c50417445eacdb2353d3c10e702f6593aa774277510fb7761304302"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf1cd9bfd598899396bdb8a4dc5234144a77e482e7489972b7956cf66e272872"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871c2bf68ecc55056e5e3b0ae5929a1149f41c4255bbf99b1f858005f63360d1"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd8a0a0ef895e4c3f1afd31c2a6f89d68a94baacdbe2eb9bf90ac54b997cf99b"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99c11c5d632fa2222cc5805105841f6f3c40df116368fde40fbd71f8b14ea692"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8fbf91559400fe1a98d84af36f5a66aa59c359ac3cb113b17d304ced6a4601b4"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:73f151a1e21369a84d56b91a209590c23270c847463029fdcbda710516217644"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:80531f6f4fff5a1f7e495afbc4aff5c4230b605f26d56c40ecad27a269665608"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:164068b338c52dfe44f3490c70ef7b33c0e73d441c89f599ae2d93f7dcf3e395"}, - {file = "aiohttp-3.10.7-cp311-cp311-win32.whl", hash = "sha256:a84fe27904dbb43a236532d6d841d6132200b7bb53ba73d0300b0b586ceab6cc"}, - {file = "aiohttp-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:beda1abd7b23d489a5b66a46eba5a9e0db58e4ad91d68697409eeabda343fb9d"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:68120c12c98bfc0e024ef1279be5f41327a54a5094710adc970ecc9724b91871"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e1a9b4026b6fe41adde784e308b0ad0d6a8b5cc9062f9c349125fd57149bc8a9"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85d8a1d716516ef92c769eadb020600d27223899018ef8d07c09c117001cc7d5"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87652147515031dafc1b37c9c3c42fbe9e2697af6264ec26080a6fe603cc5196"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c6140d6cbf8eebbcf1528364ce0b26d0a95788111659cfc008fba3a12fc874f"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:342600665e74eea20b3286045ebeb0aa2f9cececf2eb0acc6f6817205b112b29"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b7794b3d23451e355b4a87959943125afff8dd31d8059651c2734de12f9e7f2"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d8d12d6a192f7b9f8a335cad8634a4f081d8319b75dd42257a1a3e557848d00"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b5d8c94fd23f41007799ec657e18661f9f8c5b566a1e4fe944e3514e505a6b49"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a1fe407bec2f14a3d79ec92aa767b930857a6782589ea87ac76fd8081dea3dab"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7ed4435dcf507ef2de5b4be64276933eb19c78e5c7d00ca376fcd9a67d0139a0"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c161f9e353f291d23069a8f67180fd52c76d72d4671f4f53602ea9ac29f47d50"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:caf083bf26b1e286ab1929dbd8d8cab6230160576a0ed5e3bfb3487bb19474c2"}, - {file = "aiohttp-3.10.7-cp312-cp312-win32.whl", hash = "sha256:4296dd120e7e9728625eef1091039aff1a454c7147913d47839876c94b202226"}, - {file = "aiohttp-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:10d19997f2f8d49d53b76163b71e263bb7b23f48041d0d4050a43445a0052c35"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:582536d3d7f95a6d4d072d2326dd03eeb1549c1cc86d02c9bcec71899f4c66f2"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:365eff442a47b13e0e12c37240a6f75940ebee0b7943af43c84d5b43643fc80c"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2e0083e6f9f9cb0a0bedd694782e7fb8a54eb4de40e1743d9bb526f1c1eea88"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da5a03cbe746f182f7b61e119dde24d388cf77965fea320bc8aba61b75039d06"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b210484fccff00cafa9bd8abedea8749b6d975df8c8e21c82d92bb25403db85"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b75cfa1e5fc7c87fc5f9de7124bb039b898791bb87207d2107bed5e3509670f"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b4aa816cd3ab876f96ce8c6986648392137cbd6feddbf4189322515f34e1f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3915944c87c9bf488db4ca1ae6edca40b5bc77c4c2cf2f49b69886bc47b97db1"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd658aeaa65fb99fcc3b93882bb33cbd600501d40473488aec163a981d7b05ee"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aeea07c89a5a53463c70957feb85d4b846982c0f054b521fc44f52862e7871cf"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f8aaa0bc8e39352684982b378ba3f7e32e78a746da433aaeceb7e93d7fdf9ce3"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f25a79ac4ac0bd94cf283d3e86e6f3ec78fc39e2de6949b902c342148b7b5f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fc3538efae4e4df222a563559f8766234f49e845e8dbb2dd477eb8f3fd97242"}, - {file = "aiohttp-3.10.7-cp313-cp313-win32.whl", hash = "sha256:eea89c47ae8d592f7563f4355132fe844b5e2f8660292deacc292253bef291cd"}, - {file = "aiohttp-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:7ce1b54feaaf264e28a4474e13635d302a59aafb720b18c3c2885b8f35ce5040"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7a372f9ea521741667cec2ef4a64419448030411af2e844dfa8dbbb8074baea6"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:feff2170b23921a526f31d78c8f76bbb9cde825e78035286d8571ce0c81901ab"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa42c4e78925a438a6f7df0d9b165d29cdc0a44fc5ce838d6c293a0161a2bd9a"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ced77f4dd0c4f0107ee96f8df162b984470ac9f94ef93dd44dba62838fd85cde"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13085c0129a906b001d87dd43e247155f6c76820d98147c079b746e8a0665b17"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92100555f86b314ed840ed61d937fc30ca39ad453c9aa9020414a3cce955d9b"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77bc82d7b10f377957ba8e99bb1b13d946e9e9038fe89ba0888ad0b12e60c9c0"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6052d92b47b8cf3736b1f01ac8f83cf02f188ef7542848055a5e227db0e16cb"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:82fa5fb983922b03f2b08d1140550c68b50313305115639e19b13489c284c30c"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:0246659d9a54a23a83f11842bdd58f335a1370aa66b376eeae16b7cf29009dde"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:befc2f0794bc4bbbb1f8d0e245d32ee13331205b58f54910789e9e78d2a6fbf5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:9cd67e5c84cb75a471b2e35f3fb0da52e6d359d1794d3465a87052fb240e64b5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:af10344fb1ee195b2cd5840b61d8c8121b16d3b3baa2da5a86cf4001a7e5bd98"}, - {file = "aiohttp-3.10.7-cp38-cp38-win32.whl", hash = "sha256:81d3fc1b187656b6b465ed4ed4c9858f16ff2d9864da6225d80b8018abd7739b"}, - {file = "aiohttp-3.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:b6fb89edeadfd69df75f8cea97c3533805a9960cc56034ad296abe9b18771842"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:318824b98a2bdf84e9a21d413737a3c4f27bbad0a9ce16141488f631dbffb9b2"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63c9de949e05a5f729aecba6bf4b3d5403846caf546ea5020f8b9bf315bd8f12"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0245e1a71f3503b01d2c304529779a70277ccc0fe9847b48d437363de6e4336e"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14dbfb208ffe3388e0770fd23bf9114cc933c10bb1dba35b538f3c9d685334d8"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f6b014f2176d2774b759b8e2951af4a613385ebcc08841cb5c0ca6d5dee74ee"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcfabf9338fed009fd9e11bf496a927ea67b1ce15d34847cb0a98aa6f042b989"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171f1f5364a0ef5873480e6fddc3870ee37f1dfe216fa67507bbd4c91306f110"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87e243b1df27ff685ab08228b7a938c0530beb60ad3dea7554da1554d46c9ad4"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fee4d2246b091b7e252cd5bcdbd4362fa21c3cc6a445fef54de793731546ab24"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bfa8c8af8c92e3d6c1eff02cf5127f62c1e7564e7b0f1a9767035f81a2e6bb20"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f44f09b67a458400215d9efedb9cfb5e3256dbeb2cc2da68e4592b7b36bac0c9"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b5f8270946777d6971c27479cb6e7f54578be960928a8922cb59130e856d8484"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e8ccaa99871303323bd2cda120043039729497642da5c6f53e066b19f73d9df8"}, - {file = "aiohttp-3.10.7-cp39-cp39-win32.whl", hash = "sha256:ce7c12bfbb1579e81cdf2e7db4338f8c768da2493aa0db60a858a542d551563c"}, - {file = "aiohttp-3.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:189979c7e9d8f40236534760daf5b41d2026d5ebabdf913e771d9b6bfbc992af"}, - {file = "aiohttp-3.10.7.tar.gz", hash = "sha256:18c72a69ba20713f26fa40932cac17437b0c1d25edff2e27437a204c12275bd9"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8b3fb28a9ac8f2558760d8e637dbf27aef1e8b7f1d221e8669a1074d1a266bb2"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91aa966858593f64c8a65cdefa3d6dc8fe3c2768b159da84c1ddbbb2c01ab4ef"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63649309da83277f06a15bbdc2a54fbe75efb92caa2c25bb57ca37762789c746"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e7fabedb3fe06933f47f1538df7b3a8d78e13d7167195f51ca47ee12690373"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c070430fda1a550a1c3a4c2d7281d3b8cfc0c6715f616e40e3332201a253067"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d0a4901b27272ae54e42067bc4b9a90e619a690b4dc43ea5950eb3070afc32"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fec5fac7aea6c060f317f07494961236434928e6f4374e170ef50b3001e14581"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:172ad884bb61ad31ed7beed8be776eb17e7fb423f1c1be836d5cb357a096bf12"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d646fdd74c25bbdd4a055414f0fe32896c400f38ffbdfc78c68e62812a9e0257"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e86260b76786c28acf0b5fe31c8dca4c2add95098c709b11e8c35b424ebd4f5b"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d7cafc11d70fdd8801abfc2ff276744ae4cb39d8060b6b542c7e44e5f2cfc2"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc262c3df78c8ff6020c782d9ce02e4bcffe4900ad71c0ecdad59943cba54442"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:482c85cf3d429844396d939b22bc2a03849cb9ad33344689ad1c85697bcba33a"}, + {file = "aiohttp-3.10.9-cp310-cp310-win32.whl", hash = "sha256:aeebd3061f6f1747c011e1d0b0b5f04f9f54ad1a2ca183e687e7277bef2e0da2"}, + {file = "aiohttp-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:fa430b871220dc62572cef9c69b41e0d70fcb9d486a4a207a5de4c1f25d82593"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16e6a51d8bc96b77f04a6764b4ad03eeef43baa32014fce71e882bd71302c7e4"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8bd9125dd0cc8ebd84bff2be64b10fdba7dc6fd7be431b5eaf67723557de3a31"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dcf354661f54e6a49193d0b5653a1b011ba856e0b7a76bda2c33e4c6892f34ea"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42775de0ca04f90c10c5c46291535ec08e9bcc4756f1b48f02a0657febe89b10"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d1e4185c5d7187684d41ebb50c9aeaaaa06ca1875f4c57593071b0409d2444"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2695c61cf53a5d4345a43d689f37fc0f6d3a2dc520660aec27ec0f06288d1f9"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a3f063b41cc06e8d0b3fcbbfc9c05b7420f41287e0cd4f75ce0a1f3d80729e6"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d37f4718002863b82c6f391c8efd4d3a817da37030a29e2682a94d2716209de"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2746d8994ebca1bdc55a1e998feff4e94222da709623bb18f6e5cfec8ec01baf"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6f3c6648aa123bcd73d6f26607d59967b607b0da8ffcc27d418a4b59f4c98c7c"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:558b3d223fd631ad134d89adea876e7fdb4c93c849ef195049c063ada82b7d08"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4e6cb75f8ddd9c2132d00bc03c9716add57f4beff1263463724f6398b813e7eb"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:608cecd8d58d285bfd52dbca5b6251ca8d6ea567022c8a0eaae03c2589cd9af9"}, + {file = "aiohttp-3.10.9-cp311-cp311-win32.whl", hash = "sha256:36d4fba838be5f083f5490ddd281813b44d69685db910907636bc5dca6322316"}, + {file = "aiohttp-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:8be1a65487bdfc285bd5e9baf3208c2132ca92a9b4020e9f27df1b16fab998a9"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4fd16b30567c5b8e167923be6e027eeae0f20cf2b8a26b98a25115f28ad48ee0"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40ff5b7660f903dc587ed36ef08a88d46840182d9d4b5694e7607877ced698a1"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4edc3fd701e2b9a0d605a7b23d3de4ad23137d23fc0dbab726aa71d92f11aaaf"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e525b69ee8a92c146ae5b4da9ecd15e518df4d40003b01b454ad694a27f498b5"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5002a02c17fcfd796d20bac719981d2fca9c006aac0797eb8f430a58e9d12431"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4ceeae2fb8cabdd1b71c82bfdd39662473d3433ec95b962200e9e752fb70d0"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6e395c3d1f773cf0651cd3559e25182eb0c03a2777b53b4575d8adc1149c6e9"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbdb8def5268f3f9cd753a265756f49228a20ed14a480d151df727808b4531dd"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f82ace0ec57c94aaf5b0e118d4366cff5889097412c75aa14b4fd5fc0c44ee3e"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6ebdc3b3714afe1b134b3bbeb5f745eed3ecbcff92ab25d80e4ef299e83a5465"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ca09414003c0e96a735daa1f071f7d7ed06962ef4fa29ceb6c80d06696d900"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1298b854fd31d0567cbb916091be9d3278168064fca88e70b8468875ef9ff7e7"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60ad5b8a7452c0f5645c73d4dad7490afd6119d453d302cd5b72b678a85d6044"}, + {file = "aiohttp-3.10.9-cp312-cp312-win32.whl", hash = "sha256:1a0ee6c0d590c917f1b9629371fce5f3d3f22c317aa96fbdcce3260754d7ea21"}, + {file = "aiohttp-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:c46131c6112b534b178d4e002abe450a0a29840b61413ac25243f1291613806a"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2bd9f3eac515c16c4360a6a00c38119333901b8590fe93c3257a9b536026594d"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8cc0d13b4e3b1362d424ce3f4e8c79e1f7247a00d792823ffd640878abf28e56"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba1a599255ad6a41022e261e31bc2f6f9355a419575b391f9655c4d9e5df5ff5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:776e9f3c9b377fcf097c4a04b241b15691e6662d850168642ff976780609303c"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8debb45545ad95b58cc16c3c1cc19ad82cffcb106db12b437885dbee265f0ab5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2555e4949c8d8782f18ef20e9d39730d2656e218a6f1a21a4c4c0b56546a02e"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54dc329cd44f7f7883a9f4baaefe686e8b9662e2c6c184ea15cceee587d8d69"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e709d6ac598c5416f879bb1bae3fd751366120ac3fa235a01de763537385d036"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:17c272cfe7b07a5bb0c6ad3f234e0c336fb53f3bf17840f66bd77b5815ab3d16"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0c21c82df33b264216abffff9f8370f303dab65d8eee3767efbbd2734363f677"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9331dd34145ff105177855017920dde140b447049cd62bb589de320fd6ddd582"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ac3196952c673822ebed8871cf8802e17254fff2a2ed4835d9c045d9b88c5ec7"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c33fa6e10bb7ed262e3ff03cc69d52869514f16558db0626a7c5c61dde3c29f"}, + {file = "aiohttp-3.10.9-cp313-cp313-win32.whl", hash = "sha256:a14e4b672c257a6b94fe934ee62666bacbc8e45b7876f9dd9502d0f0fe69db16"}, + {file = "aiohttp-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:a35ed3d03910785f7d9d6f5381f0c24002b2b888b298e6f941b2fc94c5055fcd"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f392ef50e22c31fa49b5a46af7f983fa3f118f3eccb8522063bee8bfa6755f8"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d1f5c9169e26db6a61276008582d945405b8316aae2bb198220466e68114a0f5"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9d10d10ec27c0d46ddaecc3c5598c4db9ce4e6398ca872cdde0525765caa2f"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97273a52d7f89a75b11ec386f786d3da7723d7efae3034b4dda79f6f093edc1"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d271f770b52e32236d945911b2082f9318e90ff835d45224fa9e28374303f729"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7003f33f5f7da1eb02f0446b0f8d2ccf57d253ca6c2e7a5732d25889da82b517"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6e00c8a92e7663ed2be6fcc08a2997ff06ce73c8080cd0df10cc0321a3168d7"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a61df62966ce6507aafab24e124e0c3a1cfbe23c59732987fc0fd0d71daa0b88"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:60555211a006d26e1a389222e3fab8cd379f28e0fbf7472ee55b16c6c529e3a6"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d15a29424e96fad56dc2f3abed10a89c50c099f97d2416520c7a543e8fddf066"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:a19caae0d670771ea7854ca30df76f676eb47e0fd9b2ee4392d44708f272122d"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:99f9678bf0e2b1b695e8028fedac24ab6770937932eda695815d5a6618c37e04"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2914caa46054f3b5ff910468d686742ff8cff54b8a67319d75f5d5945fd0a13d"}, + {file = "aiohttp-3.10.9-cp38-cp38-win32.whl", hash = "sha256:0bc059ecbce835630e635879f5f480a742e130d9821fbe3d2f76610a6698ee25"}, + {file = "aiohttp-3.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:e883b61b75ca6efc2541fcd52a5c8ccfe288b24d97e20ac08fdf343b8ac672ea"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fcd546782d03181b0b1d20b43d612429a90a68779659ba8045114b867971ab71"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:85711eec2d875cd88c7eb40e734c4ca6d9ae477d6f26bd2b5bb4f7f60e41b156"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02d1d6610588bcd743fae827bd6f2e47e0d09b346f230824b4c6fb85c6065f9c"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3668d0c2a4d23fb136a753eba42caa2c0abbd3d9c5c87ee150a716a16c6deec1"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7c071235a47d407b0e93aa6262b49422dbe48d7d8566e1158fecc91043dd948"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac74e794e3aee92ae8f571bfeaa103a141e409863a100ab63a253b1c53b707eb"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbf94d4a0447705b7775417ca8bb8086cc5482023a6e17cdc8f96d0b1b5aba6"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb0b2d5d51f96b6cc19e6ab46a7b684be23240426ae951dcdac9639ab111b45e"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e83dfefb4f7d285c2d6a07a22268344a97d61579b3e0dce482a5be0251d672ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f0a44bb40b6aaa4fb9a5c1ee07880570ecda2065433a96ccff409c9c20c1624a"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c2b627d3c8982691b06d89d31093cee158c30629fdfebe705a91814d49b554f8"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:03690541e4cc866eef79626cfa1ef4dd729c5c1408600c8cb9e12e1137eed6ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad3675c126f2a95bde637d162f8231cff6bc0bc9fbe31bd78075f9ff7921e322"}, + {file = "aiohttp-3.10.9-cp39-cp39-win32.whl", hash = "sha256:1321658f12b6caffafdc35cfba6c882cb014af86bef4e78c125e7e794dfb927b"}, + {file = "aiohttp-3.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:9fdf5c839bf95fc67be5794c780419edb0dbef776edcfc6c2e5e2ffd5ee755fa"}, + {file = "aiohttp-3.10.9.tar.gz", hash = "sha256:143b0026a9dab07a05ad2dd9e46aa859bffdd6348ddc5967b42161168c24f857"}, ] [package.dependencies] @@ -271,13 +271,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -1329,13 +1329,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -1346,7 +1346,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -1827,13 +1827,13 @@ extended-testing = ["beautifulsoup4 (>=4.12.3,<5.0.0)", "lxml (>=4.9.3,<6.0)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -1841,6 +1841,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "loguru" @@ -2238,37 +2239,37 @@ files = [ [[package]] name = "onnx" -version = "1.16.2" +version = "1.17.0" description = "Open Neural Network Exchange" optional = false python-versions = ">=3.8" files = [ - {file = "onnx-1.16.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:ab0a1aa6b0470020ea3636afdce3e2a67f856fefe4be8c73b20371b07fcde69c"}, - {file = "onnx-1.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a449122a49534bb9c2b6f16c8493b606ef0accda6b9dbf0c513ca4b31ebe8b38"}, - {file = "onnx-1.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec6a425e59291fff430da4a884aa07a1d0cbb5dcd22cc78f6cf4ba5adb9f3367"}, - {file = "onnx-1.16.2-cp310-cp310-win32.whl", hash = "sha256:55fbaf38acd4cd8fdd0b4f36871fb596b075518d3e981acc893f2ab887d1891a"}, - {file = "onnx-1.16.2-cp310-cp310-win_amd64.whl", hash = "sha256:4e496d301756e0a22fd2bdfac24b861c7b1ddbdd9ce7677b2a252c00c4c8f2a7"}, - {file = "onnx-1.16.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:859b41574243c9bfd0abce03c15c78a1f270cc03c7f99629b984daf7adfa5003"}, - {file = "onnx-1.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39a57d196fe5d73861e70d9625674e6caf8ca13c5e9c740462cf530a07cd2e1c"}, - {file = "onnx-1.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b98aa9733bd4b781eb931d33b4078ff2837e7d68062460726d6dd011f332bd4"}, - {file = "onnx-1.16.2-cp311-cp311-win32.whl", hash = "sha256:e9f018b2e172efeea8c2473a51a825652767726374145d7cfdebdc7a27446fdd"}, - {file = "onnx-1.16.2-cp311-cp311-win_amd64.whl", hash = "sha256:e66e4512a30df8916db5cf84f47d47b3250b9ab9a98d9cffe142c98c54598ba0"}, - {file = "onnx-1.16.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:bfdb8c2eb4c92f55626376e00993db8fcc753da4b80babf28d99636af8dbae6b"}, - {file = "onnx-1.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b77a6c138f284dfc9b06fa370768aa4fd167efc49ff740e2158dd02eedde8d0"}, - {file = "onnx-1.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca12e47965e590b63f31681c8c563c75449a04178f27eac1ff64bad314314fb3"}, - {file = "onnx-1.16.2-cp312-cp312-win32.whl", hash = "sha256:324fe3551e91ffd74b43dbcf1d48e96579f4c1be2ff1224591ecd3ec6daa6139"}, - {file = "onnx-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:080b19b0bd2b5536b4c61812464fe495758d6c9cfed3fdd3f20516e616212bee"}, - {file = "onnx-1.16.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c42a5db2db36fc46d3a93ab6aeff0f11abe10a4a16a85f2aad8879a58a898ee5"}, - {file = "onnx-1.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9635437ffe51cc71343f3067bc548a068bd287ac690f65a9f6223ea9dca441bf"}, - {file = "onnx-1.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9e22be82c3447ba6d2fe851973a736a7013e97b398e8beb7a25fd2ad4df219e"}, - {file = "onnx-1.16.2-cp38-cp38-win32.whl", hash = "sha256:e16012431643c66124eba0089acdad0df71d5c9d4e6bec4721999f9eecab72b7"}, - {file = "onnx-1.16.2-cp38-cp38-win_amd64.whl", hash = "sha256:42231a467e5be2974d426b410987073ed85bee34af7b50c93ab221a8696b0cfd"}, - {file = "onnx-1.16.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:e79edba750ae06059d82d8ff8129a6488a7e692cd23cd7fe010f7ec7d6a14bad"}, - {file = "onnx-1.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d192db8501103fede9c1725861e65ed41efb65da1ce915ba969aae40073eb94"}, - {file = "onnx-1.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da01d4a3bd7a0d0ee5084f65441fc9ca38450fc18835b7f9d5da5b9e7ca8b85d"}, - {file = "onnx-1.16.2-cp39-cp39-win32.whl", hash = "sha256:0b765b09bdb01fa2338ea52483aa3d9c75e249f85446f0d9ad1dc5bd2b149082"}, - {file = "onnx-1.16.2-cp39-cp39-win_amd64.whl", hash = "sha256:bfee781a59919e797f4dae380e63a0390ec01ce5c337a1459b992aac2f49a3c2"}, - {file = "onnx-1.16.2.tar.gz", hash = "sha256:b33a282b038813c4b69e73ea65c2909768e8dd6cc10619b70632335daf094646"}, + {file = "onnx-1.17.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:38b5df0eb22012198cdcee527cc5f917f09cce1f88a69248aaca22bd78a7f023"}, + {file = "onnx-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d545335cb49d4d8c47cc803d3a805deb7ad5d9094dc67657d66e568610a36d7d"}, + {file = "onnx-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3193a3672fc60f1a18c0f4c93ac81b761bc72fd8a6c2035fa79ff5969f07713e"}, + {file = "onnx-1.17.0-cp310-cp310-win32.whl", hash = "sha256:0141c2ce806c474b667b7e4499164227ef594584da432fd5613ec17c1855e311"}, + {file = "onnx-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:dfd777d95c158437fda6b34758f0877d15b89cbe9ff45affbedc519b35345cf9"}, + {file = "onnx-1.17.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:d6fc3a03fc0129b8b6ac03f03bc894431ffd77c7d79ec023d0afd667b4d35869"}, + {file = "onnx-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f01a4b63d4e1d8ec3e2f069e7b798b2955810aa434f7361f01bc8ca08d69cce4"}, + {file = "onnx-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a183c6178be001bf398260e5ac2c927dc43e7746e8638d6c05c20e321f8c949"}, + {file = "onnx-1.17.0-cp311-cp311-win32.whl", hash = "sha256:081ec43a8b950171767d99075b6b92553901fa429d4bc5eb3ad66b36ef5dbe3a"}, + {file = "onnx-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:95c03e38671785036bb704c30cd2e150825f6ab4763df3a4f1d249da48525957"}, + {file = "onnx-1.17.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:0e906e6a83437de05f8139ea7eaf366bf287f44ae5cc44b2850a30e296421f2f"}, + {file = "onnx-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d955ba2939878a520a97614bcf2e79c1df71b29203e8ced478fa78c9a9c63c2"}, + {file = "onnx-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f3fb5cc4e2898ac5312a7dc03a65133dd2abf9a5e520e69afb880a7251ec97a"}, + {file = "onnx-1.17.0-cp312-cp312-win32.whl", hash = "sha256:317870fca3349d19325a4b7d1b5628f6de3811e9710b1e3665c68b073d0e68d7"}, + {file = "onnx-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:659b8232d627a5460d74fd3c96947ae83db6d03f035ac633e20cd69cfa029227"}, + {file = "onnx-1.17.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:23b8d56a9df492cdba0eb07b60beea027d32ff5e4e5fe271804eda635bed384f"}, + {file = "onnx-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecf2b617fd9a39b831abea2df795e17bac705992a35a98e1f0363f005c4a5247"}, + {file = "onnx-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea5023a8dcdadbb23fd0ed0179ce64c1f6b05f5b5c34f2909b4e927589ebd0e4"}, + {file = "onnx-1.17.0-cp38-cp38-win32.whl", hash = "sha256:f0e437f8f2f0c36f629e9743d28cf266312baa90be6a899f405f78f2d4cb2e1d"}, + {file = "onnx-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:e4673276b558b5b572b960b7f9ef9214dce9305673683eb289bb97a7df379a4b"}, + {file = "onnx-1.17.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:67e1c59034d89fff43b5301b6178222e54156eadd6ab4cd78ddc34b2f6274a66"}, + {file = "onnx-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e19fd064b297f7773b4c1150f9ce6213e6d7d041d7a9201c0d348041009cdcd"}, + {file = "onnx-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8167295f576055158a966161f8ef327cb491c06ede96cc23392be6022071b6ed"}, + {file = "onnx-1.17.0-cp39-cp39-win32.whl", hash = "sha256:76884fe3e0258c911c749d7d09667fb173365fd27ee66fcedaf9fa039210fd13"}, + {file = "onnx-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:5ca7a0894a86d028d509cdcf99ed1864e19bfe5727b44322c11691d834a1c546"}, + {file = "onnx-1.17.0.tar.gz", hash = "sha256:48ca1a91ff73c1d5e3ea2eef20ae5d0e709bb8a2355ed798ffc2169753013fd3"}, ] [package.dependencies] @@ -2276,7 +2277,7 @@ numpy = ">=1.20" protobuf = ">=3.20.2" [package.extras] -reference = ["google-re2", "pillow"] +reference = ["Pillow", "google-re2"] [[package]] name = "onnxruntime" @@ -3051,25 +3052,29 @@ files = [ [[package]] name = "pywin32" -version = "306" +version = "307" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, + {file = "pywin32-307-cp310-cp310-win32.whl", hash = "sha256:f8f25d893c1e1ce2d685ef6d0a481e87c6f510d0f3f117932781f412e0eba31b"}, + {file = "pywin32-307-cp310-cp310-win_amd64.whl", hash = "sha256:36e650c5e5e6b29b5d317385b02d20803ddbac5d1031e1f88d20d76676dd103d"}, + {file = "pywin32-307-cp310-cp310-win_arm64.whl", hash = "sha256:0c12d61e0274e0c62acee79e3e503c312426ddd0e8d4899c626cddc1cafe0ff4"}, + {file = "pywin32-307-cp311-cp311-win32.whl", hash = "sha256:fec5d27cc893178fab299de911b8e4d12c5954e1baf83e8a664311e56a272b75"}, + {file = "pywin32-307-cp311-cp311-win_amd64.whl", hash = "sha256:987a86971753ed7fdd52a7fb5747aba955b2c7fbbc3d8b76ec850358c1cc28c3"}, + {file = "pywin32-307-cp311-cp311-win_arm64.whl", hash = "sha256:fd436897c186a2e693cd0437386ed79f989f4d13d6f353f8787ecbb0ae719398"}, + {file = "pywin32-307-cp312-cp312-win32.whl", hash = "sha256:07649ec6b01712f36debf39fc94f3d696a46579e852f60157a729ac039df0815"}, + {file = "pywin32-307-cp312-cp312-win_amd64.whl", hash = "sha256:00d047992bb5dcf79f8b9b7c81f72e0130f9fe4b22df613f755ab1cc021d8347"}, + {file = "pywin32-307-cp312-cp312-win_arm64.whl", hash = "sha256:b53658acbfc6a8241d72cc09e9d1d666be4e6c99376bc59e26cdb6223c4554d2"}, + {file = "pywin32-307-cp313-cp313-win32.whl", hash = "sha256:ea4d56e48dc1ab2aa0a5e3c0741ad6e926529510516db7a3b6981a1ae74405e5"}, + {file = "pywin32-307-cp313-cp313-win_amd64.whl", hash = "sha256:576d09813eaf4c8168d0bfd66fb7cb3b15a61041cf41598c2db4a4583bf832d2"}, + {file = "pywin32-307-cp313-cp313-win_arm64.whl", hash = "sha256:b30c9bdbffda6a260beb2919f918daced23d32c79109412c2085cbc513338a0a"}, + {file = "pywin32-307-cp37-cp37m-win32.whl", hash = "sha256:5101472f5180c647d4525a0ed289ec723a26231550dbfd369ec19d5faf60e511"}, + {file = "pywin32-307-cp37-cp37m-win_amd64.whl", hash = "sha256:05de55a7c110478dc4b202230e98af5e0720855360d2b31a44bb4e296d795fba"}, + {file = "pywin32-307-cp38-cp38-win32.whl", hash = "sha256:13d059fb7f10792542082f5731d5d3d9645320fc38814759313e5ee97c3fac01"}, + {file = "pywin32-307-cp38-cp38-win_amd64.whl", hash = "sha256:7e0b2f93769d450a98ac7a31a087e07b126b6d571e8b4386a5762eb85325270b"}, + {file = "pywin32-307-cp39-cp39-win32.whl", hash = "sha256:55ee87f2f8c294e72ad9d4261ca423022310a6e79fb314a8ca76ab3f493854c6"}, + {file = "pywin32-307-cp39-cp39-win_amd64.whl", hash = "sha256:e9d5202922e74985b037c9ef46778335c102b74b95cec70f629453dbe7235d87"}, ] [[package]] @@ -3312,6 +3317,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.4.10" @@ -3360,6 +3379,11 @@ files = [ {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12"}, + {file = "scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, @@ -3771,13 +3795,13 @@ testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -3802,13 +3826,13 @@ telegram = ["requests"] [[package]] name = "types-pytz" -version = "2024.2.0.20240913" +version = "2024.2.0.20241003" description = "Typing stubs for pytz" optional = false python-versions = ">=3.8" files = [ - {file = "types-pytz-2024.2.0.20240913.tar.gz", hash = "sha256:4433b5df4a6fc587bbed41716d86a5ba5d832b4378e506f40d34bc9c81df2c24"}, - {file = "types_pytz-2024.2.0.20240913-py3-none-any.whl", hash = "sha256:a1eebf57ebc6e127a99d2fa2ba0a88d2b173784ef9b3defcc2004ab6855a44df"}, + {file = "types-pytz-2024.2.0.20241003.tar.gz", hash = "sha256:575dc38f385a922a212bac00a7d6d2e16e141132a3c955078f4a4fd13ed6cb44"}, + {file = "types_pytz-2024.2.0.20241003-py3-none-any.whl", hash = "sha256:3e22df1336c0c6ad1d29163c8fda82736909eb977281cb823c57f8bae07118b7"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-qdrant/pyproject.toml b/airbyte-integrations/connectors/destination-qdrant/pyproject.toml index 8f03b1f9fc6e8..2a0a395f1b6b2 100644 --- a/airbyte-integrations/connectors/destination-qdrant/pyproject.toml +++ b/airbyte-integrations/connectors/destination-qdrant/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-destination-qdrant" -version = "0.1.14" +version = "0.1.15" description = "Airbyte destination implementation for Qdrant." authors = ["Airbyte "] license = "MIT" diff --git a/docs/integrations/destinations/qdrant.md b/docs/integrations/destinations/qdrant.md index eb1183d53ffc9..8eb322dc0957c 100644 --- a/docs/integrations/destinations/qdrant.md +++ b/docs/integrations/destinations/qdrant.md @@ -73,6 +73,7 @@ You should now have all the requirements needed to configure Qdrant as a destina | Version | Date | Pull Request | Subject | | :------ | :--------- | :-------------------------------------------------------- | :----------------------------------------------------------------------- | +| 0.1.15 | 2024-10-05 | [46417](https://github.com/airbytehq/airbyte/pull/46417) | Update dependencies | | 0.1.14 | 2024-09-28 | [46137](https://github.com/airbytehq/airbyte/pull/46137) | Update dependencies | | 0.1.13 | 2024-09-21 | [45830](https://github.com/airbytehq/airbyte/pull/45830) | Update dependencies | | 0.1.12 | 2024-09-14 | [45526](https://github.com/airbytehq/airbyte/pull/45526) | Update dependencies | From c51449189ed6d7ad59b2b7bfeed4bac89e7dcfb2 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:35 +0300 Subject: [PATCH 124/379] =?UTF-8?q?=F0=9F=90=99=20source-github:=20run=20u?= =?UTF-8?q?p-to-date=20pipeline=20[2024-10-05]=20(#46415)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-github/metadata.yaml | 2 +- .../connectors/source-github/poetry.lock | 35 +++++++++++++------ .../connectors/source-github/pyproject.toml | 2 +- docs/integrations/sources/github.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-github/metadata.yaml b/airbyte-integrations/connectors/source-github/metadata.yaml index 77f0ae380e11d..f656e957b71d3 100644 --- a/airbyte-integrations/connectors/source-github/metadata.yaml +++ b/airbyte-integrations/connectors/source-github/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: ef69ef6e-aa7f-4af1-a01d-ef775033524e - dockerImageTag: 1.8.12 + dockerImageTag: 1.8.13 dockerRepository: airbyte/source-github documentationUrl: https://docs.airbyte.com/integrations/sources/github erdUrl: https://dbdocs.io/airbyteio/source-github?view=relationships diff --git a/airbyte-integrations/connectors/source-github/poetry.lock b/airbyte-integrations/connectors/source-github/poetry.lock index 5c1c572563cf8..5aad831ce28d7 100644 --- a/airbyte-integrations/connectors/source-github/poetry.lock +++ b/airbyte-integrations/connectors/source-github/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -535,13 +535,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -552,7 +552,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -727,13 +727,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -741,6 +741,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1504,6 +1505,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "responses" version = "0.23.3" diff --git a/airbyte-integrations/connectors/source-github/pyproject.toml b/airbyte-integrations/connectors/source-github/pyproject.toml index 18406afbe2eae..7013e54280e03 100644 --- a/airbyte-integrations/connectors/source-github/pyproject.toml +++ b/airbyte-integrations/connectors/source-github/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.8.12" +version = "1.8.13" name = "source-github" description = "Source implementation for GitHub." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/github.md b/docs/integrations/sources/github.md index 7d7637138e237..85817863461b3 100644 --- a/docs/integrations/sources/github.md +++ b/docs/integrations/sources/github.md @@ -225,6 +225,7 @@ Your token should have at least the `repo` scope. Depending on which streams you | Version | Date | Pull Request | Subject | |:--------|:-----------|:------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1.8.13 | 2024-10-05 | [46415](https://github.com/airbytehq/airbyte/pull/46415) | Update dependencies | | 1.8.12 | 2024-09-28 | [46117](https://github.com/airbytehq/airbyte/pull/46117) | Update dependencies | | 1.8.11 | 2024-09-21 | [45742](https://github.com/airbytehq/airbyte/pull/45742) | Update dependencies | | 1.8.10 | 2024-09-14 | [45557](https://github.com/airbytehq/airbyte/pull/45557) | Update dependencies | From a9fdac5b95a0bb35094a7d0b9fb02316225d91d0 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:37 +0300 Subject: [PATCH 125/379] =?UTF-8?q?=F0=9F=90=99=20source-qonto:=20run=20up?= =?UTF-8?q?-to-date=20pipeline=20[2024-10-05]=20(#46414)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-qonto/metadata.yaml | 2 +- .../connectors/source-qonto/poetry.lock | 35 +++++++++++++------ .../connectors/source-qonto/pyproject.toml | 2 +- docs/integrations/sources/qonto.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-qonto/metadata.yaml b/airbyte-integrations/connectors/source-qonto/metadata.yaml index ad79a1ea7b0d5..eca7766792c8c 100644 --- a/airbyte-integrations/connectors/source-qonto/metadata.yaml +++ b/airbyte-integrations/connectors/source-qonto/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: ccd3901d-edf3-4e58-900c-942d6990aa59 - dockerImageTag: 0.2.21 + dockerImageTag: 0.2.22 dockerRepository: airbyte/source-qonto githubIssueLabel: source-qonto icon: qonto.svg diff --git a/airbyte-integrations/connectors/source-qonto/poetry.lock b/airbyte-integrations/connectors/source-qonto/poetry.lock index 68a741ee8ec78..1aa5b5c1ab01e 100644 --- a/airbyte-integrations/connectors/source-qonto/poetry.lock +++ b/airbyte-integrations/connectors/source-qonto/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-qonto/pyproject.toml b/airbyte-integrations/connectors/source-qonto/pyproject.toml index fb3f68dd71731..026183f975329 100644 --- a/airbyte-integrations/connectors/source-qonto/pyproject.toml +++ b/airbyte-integrations/connectors/source-qonto/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.21" +version = "0.2.22" name = "source-qonto" description = "Source implementation for Qonto." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/qonto.md b/docs/integrations/sources/qonto.md index 2b99bcb73f8f0..57e04ca0b2b3f 100644 --- a/docs/integrations/sources/qonto.md +++ b/docs/integrations/sources/qonto.md @@ -10,6 +10,7 @@ The Airbyte Source for [Qonto](https://qonto.com) | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------------------- | +| 0.2.22 | 2024-10-05 | [46414](https://github.com/airbytehq/airbyte/pull/46414) | Update dependencies | | 0.2.21 | 2024-09-28 | [46175](https://github.com/airbytehq/airbyte/pull/46175) | Update dependencies | | 0.2.20 | 2024-09-21 | [45752](https://github.com/airbytehq/airbyte/pull/45752) | Update dependencies | | 0.2.19 | 2024-09-14 | [45521](https://github.com/airbytehq/airbyte/pull/45521) | Update dependencies | From c65e78c5e739b0cce29a2d38c067201acdcf777a Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:40 +0300 Subject: [PATCH 126/379] =?UTF-8?q?=F0=9F=90=99=20source-commcare:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46413)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-commcare/metadata.yaml | 2 +- airbyte-integrations/connectors/source-commcare/poetry.lock | 6 +++--- .../connectors/source-commcare/pyproject.toml | 2 +- docs/integrations/sources/commcare.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-commcare/metadata.yaml b/airbyte-integrations/connectors/source-commcare/metadata.yaml index 41f6d02601275..28d22ad8c7ea1 100644 --- a/airbyte-integrations/connectors/source-commcare/metadata.yaml +++ b/airbyte-integrations/connectors/source-commcare/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: f39208dc-7e1c-48b8-919b-5006360cc27f - dockerImageTag: 0.1.19 + dockerImageTag: 0.1.20 dockerRepository: airbyte/source-commcare githubIssueLabel: source-commcare icon: commcare.svg diff --git a/airbyte-integrations/connectors/source-commcare/poetry.lock b/airbyte-integrations/connectors/source-commcare/poetry.lock index fa347e12a474a..97eb7d357d6ac 100644 --- a/airbyte-integrations/connectors/source-commcare/poetry.lock +++ b/airbyte-integrations/connectors/source-commcare/poetry.lock @@ -102,13 +102,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-commcare/pyproject.toml b/airbyte-integrations/connectors/source-commcare/pyproject.toml index 1e8227444c43b..ef2fc5a003ba1 100644 --- a/airbyte-integrations/connectors/source-commcare/pyproject.toml +++ b/airbyte-integrations/connectors/source-commcare/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.19" +version = "0.1.20" name = "source-commcare" description = "Source implementation for Commcare." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/commcare.md b/docs/integrations/sources/commcare.md index 5082527109c22..54bc0c727fc9c 100644 --- a/docs/integrations/sources/commcare.md +++ b/docs/integrations/sources/commcare.md @@ -40,6 +40,7 @@ The Commcare source connector supports the following streams: | Version | Date | Pull Request | Subject | | ------- | ---------- | -------------------------------------------------------- | ------------------------- | +| 0.1.20 | 2024-10-05 | [46413](https://github.com/airbytehq/airbyte/pull/46413) | Update dependencies | | 0.1.19 | 2024-09-28 | [46163](https://github.com/airbytehq/airbyte/pull/46163) | Update dependencies | | 0.1.18 | 2024-09-21 | [45758](https://github.com/airbytehq/airbyte/pull/45758) | Update dependencies | | 0.1.17 | 2024-09-14 | [45549](https://github.com/airbytehq/airbyte/pull/45549) | Update dependencies | From ab9c35dd48dd83c17ff3e2e71f809d0ec22fd77a Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:42 +0300 Subject: [PATCH 127/379] =?UTF-8?q?=F0=9F=90=99=20source-zoom:=20run=20up-?= =?UTF-8?q?to-date=20pipeline=20[2024-10-05]=20(#46412)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-integrations/connectors/source-zoom/metadata.yaml | 2 +- airbyte-integrations/connectors/source-zoom/poetry.lock | 6 +++--- airbyte-integrations/connectors/source-zoom/pyproject.toml | 2 +- docs/integrations/sources/zoom.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-zoom/metadata.yaml b/airbyte-integrations/connectors/source-zoom/metadata.yaml index 7d605a717bd38..7798388e2494e 100644 --- a/airbyte-integrations/connectors/source-zoom/metadata.yaml +++ b/airbyte-integrations/connectors/source-zoom/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: cbfd9856-1322-44fb-bcf1-0b39b7a8e92e - dockerImageTag: 1.1.18 + dockerImageTag: 1.1.19 dockerRepository: airbyte/source-zoom documentationUrl: https://docs.airbyte.com/integrations/sources/zoom githubIssueLabel: source-zoom diff --git a/airbyte-integrations/connectors/source-zoom/poetry.lock b/airbyte-integrations/connectors/source-zoom/poetry.lock index 4cff2523295c6..5dffd44559713 100644 --- a/airbyte-integrations/connectors/source-zoom/poetry.lock +++ b/airbyte-integrations/connectors/source-zoom/poetry.lock @@ -93,13 +93,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-zoom/pyproject.toml b/airbyte-integrations/connectors/source-zoom/pyproject.toml index c2244826fa0c4..367d7e21abf5e 100644 --- a/airbyte-integrations/connectors/source-zoom/pyproject.toml +++ b/airbyte-integrations/connectors/source-zoom/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.1.18" +version = "1.1.19" name = "source-zoom" description = "Source implementation for Zoom." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/zoom.md b/docs/integrations/sources/zoom.md index 3afd8350c7e15..6727ea4838e80 100644 --- a/docs/integrations/sources/zoom.md +++ b/docs/integrations/sources/zoom.md @@ -71,6 +71,7 @@ JWT Tokens are deprecated, only Server-to-Server works now. [link to Zoom](https | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------------------------- | +| 1.1.19 | 2024-10-05 | [46412](https://github.com/airbytehq/airbyte/pull/46412) | Update dependencies | | 1.1.18 | 2024-09-28 | [46196](https://github.com/airbytehq/airbyte/pull/46196) | Update dependencies | | 1.1.17 | 2024-09-21 | [45737](https://github.com/airbytehq/airbyte/pull/45737) | Update dependencies | | 1.1.16 | 2024-09-14 | [45523](https://github.com/airbytehq/airbyte/pull/45523) | Update dependencies | From e0577ab56e995d21235020fa8e30edf912fceb75 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:45 +0300 Subject: [PATCH 128/379] =?UTF-8?q?=F0=9F=90=99=20source-adjust:=20run=20u?= =?UTF-8?q?p-to-date=20pipeline=20[2024-10-05]=20(#46411)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-adjust/metadata.yaml | 2 +- .../connectors/source-adjust/poetry.lock | 35 +++++++++++++------ .../connectors/source-adjust/pyproject.toml | 2 +- docs/integrations/sources/adjust.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-adjust/metadata.yaml b/airbyte-integrations/connectors/source-adjust/metadata.yaml index 120d3fd858a66..0edc706a5203f 100644 --- a/airbyte-integrations/connectors/source-adjust/metadata.yaml +++ b/airbyte-integrations/connectors/source-adjust/metadata.yaml @@ -5,7 +5,7 @@ data: connectorSubtype: api connectorType: source definitionId: d3b7fa46-111b-419a-998a-d7f046f6d66d - dockerImageTag: 0.1.22 + dockerImageTag: 0.1.23 dockerRepository: airbyte/source-adjust documentationUrl: https://docs.airbyte.com/integrations/sources/adjust githubIssueLabel: source-adjust diff --git a/airbyte-integrations/connectors/source-adjust/poetry.lock b/airbyte-integrations/connectors/source-adjust/poetry.lock index 116b0d191d745..b5f0e47b6b507 100644 --- a/airbyte-integrations/connectors/source-adjust/poetry.lock +++ b/airbyte-integrations/connectors/source-adjust/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-adjust/pyproject.toml b/airbyte-integrations/connectors/source-adjust/pyproject.toml index 1f14994690d36..fd19c6d064071 100644 --- a/airbyte-integrations/connectors/source-adjust/pyproject.toml +++ b/airbyte-integrations/connectors/source-adjust/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.22" +version = "0.1.23" name = "source-adjust" description = "Source implementation for Adjust." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/adjust.md b/docs/integrations/sources/adjust.md index 352bcaef271eb..ca29b30912336 100644 --- a/docs/integrations/sources/adjust.md +++ b/docs/integrations/sources/adjust.md @@ -42,6 +42,7 @@ The source connector supports the following [sync modes](https://docs.airbyte.co | Version | Date | Pull Request | Subject | |---------|------------| -------------------------------------------------------- |---------------------------------------------| +| 0.1.23 | 2024-10-05 | [46411](https://github.com/airbytehq/airbyte/pull/46411) | Update dependencies | | 0.1.22 | 2024-09-28 | [46147](https://github.com/airbytehq/airbyte/pull/46147) | Update dependencies | | 0.1.21 | 2024-09-21 | [45741](https://github.com/airbytehq/airbyte/pull/45741) | Update dependencies | | 0.1.20 | 2024-09-14 | [45511](https://github.com/airbytehq/airbyte/pull/45511) | Update dependencies | From bd3bbf53ff113668a87c8adea9c19cbb55b69b27 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:48 +0300 Subject: [PATCH 129/379] =?UTF-8?q?=F0=9F=90=99=20source-webflow:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#46410)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-webflow/metadata.yaml | 2 +- airbyte-integrations/connectors/source-webflow/poetry.lock | 6 +++--- .../connectors/source-webflow/pyproject.toml | 2 +- docs/integrations/sources/webflow.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-webflow/metadata.yaml b/airbyte-integrations/connectors/source-webflow/metadata.yaml index 2c4b4f0683ffe..ca9f32cb27a9f 100644 --- a/airbyte-integrations/connectors/source-webflow/metadata.yaml +++ b/airbyte-integrations/connectors/source-webflow/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: ef580275-d9a9-48bb-af5e-db0f5855be04 - dockerImageTag: 0.1.22 + dockerImageTag: 0.1.23 dockerRepository: airbyte/source-webflow githubIssueLabel: source-webflow icon: webflow.svg diff --git a/airbyte-integrations/connectors/source-webflow/poetry.lock b/airbyte-integrations/connectors/source-webflow/poetry.lock index 45c71fcab3eb8..ce10b819fdf7e 100644 --- a/airbyte-integrations/connectors/source-webflow/poetry.lock +++ b/airbyte-integrations/connectors/source-webflow/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-webflow/pyproject.toml b/airbyte-integrations/connectors/source-webflow/pyproject.toml index bed4250d72758..88a7941deafb7 100644 --- a/airbyte-integrations/connectors/source-webflow/pyproject.toml +++ b/airbyte-integrations/connectors/source-webflow/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.22" +version = "0.1.23" name = "source-webflow" description = "Source implementation for Webflow." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/webflow.md b/docs/integrations/sources/webflow.md index f4d693502606e..f9840bc280eb1 100644 --- a/docs/integrations/sources/webflow.md +++ b/docs/integrations/sources/webflow.md @@ -41,6 +41,7 @@ If you are interested in learning more about the Webflow API and implementation | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------------------------------------------- | +| 0.1.23 | 2024-10-05 | [46410](https://github.com/airbytehq/airbyte/pull/46410) | Update dependencies | | 0.1.22 | 2024-09-28 | [46194](https://github.com/airbytehq/airbyte/pull/46194) | Update dependencies | | 0.1.21 | 2024-09-21 | [45729](https://github.com/airbytehq/airbyte/pull/45729) | Update dependencies | | 0.1.20 | 2024-09-14 | [45296](https://github.com/airbytehq/airbyte/pull/45296) | Update dependencies | From ef70216aa5d936b7f531de038259214d40a0008e Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:50 +0300 Subject: [PATCH 130/379] =?UTF-8?q?=F0=9F=90=99=20source-square:=20run=20u?= =?UTF-8?q?p-to-date=20pipeline=20[2024-10-05]=20(#46409)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-square/metadata.yaml | 2 +- .../connectors/source-square/poetry.lock | 35 +++++++++++++------ .../connectors/source-square/pyproject.toml | 2 +- docs/integrations/sources/square.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-square/metadata.yaml b/airbyte-integrations/connectors/source-square/metadata.yaml index fd3277177981f..fb4b4e59c1a51 100644 --- a/airbyte-integrations/connectors/source-square/metadata.yaml +++ b/airbyte-integrations/connectors/source-square/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 77225a51-cd15-4a13-af02-65816bd0ecf4 - dockerImageTag: 1.6.22 + dockerImageTag: 1.6.23 dockerRepository: airbyte/source-square documentationUrl: https://docs.airbyte.com/integrations/sources/square githubIssueLabel: source-square diff --git a/airbyte-integrations/connectors/source-square/poetry.lock b/airbyte-integrations/connectors/source-square/poetry.lock index b88f7448d5a8f..2f6707b3500bf 100644 --- a/airbyte-integrations/connectors/source-square/poetry.lock +++ b/airbyte-integrations/connectors/source-square/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -497,13 +497,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -514,7 +514,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -678,13 +678,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -692,6 +692,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1265,6 +1266,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-square/pyproject.toml b/airbyte-integrations/connectors/source-square/pyproject.toml index a5b96793f46e7..5a2cfbb18bb46 100644 --- a/airbyte-integrations/connectors/source-square/pyproject.toml +++ b/airbyte-integrations/connectors/source-square/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.6.22" +version = "1.6.23" name = "source-square" description = "Source implementation for Square." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/square.md b/docs/integrations/sources/square.md index f6939e28d7595..4e2f0e3c9cff1 100644 --- a/docs/integrations/sources/square.md +++ b/docs/integrations/sources/square.md @@ -103,6 +103,7 @@ Exponential [Backoff](https://developer.squareup.com/forums/t/current-square-api | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------ | +| 1.6.23 | 2024-10-05 | [46409](https://github.com/airbytehq/airbyte/pull/46409) | Update dependencies | | 1.6.22 | 2024-09-28 | [46162](https://github.com/airbytehq/airbyte/pull/46162) | Update dependencies | | 1.6.21 | 2024-09-21 | [45787](https://github.com/airbytehq/airbyte/pull/45787) | Update dependencies | | 1.6.20 | 2024-09-14 | [45550](https://github.com/airbytehq/airbyte/pull/45550) | Update dependencies | From dce499992205c552dbba97837f88e66d4932b836 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:52 +0300 Subject: [PATCH 131/379] =?UTF-8?q?=F0=9F=90=99=20source-zendesk-support:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46408)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-zendesk-support/metadata.yaml | 2 +- .../source-zendesk-support/poetry.lock | 203 ++++++++++-------- .../source-zendesk-support/pyproject.toml | 2 +- docs/integrations/sources/zendesk-support.md | 1 + 4 files changed, 121 insertions(+), 87 deletions(-) diff --git a/airbyte-integrations/connectors/source-zendesk-support/metadata.yaml b/airbyte-integrations/connectors/source-zendesk-support/metadata.yaml index 0d33e305a1efb..16898c314be9a 100644 --- a/airbyte-integrations/connectors/source-zendesk-support/metadata.yaml +++ b/airbyte-integrations/connectors/source-zendesk-support/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 79c1aa37-dae3-42ae-b333-d1c105477715 - dockerImageTag: 4.2.2 + dockerImageTag: 4.2.3 dockerRepository: airbyte/source-zendesk-support documentationUrl: https://docs.airbyte.com/integrations/sources/zendesk-support githubIssueLabel: source-zendesk-support diff --git a/airbyte-integrations/connectors/source-zendesk-support/poetry.lock b/airbyte-integrations/connectors/source-zendesk-support/poetry.lock index ba48c72d0a814..f47831f56f808 100644 --- a/airbyte-integrations/connectors/source-zendesk-support/poetry.lock +++ b/airbyte-integrations/connectors/source-zendesk-support/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.7.5" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.7.5-py3-none-any.whl", hash = "sha256:57f1ba57f0ffdff384a2b1095143b527ab7320a4b2d9732faa2ea9b4b471e756"}, - {file = "airbyte_cdk-5.7.5.tar.gz", hash = "sha256:3a549fe4c987b900a08d8392a2910ab92c387406bb26ead2c48dc34e605ddb3b"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -26,7 +26,7 @@ jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" nltk = "3.8.1" orjson = ">=3.10.7,<4.0.0" -pandas = "2.2.0" +pandas = "2.2.2" pendulum = "<3.0.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" @@ -141,13 +141,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -534,13 +534,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -551,7 +551,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -726,13 +726,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -740,6 +740,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -837,47 +838,64 @@ twitter = ["twython"] [[package]] name = "numpy" -version = "1.26.4" +version = "2.1.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, ] [[package]] @@ -959,46 +977,46 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1023,6 +1041,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -1621,6 +1640,20 @@ six = "*" fixture = ["fixtures"] test = ["fixtures", "mock", "purl", "pytest", "sphinx", "testrepository (>=0.0.18)", "testtools"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "serpyco-rs" version = "1.11.0" diff --git a/airbyte-integrations/connectors/source-zendesk-support/pyproject.toml b/airbyte-integrations/connectors/source-zendesk-support/pyproject.toml index 9dcf7139cc300..3013356294fdf 100644 --- a/airbyte-integrations/connectors/source-zendesk-support/pyproject.toml +++ b/airbyte-integrations/connectors/source-zendesk-support/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "4.2.2" +version = "4.2.3" name = "source-zendesk-support" description = "Source implementation for Zendesk Support." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/zendesk-support.md b/docs/integrations/sources/zendesk-support.md index 1150bd69674f8..e20c9044f91ed 100644 --- a/docs/integrations/sources/zendesk-support.md +++ b/docs/integrations/sources/zendesk-support.md @@ -184,6 +184,7 @@ The Zendesk connector ideally should not run into Zendesk API limitations under | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 4.2.3 | 2024-10-05 | [46408](https://github.com/airbytehq/airbyte/pull/46408) | Update dependencies | | 4.2.2 | 2024-09-28 | [45784](https://github.com/airbytehq/airbyte/pull/45784) | Update dependencies | | 4.2.1 | 2024-09-14 | [45561](https://github.com/airbytehq/airbyte/pull/45561) | Update dependencies | | 4.2.0 | 2024-09-10 | [44610](https://github.com/airbytehq/airbyte/pull/44610) | Add `Automations` and `Triggers` stream | From f017b491c7c3acbae6b453de9d3a0cdc41dca30c Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:55 +0300 Subject: [PATCH 132/379] =?UTF-8?q?=F0=9F=90=99=20source-n8n:=20run=20up-t?= =?UTF-8?q?o-date=20pipeline=20[2024-10-05]=20(#46407)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-n8n/metadata.yaml | 2 +- .../connectors/source-n8n/poetry.lock | 35 +++++++++++++------ .../connectors/source-n8n/pyproject.toml | 2 +- docs/integrations/sources/n8n.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-n8n/metadata.yaml b/airbyte-integrations/connectors/source-n8n/metadata.yaml index eb3e5860be4bd..9334afa658772 100644 --- a/airbyte-integrations/connectors/source-n8n/metadata.yaml +++ b/airbyte-integrations/connectors/source-n8n/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: 4a961f66-5e99-4430-8320-a73afe52f7a2 - dockerImageTag: 0.1.20 + dockerImageTag: 0.1.21 dockerRepository: airbyte/source-n8n githubIssueLabel: source-n8n icon: n8n.svg diff --git a/airbyte-integrations/connectors/source-n8n/poetry.lock b/airbyte-integrations/connectors/source-n8n/poetry.lock index 116b0d191d745..b5f0e47b6b507 100644 --- a/airbyte-integrations/connectors/source-n8n/poetry.lock +++ b/airbyte-integrations/connectors/source-n8n/poetry.lock @@ -118,13 +118,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -483,13 +483,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -500,7 +500,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -664,13 +664,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -678,6 +678,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1251,6 +1252,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-n8n/pyproject.toml b/airbyte-integrations/connectors/source-n8n/pyproject.toml index fdca3bb77afcf..cd02a6de54bcb 100644 --- a/airbyte-integrations/connectors/source-n8n/pyproject.toml +++ b/airbyte-integrations/connectors/source-n8n/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.20" +version = "0.1.21" name = "source-n8n" description = "Source implementation for N8n." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/n8n.md b/docs/integrations/sources/n8n.md index d385b70f0975a..8ebf469732b10 100644 --- a/docs/integrations/sources/n8n.md +++ b/docs/integrations/sources/n8n.md @@ -32,6 +32,7 @@ You need a n8n instance or use cloud version | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------------------- | +| 0.1.21 | 2024-10-05 | [46407](https://github.com/airbytehq/airbyte/pull/46407) | Update dependencies | | 0.1.20 | 2024-09-28 | [46125](https://github.com/airbytehq/airbyte/pull/46125) | Update dependencies | | 0.1.19 | 2024-09-21 | [45745](https://github.com/airbytehq/airbyte/pull/45745) | Update dependencies | | 0.1.18 | 2024-09-14 | [45507](https://github.com/airbytehq/airbyte/pull/45507) | Update dependencies | From fc95787bc936620e1fc593d2326fa59b0094d882 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:21:57 +0300 Subject: [PATCH 133/379] =?UTF-8?q?=F0=9F=90=99=20source-linnworks:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46406)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-linnworks/metadata.yaml | 2 +- .../connectors/source-linnworks/poetry.lock | 6 +++--- .../connectors/source-linnworks/pyproject.toml | 2 +- docs/integrations/sources/linnworks.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-linnworks/metadata.yaml b/airbyte-integrations/connectors/source-linnworks/metadata.yaml index f6a08629840e0..88b604fdf0c4d 100644 --- a/airbyte-integrations/connectors/source-linnworks/metadata.yaml +++ b/airbyte-integrations/connectors/source-linnworks/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: 7b86879e-26c5-4ef6-a5ce-2be5c7b46d1e - dockerImageTag: 0.1.28 + dockerImageTag: 0.1.29 dockerRepository: airbyte/source-linnworks documentationUrl: https://docs.airbyte.com/integrations/sources/linnworks githubIssueLabel: source-linnworks diff --git a/airbyte-integrations/connectors/source-linnworks/poetry.lock b/airbyte-integrations/connectors/source-linnworks/poetry.lock index 0e1fd547fc4e9..38ec8c2433d04 100644 --- a/airbyte-integrations/connectors/source-linnworks/poetry.lock +++ b/airbyte-integrations/connectors/source-linnworks/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-linnworks/pyproject.toml b/airbyte-integrations/connectors/source-linnworks/pyproject.toml index d62d3227cc905..699f461e6ac71 100644 --- a/airbyte-integrations/connectors/source-linnworks/pyproject.toml +++ b/airbyte-integrations/connectors/source-linnworks/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.28" +version = "0.1.29" name = "source-linnworks" description = "Source implementation for Linnworks." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/linnworks.md b/docs/integrations/sources/linnworks.md index 338ef84c03ef6..d65793ca09b18 100644 --- a/docs/integrations/sources/linnworks.md +++ b/docs/integrations/sources/linnworks.md @@ -74,6 +74,7 @@ Rate limits for the Linnworks API vary across endpoints. Use the [links in the * | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------------------------------------------------------------- | +| 0.1.29 | 2024-10-05 | [46406](https://github.com/airbytehq/airbyte/pull/46406) | Update dependencies | | 0.1.28 | 2024-09-28 | [46124](https://github.com/airbytehq/airbyte/pull/46124) | Update dependencies | | 0.1.27 | 2024-09-21 | [45730](https://github.com/airbytehq/airbyte/pull/45730) | Update dependencies | | 0.1.26 | 2024-09-14 | [45571](https://github.com/airbytehq/airbyte/pull/45571) | Update dependencies | From 2b482e065d930a3c6affde0ea5005bc3fedb3d82 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:00 +0300 Subject: [PATCH 134/379] =?UTF-8?q?=F0=9F=90=99=20source-outreach:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46405)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-outreach/metadata.yaml | 2 +- .../connectors/source-outreach/poetry.lock | 43 +++++++++++++------ .../connectors/source-outreach/pyproject.toml | 2 +- docs/integrations/sources/outreach.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-outreach/metadata.yaml b/airbyte-integrations/connectors/source-outreach/metadata.yaml index 03c22ed1b7bf0..83f3e57319f59 100644 --- a/airbyte-integrations/connectors/source-outreach/metadata.yaml +++ b/airbyte-integrations/connectors/source-outreach/metadata.yaml @@ -26,7 +26,7 @@ data: connectorSubtype: api connectorType: source definitionId: 3490c201-5d95-4783-b600-eaf07a4c7787 - dockerImageTag: 1.0.19 + dockerImageTag: 1.0.20 dockerRepository: airbyte/source-outreach githubIssueLabel: source-outreach icon: outreach.svg diff --git a/airbyte-integrations/connectors/source-outreach/poetry.lock b/airbyte-integrations/connectors/source-outreach/poetry.lock index 91a8bda9c2540..392338d0d53e4 100644 --- a/airbyte-integrations/connectors/source-outreach/poetry.lock +++ b/airbyte-integrations/connectors/source-outreach/poetry.lock @@ -108,13 +108,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -473,13 +473,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -490,7 +490,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -654,13 +654,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -668,6 +668,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1228,6 +1229,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1287,13 +1302,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-outreach/pyproject.toml b/airbyte-integrations/connectors/source-outreach/pyproject.toml index 1afb8bf74ebf8..da66954b2952a 100644 --- a/airbyte-integrations/connectors/source-outreach/pyproject.toml +++ b/airbyte-integrations/connectors/source-outreach/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.0.19" +version = "1.0.20" name = "source-outreach" description = "Source implementation for outreach." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/outreach.md b/docs/integrations/sources/outreach.md index 91a3287d3d5da..80574b4decddd 100644 --- a/docs/integrations/sources/outreach.md +++ b/docs/integrations/sources/outreach.md @@ -56,6 +56,7 @@ List of available streams: | Version | Date | Pull Request | Subject | | :------ |:-----------| :----- | :------ | +| 1.0.20 | 2024-10-05 | [46405](https://github.com/airbytehq/airbyte/pull/46405) | Update dependencies | | 1.0.19 | 2024-09-28 | [46118](https://github.com/airbytehq/airbyte/pull/46118) | Update dependencies | | 1.0.18 | 2024-09-21 | [45749](https://github.com/airbytehq/airbyte/pull/45749) | Update dependencies | | 1.0.17 | 2024-09-14 | [45578](https://github.com/airbytehq/airbyte/pull/45578) | Update dependencies | From 2016b0b8b586a9b790faa085e38b279829f24f4a Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:03 +0300 Subject: [PATCH 135/379] =?UTF-8?q?=F0=9F=90=99=20source-pocket:=20run=20u?= =?UTF-8?q?p-to-date=20pipeline=20[2024-10-05]=20(#46404)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-integrations/connectors/source-pocket/metadata.yaml | 2 +- airbyte-integrations/connectors/source-pocket/poetry.lock | 6 +++--- .../connectors/source-pocket/pyproject.toml | 2 +- docs/integrations/sources/pocket.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-pocket/metadata.yaml b/airbyte-integrations/connectors/source-pocket/metadata.yaml index ead0c44828cee..ad285dd3d95fd 100644 --- a/airbyte-integrations/connectors/source-pocket/metadata.yaml +++ b/airbyte-integrations/connectors/source-pocket/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: b0dd65f1-081f-4731-9c51-38e9e6aa0ebf - dockerImageTag: 0.1.19 + dockerImageTag: 0.1.20 dockerRepository: airbyte/source-pocket documentationUrl: https://docs.airbyte.com/integrations/sources/pocket githubIssueLabel: source-pocket diff --git a/airbyte-integrations/connectors/source-pocket/poetry.lock b/airbyte-integrations/connectors/source-pocket/poetry.lock index 45c71fcab3eb8..ce10b819fdf7e 100644 --- a/airbyte-integrations/connectors/source-pocket/poetry.lock +++ b/airbyte-integrations/connectors/source-pocket/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-pocket/pyproject.toml b/airbyte-integrations/connectors/source-pocket/pyproject.toml index c1f248d1a0cf4..5a5a78537c8ea 100644 --- a/airbyte-integrations/connectors/source-pocket/pyproject.toml +++ b/airbyte-integrations/connectors/source-pocket/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.19" +version = "0.1.20" name = "source-pocket" description = "Source implementation for Pocket." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/pocket.md b/docs/integrations/sources/pocket.md index 6519b57796326..a34de2c20c254 100644 --- a/docs/integrations/sources/pocket.md +++ b/docs/integrations/sources/pocket.md @@ -57,6 +57,7 @@ curl --insecure -X POST -H 'Content-Type: application/json' -H 'X-Accept: applic | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.1.20 | 2024-10-05 | [46404](https://github.com/airbytehq/airbyte/pull/46404) | Update dependencies | | 0.1.19 | 2024-09-28 | [46138](https://github.com/airbytehq/airbyte/pull/46138) | Update dependencies | | 0.1.18 | 2024-09-21 | [45736](https://github.com/airbytehq/airbyte/pull/45736) | Update dependencies | | 0.1.17 | 2024-09-14 | [45487](https://github.com/airbytehq/airbyte/pull/45487) | Update dependencies | From 25094afb98a9afd2e2762ecc2cf55d9c5f1b3fc6 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:06 +0300 Subject: [PATCH 136/379] =?UTF-8?q?=F0=9F=90=99=20source-outbrain-amplify:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46403)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-outbrain-amplify/metadata.yaml | 2 +- .../connectors/source-outbrain-amplify/poetry.lock | 14 +++++++------- .../source-outbrain-amplify/pyproject.toml | 2 +- docs/integrations/sources/outbrain-amplify.md | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/airbyte-integrations/connectors/source-outbrain-amplify/metadata.yaml b/airbyte-integrations/connectors/source-outbrain-amplify/metadata.yaml index f16f2fc313e50..823b7bcfa5566 100644 --- a/airbyte-integrations/connectors/source-outbrain-amplify/metadata.yaml +++ b/airbyte-integrations/connectors/source-outbrain-amplify/metadata.yaml @@ -16,7 +16,7 @@ data: type: GSM connectorType: source definitionId: 4fe962d0-a70e-4516-aa99-c551abf46352 - dockerImageTag: 0.1.16 + dockerImageTag: 0.1.17 dockerRepository: airbyte/source-outbrain-amplify documentationUrl: https://docs.airbyte.com/integrations/sources/outbrain-amplify githubIssueLabel: source-outbrain-amplify diff --git a/airbyte-integrations/connectors/source-outbrain-amplify/poetry.lock b/airbyte-integrations/connectors/source-outbrain-amplify/poetry.lock index e1705aa785bbf..af436a35824d9 100644 --- a/airbyte-integrations/connectors/source-outbrain-amplify/poetry.lock +++ b/airbyte-integrations/connectors/source-outbrain-amplify/poetry.lock @@ -82,13 +82,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -890,13 +890,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-outbrain-amplify/pyproject.toml b/airbyte-integrations/connectors/source-outbrain-amplify/pyproject.toml index ab0293a1c1219..6b65adf58a3e3 100644 --- a/airbyte-integrations/connectors/source-outbrain-amplify/pyproject.toml +++ b/airbyte-integrations/connectors/source-outbrain-amplify/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.16" +version = "0.1.17" name = "source-outbrain-amplify" description = "Source implementation for outbrain amplify." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/outbrain-amplify.md b/docs/integrations/sources/outbrain-amplify.md index 62aeed9814f0b..d2b66c7841dcd 100644 --- a/docs/integrations/sources/outbrain-amplify.md +++ b/docs/integrations/sources/outbrain-amplify.md @@ -65,6 +65,7 @@ Specify credentials and a start date. | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------- | +| 0.1.17 | 2024-10-05 | [46403](https://github.com/airbytehq/airbyte/pull/46403) | Update dependencies | | 0.1.16 | 2024-09-28 | [46195](https://github.com/airbytehq/airbyte/pull/46195) | Update dependencies | | 0.1.15 | 2024-09-21 | [45832](https://github.com/airbytehq/airbyte/pull/45832) | Update dependencies | | 0.1.14 | 2024-09-14 | [45502](https://github.com/airbytehq/airbyte/pull/45502) | Update dependencies | From 861a7b8b61112122b86cf9c5d26fb5b139da1355 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:08 +0300 Subject: [PATCH 137/379] =?UTF-8?q?=F0=9F=90=99=20destination-astra:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46402)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-astra/metadata.yaml | 2 +- .../connectors/destination-astra/poetry.lock | 244 ++++++++++-------- .../destination-astra/pyproject.toml | 2 +- docs/integrations/destinations/astra.md | 1 + 4 files changed, 135 insertions(+), 114 deletions(-) diff --git a/airbyte-integrations/connectors/destination-astra/metadata.yaml b/airbyte-integrations/connectors/destination-astra/metadata.yaml index 78b51eba41a8e..d2c7de18c7e66 100644 --- a/airbyte-integrations/connectors/destination-astra/metadata.yaml +++ b/airbyte-integrations/connectors/destination-astra/metadata.yaml @@ -15,7 +15,7 @@ data: connectorSubtype: database connectorType: destination definitionId: 042ce96f-1158-4662-9543-e2ff015be97a - dockerImageTag: 0.1.26 + dockerImageTag: 0.1.27 dockerRepository: airbyte/destination-astra githubIssueLabel: destination-astra icon: astra.svg diff --git a/airbyte-integrations/connectors/destination-astra/poetry.lock b/airbyte-integrations/connectors/destination-astra/poetry.lock index b79237377fa4e..b7d99f380838f 100644 --- a/airbyte-integrations/connectors/destination-astra/poetry.lock +++ b/airbyte-integrations/connectors/destination-astra/poetry.lock @@ -2,113 +2,113 @@ [[package]] name = "aiohappyeyeballs" -version = "2.4.2" +version = "2.4.3" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "aiohappyeyeballs-2.4.2-py3-none-any.whl", hash = "sha256:8522691d9a154ba1145b157d6d5c15e5c692527ce6a53c5e5f9876977f6dab2f"}, - {file = "aiohappyeyeballs-2.4.2.tar.gz", hash = "sha256:4ca893e6c5c1f5bf3888b04cb5a3bee24995398efef6e0b9f747b5e89d84fd74"}, + {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, + {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, ] [[package]] name = "aiohttp" -version = "3.10.7" +version = "3.10.9" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df23cb35bec54b73fba371c7c904994433651458acf8bfb7c84464fef5834c0a"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33a6d023b207ad8227e607814c0020b42c53e01a66004fc0f2555e1a4941282"}, - {file = "aiohttp-3.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d23df9f01c8945d03cffcdd9ba9bfd88aa21ac567a39d0ac4d0c80499ed0d23"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ddf2c8c9ec6bb3f5c057e5c95605adb8e3f1e2d999e8801736f448aff29280e"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d09e40e2ae6723af487ffde019055d0b6ce4eae0749fcfe9de624b61f1af6ec"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc1f4e0f4b1ae9289b4d0cc3bf5d6d55176c38ef1d41484550f3f9a0a78bedae"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636e3efb0bb024817cefa1ef86d678d1a73eb210ae162aff4234214060011ff5"}, - {file = "aiohttp-3.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bab2544f09cd1db154c105e03b1c941032fd7237da5da184595771999ca90daa"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:431852e77cd72f60a0278f8cf557c8e568cd856f755a4b6c5232c7d8c6343d2e"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6bae913cbb183cd34863905088ef26a17c75332bd6bdd451ee8bf158c987cf19"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:278cd430ba93a157ad1faf490fdd6051801085ffa31a27762133472555e56888"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e083e29b6db8e34a507cd678f89eab3ae5f307486ea6010c6473436d3769628d"}, - {file = "aiohttp-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:150deb28d5302cfec89fc31ea4bce774df06f5c03d95519f7588ca6517a472d7"}, - {file = "aiohttp-3.10.7-cp310-cp310-win32.whl", hash = "sha256:e19337d6552af197ebb8c886daea0b938ae34eff776c1fa914ad433f6db3970f"}, - {file = "aiohttp-3.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:bff7ef30cb6fc186ea6dda9e19d6105b1c213e3a3f759b5a23c271c778027260"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1378164474a3866f7684a95efede1bee4016cd104bc10bf885e492c4459b715a"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:87d0e52b2905dbc1aeffcbf0611fa82e27874764332c11b984293a4b91cc8e9f"}, - {file = "aiohttp-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2783754bfcee0b13b8e55932b418cf8984c17099fd1b37341d4696447d0c328"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d26881d98274ef0dbd4f069f383e5e90eb6e42e957289db14c47186386832ce"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e152296b2c50417445eacdb2353d3c10e702f6593aa774277510fb7761304302"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf1cd9bfd598899396bdb8a4dc5234144a77e482e7489972b7956cf66e272872"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871c2bf68ecc55056e5e3b0ae5929a1149f41c4255bbf99b1f858005f63360d1"}, - {file = "aiohttp-3.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd8a0a0ef895e4c3f1afd31c2a6f89d68a94baacdbe2eb9bf90ac54b997cf99b"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99c11c5d632fa2222cc5805105841f6f3c40df116368fde40fbd71f8b14ea692"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8fbf91559400fe1a98d84af36f5a66aa59c359ac3cb113b17d304ced6a4601b4"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:73f151a1e21369a84d56b91a209590c23270c847463029fdcbda710516217644"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:80531f6f4fff5a1f7e495afbc4aff5c4230b605f26d56c40ecad27a269665608"}, - {file = "aiohttp-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:164068b338c52dfe44f3490c70ef7b33c0e73d441c89f599ae2d93f7dcf3e395"}, - {file = "aiohttp-3.10.7-cp311-cp311-win32.whl", hash = "sha256:a84fe27904dbb43a236532d6d841d6132200b7bb53ba73d0300b0b586ceab6cc"}, - {file = "aiohttp-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:beda1abd7b23d489a5b66a46eba5a9e0db58e4ad91d68697409eeabda343fb9d"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:68120c12c98bfc0e024ef1279be5f41327a54a5094710adc970ecc9724b91871"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e1a9b4026b6fe41adde784e308b0ad0d6a8b5cc9062f9c349125fd57149bc8a9"}, - {file = "aiohttp-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85d8a1d716516ef92c769eadb020600d27223899018ef8d07c09c117001cc7d5"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87652147515031dafc1b37c9c3c42fbe9e2697af6264ec26080a6fe603cc5196"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c6140d6cbf8eebbcf1528364ce0b26d0a95788111659cfc008fba3a12fc874f"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:342600665e74eea20b3286045ebeb0aa2f9cececf2eb0acc6f6817205b112b29"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b7794b3d23451e355b4a87959943125afff8dd31d8059651c2734de12f9e7f2"}, - {file = "aiohttp-3.10.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d8d12d6a192f7b9f8a335cad8634a4f081d8319b75dd42257a1a3e557848d00"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b5d8c94fd23f41007799ec657e18661f9f8c5b566a1e4fe944e3514e505a6b49"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a1fe407bec2f14a3d79ec92aa767b930857a6782589ea87ac76fd8081dea3dab"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7ed4435dcf507ef2de5b4be64276933eb19c78e5c7d00ca376fcd9a67d0139a0"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c161f9e353f291d23069a8f67180fd52c76d72d4671f4f53602ea9ac29f47d50"}, - {file = "aiohttp-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:caf083bf26b1e286ab1929dbd8d8cab6230160576a0ed5e3bfb3487bb19474c2"}, - {file = "aiohttp-3.10.7-cp312-cp312-win32.whl", hash = "sha256:4296dd120e7e9728625eef1091039aff1a454c7147913d47839876c94b202226"}, - {file = "aiohttp-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:10d19997f2f8d49d53b76163b71e263bb7b23f48041d0d4050a43445a0052c35"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:582536d3d7f95a6d4d072d2326dd03eeb1549c1cc86d02c9bcec71899f4c66f2"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:365eff442a47b13e0e12c37240a6f75940ebee0b7943af43c84d5b43643fc80c"}, - {file = "aiohttp-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2e0083e6f9f9cb0a0bedd694782e7fb8a54eb4de40e1743d9bb526f1c1eea88"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da5a03cbe746f182f7b61e119dde24d388cf77965fea320bc8aba61b75039d06"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b210484fccff00cafa9bd8abedea8749b6d975df8c8e21c82d92bb25403db85"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b75cfa1e5fc7c87fc5f9de7124bb039b898791bb87207d2107bed5e3509670f"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b4aa816cd3ab876f96ce8c6986648392137cbd6feddbf4189322515f34e1f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3915944c87c9bf488db4ca1ae6edca40b5bc77c4c2cf2f49b69886bc47b97db1"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd658aeaa65fb99fcc3b93882bb33cbd600501d40473488aec163a981d7b05ee"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aeea07c89a5a53463c70957feb85d4b846982c0f054b521fc44f52862e7871cf"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f8aaa0bc8e39352684982b378ba3f7e32e78a746da433aaeceb7e93d7fdf9ce3"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f25a79ac4ac0bd94cf283d3e86e6f3ec78fc39e2de6949b902c342148b7b5f6"}, - {file = "aiohttp-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fc3538efae4e4df222a563559f8766234f49e845e8dbb2dd477eb8f3fd97242"}, - {file = "aiohttp-3.10.7-cp313-cp313-win32.whl", hash = "sha256:eea89c47ae8d592f7563f4355132fe844b5e2f8660292deacc292253bef291cd"}, - {file = "aiohttp-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:7ce1b54feaaf264e28a4474e13635d302a59aafb720b18c3c2885b8f35ce5040"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7a372f9ea521741667cec2ef4a64419448030411af2e844dfa8dbbb8074baea6"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:feff2170b23921a526f31d78c8f76bbb9cde825e78035286d8571ce0c81901ab"}, - {file = "aiohttp-3.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa42c4e78925a438a6f7df0d9b165d29cdc0a44fc5ce838d6c293a0161a2bd9a"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ced77f4dd0c4f0107ee96f8df162b984470ac9f94ef93dd44dba62838fd85cde"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13085c0129a906b001d87dd43e247155f6c76820d98147c079b746e8a0665b17"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92100555f86b314ed840ed61d937fc30ca39ad453c9aa9020414a3cce955d9b"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77bc82d7b10f377957ba8e99bb1b13d946e9e9038fe89ba0888ad0b12e60c9c0"}, - {file = "aiohttp-3.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6052d92b47b8cf3736b1f01ac8f83cf02f188ef7542848055a5e227db0e16cb"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:82fa5fb983922b03f2b08d1140550c68b50313305115639e19b13489c284c30c"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:0246659d9a54a23a83f11842bdd58f335a1370aa66b376eeae16b7cf29009dde"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:befc2f0794bc4bbbb1f8d0e245d32ee13331205b58f54910789e9e78d2a6fbf5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:9cd67e5c84cb75a471b2e35f3fb0da52e6d359d1794d3465a87052fb240e64b5"}, - {file = "aiohttp-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:af10344fb1ee195b2cd5840b61d8c8121b16d3b3baa2da5a86cf4001a7e5bd98"}, - {file = "aiohttp-3.10.7-cp38-cp38-win32.whl", hash = "sha256:81d3fc1b187656b6b465ed4ed4c9858f16ff2d9864da6225d80b8018abd7739b"}, - {file = "aiohttp-3.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:b6fb89edeadfd69df75f8cea97c3533805a9960cc56034ad296abe9b18771842"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:318824b98a2bdf84e9a21d413737a3c4f27bbad0a9ce16141488f631dbffb9b2"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63c9de949e05a5f729aecba6bf4b3d5403846caf546ea5020f8b9bf315bd8f12"}, - {file = "aiohttp-3.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0245e1a71f3503b01d2c304529779a70277ccc0fe9847b48d437363de6e4336e"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14dbfb208ffe3388e0770fd23bf9114cc933c10bb1dba35b538f3c9d685334d8"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f6b014f2176d2774b759b8e2951af4a613385ebcc08841cb5c0ca6d5dee74ee"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcfabf9338fed009fd9e11bf496a927ea67b1ce15d34847cb0a98aa6f042b989"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171f1f5364a0ef5873480e6fddc3870ee37f1dfe216fa67507bbd4c91306f110"}, - {file = "aiohttp-3.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87e243b1df27ff685ab08228b7a938c0530beb60ad3dea7554da1554d46c9ad4"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fee4d2246b091b7e252cd5bcdbd4362fa21c3cc6a445fef54de793731546ab24"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bfa8c8af8c92e3d6c1eff02cf5127f62c1e7564e7b0f1a9767035f81a2e6bb20"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f44f09b67a458400215d9efedb9cfb5e3256dbeb2cc2da68e4592b7b36bac0c9"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b5f8270946777d6971c27479cb6e7f54578be960928a8922cb59130e856d8484"}, - {file = "aiohttp-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e8ccaa99871303323bd2cda120043039729497642da5c6f53e066b19f73d9df8"}, - {file = "aiohttp-3.10.7-cp39-cp39-win32.whl", hash = "sha256:ce7c12bfbb1579e81cdf2e7db4338f8c768da2493aa0db60a858a542d551563c"}, - {file = "aiohttp-3.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:189979c7e9d8f40236534760daf5b41d2026d5ebabdf913e771d9b6bfbc992af"}, - {file = "aiohttp-3.10.7.tar.gz", hash = "sha256:18c72a69ba20713f26fa40932cac17437b0c1d25edff2e27437a204c12275bd9"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8b3fb28a9ac8f2558760d8e637dbf27aef1e8b7f1d221e8669a1074d1a266bb2"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91aa966858593f64c8a65cdefa3d6dc8fe3c2768b159da84c1ddbbb2c01ab4ef"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63649309da83277f06a15bbdc2a54fbe75efb92caa2c25bb57ca37762789c746"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e7fabedb3fe06933f47f1538df7b3a8d78e13d7167195f51ca47ee12690373"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c070430fda1a550a1c3a4c2d7281d3b8cfc0c6715f616e40e3332201a253067"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d0a4901b27272ae54e42067bc4b9a90e619a690b4dc43ea5950eb3070afc32"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fec5fac7aea6c060f317f07494961236434928e6f4374e170ef50b3001e14581"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:172ad884bb61ad31ed7beed8be776eb17e7fb423f1c1be836d5cb357a096bf12"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d646fdd74c25bbdd4a055414f0fe32896c400f38ffbdfc78c68e62812a9e0257"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e86260b76786c28acf0b5fe31c8dca4c2add95098c709b11e8c35b424ebd4f5b"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d7cafc11d70fdd8801abfc2ff276744ae4cb39d8060b6b542c7e44e5f2cfc2"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc262c3df78c8ff6020c782d9ce02e4bcffe4900ad71c0ecdad59943cba54442"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:482c85cf3d429844396d939b22bc2a03849cb9ad33344689ad1c85697bcba33a"}, + {file = "aiohttp-3.10.9-cp310-cp310-win32.whl", hash = "sha256:aeebd3061f6f1747c011e1d0b0b5f04f9f54ad1a2ca183e687e7277bef2e0da2"}, + {file = "aiohttp-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:fa430b871220dc62572cef9c69b41e0d70fcb9d486a4a207a5de4c1f25d82593"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16e6a51d8bc96b77f04a6764b4ad03eeef43baa32014fce71e882bd71302c7e4"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8bd9125dd0cc8ebd84bff2be64b10fdba7dc6fd7be431b5eaf67723557de3a31"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dcf354661f54e6a49193d0b5653a1b011ba856e0b7a76bda2c33e4c6892f34ea"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42775de0ca04f90c10c5c46291535ec08e9bcc4756f1b48f02a0657febe89b10"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d1e4185c5d7187684d41ebb50c9aeaaaa06ca1875f4c57593071b0409d2444"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2695c61cf53a5d4345a43d689f37fc0f6d3a2dc520660aec27ec0f06288d1f9"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a3f063b41cc06e8d0b3fcbbfc9c05b7420f41287e0cd4f75ce0a1f3d80729e6"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d37f4718002863b82c6f391c8efd4d3a817da37030a29e2682a94d2716209de"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2746d8994ebca1bdc55a1e998feff4e94222da709623bb18f6e5cfec8ec01baf"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6f3c6648aa123bcd73d6f26607d59967b607b0da8ffcc27d418a4b59f4c98c7c"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:558b3d223fd631ad134d89adea876e7fdb4c93c849ef195049c063ada82b7d08"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4e6cb75f8ddd9c2132d00bc03c9716add57f4beff1263463724f6398b813e7eb"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:608cecd8d58d285bfd52dbca5b6251ca8d6ea567022c8a0eaae03c2589cd9af9"}, + {file = "aiohttp-3.10.9-cp311-cp311-win32.whl", hash = "sha256:36d4fba838be5f083f5490ddd281813b44d69685db910907636bc5dca6322316"}, + {file = "aiohttp-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:8be1a65487bdfc285bd5e9baf3208c2132ca92a9b4020e9f27df1b16fab998a9"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4fd16b30567c5b8e167923be6e027eeae0f20cf2b8a26b98a25115f28ad48ee0"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40ff5b7660f903dc587ed36ef08a88d46840182d9d4b5694e7607877ced698a1"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4edc3fd701e2b9a0d605a7b23d3de4ad23137d23fc0dbab726aa71d92f11aaaf"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e525b69ee8a92c146ae5b4da9ecd15e518df4d40003b01b454ad694a27f498b5"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5002a02c17fcfd796d20bac719981d2fca9c006aac0797eb8f430a58e9d12431"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4ceeae2fb8cabdd1b71c82bfdd39662473d3433ec95b962200e9e752fb70d0"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6e395c3d1f773cf0651cd3559e25182eb0c03a2777b53b4575d8adc1149c6e9"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbdb8def5268f3f9cd753a265756f49228a20ed14a480d151df727808b4531dd"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f82ace0ec57c94aaf5b0e118d4366cff5889097412c75aa14b4fd5fc0c44ee3e"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6ebdc3b3714afe1b134b3bbeb5f745eed3ecbcff92ab25d80e4ef299e83a5465"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ca09414003c0e96a735daa1f071f7d7ed06962ef4fa29ceb6c80d06696d900"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1298b854fd31d0567cbb916091be9d3278168064fca88e70b8468875ef9ff7e7"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60ad5b8a7452c0f5645c73d4dad7490afd6119d453d302cd5b72b678a85d6044"}, + {file = "aiohttp-3.10.9-cp312-cp312-win32.whl", hash = "sha256:1a0ee6c0d590c917f1b9629371fce5f3d3f22c317aa96fbdcce3260754d7ea21"}, + {file = "aiohttp-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:c46131c6112b534b178d4e002abe450a0a29840b61413ac25243f1291613806a"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2bd9f3eac515c16c4360a6a00c38119333901b8590fe93c3257a9b536026594d"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8cc0d13b4e3b1362d424ce3f4e8c79e1f7247a00d792823ffd640878abf28e56"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba1a599255ad6a41022e261e31bc2f6f9355a419575b391f9655c4d9e5df5ff5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:776e9f3c9b377fcf097c4a04b241b15691e6662d850168642ff976780609303c"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8debb45545ad95b58cc16c3c1cc19ad82cffcb106db12b437885dbee265f0ab5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2555e4949c8d8782f18ef20e9d39730d2656e218a6f1a21a4c4c0b56546a02e"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54dc329cd44f7f7883a9f4baaefe686e8b9662e2c6c184ea15cceee587d8d69"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e709d6ac598c5416f879bb1bae3fd751366120ac3fa235a01de763537385d036"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:17c272cfe7b07a5bb0c6ad3f234e0c336fb53f3bf17840f66bd77b5815ab3d16"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0c21c82df33b264216abffff9f8370f303dab65d8eee3767efbbd2734363f677"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9331dd34145ff105177855017920dde140b447049cd62bb589de320fd6ddd582"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ac3196952c673822ebed8871cf8802e17254fff2a2ed4835d9c045d9b88c5ec7"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c33fa6e10bb7ed262e3ff03cc69d52869514f16558db0626a7c5c61dde3c29f"}, + {file = "aiohttp-3.10.9-cp313-cp313-win32.whl", hash = "sha256:a14e4b672c257a6b94fe934ee62666bacbc8e45b7876f9dd9502d0f0fe69db16"}, + {file = "aiohttp-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:a35ed3d03910785f7d9d6f5381f0c24002b2b888b298e6f941b2fc94c5055fcd"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f392ef50e22c31fa49b5a46af7f983fa3f118f3eccb8522063bee8bfa6755f8"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d1f5c9169e26db6a61276008582d945405b8316aae2bb198220466e68114a0f5"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9d10d10ec27c0d46ddaecc3c5598c4db9ce4e6398ca872cdde0525765caa2f"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97273a52d7f89a75b11ec386f786d3da7723d7efae3034b4dda79f6f093edc1"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d271f770b52e32236d945911b2082f9318e90ff835d45224fa9e28374303f729"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7003f33f5f7da1eb02f0446b0f8d2ccf57d253ca6c2e7a5732d25889da82b517"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6e00c8a92e7663ed2be6fcc08a2997ff06ce73c8080cd0df10cc0321a3168d7"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a61df62966ce6507aafab24e124e0c3a1cfbe23c59732987fc0fd0d71daa0b88"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:60555211a006d26e1a389222e3fab8cd379f28e0fbf7472ee55b16c6c529e3a6"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d15a29424e96fad56dc2f3abed10a89c50c099f97d2416520c7a543e8fddf066"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:a19caae0d670771ea7854ca30df76f676eb47e0fd9b2ee4392d44708f272122d"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:99f9678bf0e2b1b695e8028fedac24ab6770937932eda695815d5a6618c37e04"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2914caa46054f3b5ff910468d686742ff8cff54b8a67319d75f5d5945fd0a13d"}, + {file = "aiohttp-3.10.9-cp38-cp38-win32.whl", hash = "sha256:0bc059ecbce835630e635879f5f480a742e130d9821fbe3d2f76610a6698ee25"}, + {file = "aiohttp-3.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:e883b61b75ca6efc2541fcd52a5c8ccfe288b24d97e20ac08fdf343b8ac672ea"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fcd546782d03181b0b1d20b43d612429a90a68779659ba8045114b867971ab71"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:85711eec2d875cd88c7eb40e734c4ca6d9ae477d6f26bd2b5bb4f7f60e41b156"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02d1d6610588bcd743fae827bd6f2e47e0d09b346f230824b4c6fb85c6065f9c"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3668d0c2a4d23fb136a753eba42caa2c0abbd3d9c5c87ee150a716a16c6deec1"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7c071235a47d407b0e93aa6262b49422dbe48d7d8566e1158fecc91043dd948"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac74e794e3aee92ae8f571bfeaa103a141e409863a100ab63a253b1c53b707eb"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbf94d4a0447705b7775417ca8bb8086cc5482023a6e17cdc8f96d0b1b5aba6"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb0b2d5d51f96b6cc19e6ab46a7b684be23240426ae951dcdac9639ab111b45e"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e83dfefb4f7d285c2d6a07a22268344a97d61579b3e0dce482a5be0251d672ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f0a44bb40b6aaa4fb9a5c1ee07880570ecda2065433a96ccff409c9c20c1624a"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c2b627d3c8982691b06d89d31093cee158c30629fdfebe705a91814d49b554f8"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:03690541e4cc866eef79626cfa1ef4dd729c5c1408600c8cb9e12e1137eed6ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad3675c126f2a95bde637d162f8231cff6bc0bc9fbe31bd78075f9ff7921e322"}, + {file = "aiohttp-3.10.9-cp39-cp39-win32.whl", hash = "sha256:1321658f12b6caffafdc35cfba6c882cb014af86bef4e78c125e7e794dfb927b"}, + {file = "aiohttp-3.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:9fdf5c839bf95fc67be5794c780419edb0dbef776edcfc6c2e5e2ffd5ee755fa"}, + {file = "aiohttp-3.10.9.tar.gz", hash = "sha256:143b0026a9dab07a05ad2dd9e46aa859bffdd6348ddc5967b42161168c24f857"}, ] [package.dependencies] @@ -257,13 +257,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -916,13 +916,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -933,7 +933,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -1356,13 +1356,13 @@ extended-testing = ["beautifulsoup4 (>=4.12.3,<5.0.0)", "lxml (>=4.9.3,<6.0)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -1370,6 +1370,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -2532,6 +2533,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.3.7" @@ -2580,6 +2595,11 @@ files = [ {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12"}, + {file = "scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, @@ -2847,13 +2867,13 @@ blobfile = ["blobfile (>=2)"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -2878,13 +2898,13 @@ telegram = ["requests"] [[package]] name = "types-pytz" -version = "2024.2.0.20240913" +version = "2024.2.0.20241003" description = "Typing stubs for pytz" optional = false python-versions = ">=3.8" files = [ - {file = "types-pytz-2024.2.0.20240913.tar.gz", hash = "sha256:4433b5df4a6fc587bbed41716d86a5ba5d832b4378e506f40d34bc9c81df2c24"}, - {file = "types_pytz-2024.2.0.20240913-py3-none-any.whl", hash = "sha256:a1eebf57ebc6e127a99d2fa2ba0a88d2b173784ef9b3defcc2004ab6855a44df"}, + {file = "types-pytz-2024.2.0.20241003.tar.gz", hash = "sha256:575dc38f385a922a212bac00a7d6d2e16e141132a3c955078f4a4fd13ed6cb44"}, + {file = "types_pytz-2024.2.0.20241003-py3-none-any.whl", hash = "sha256:3e22df1336c0c6ad1d29163c8fda82736909eb977281cb823c57f8bae07118b7"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-astra/pyproject.toml b/airbyte-integrations/connectors/destination-astra/pyproject.toml index 32d08cf940a70..a138925bcf289 100644 --- a/airbyte-integrations/connectors/destination-astra/pyproject.toml +++ b/airbyte-integrations/connectors/destination-astra/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-destination-astra" -version = "0.1.26" +version = "0.1.27" description = "Airbyte destination implementation for Astra DB." authors = ["Airbyte "] license = "MIT" diff --git a/docs/integrations/destinations/astra.md b/docs/integrations/destinations/astra.md index 9e4789473eaa6..7ae81f74644e5 100644 --- a/docs/integrations/destinations/astra.md +++ b/docs/integrations/destinations/astra.md @@ -43,6 +43,7 @@ This page contains the setup guide and reference information for the destination | Version | Date | Pull Request | Subject | |:--------| :--------- | :----------- |:----------------------------------------------------------| +| 0.1.27 | 2024-10-05 | [46402](https://github.com/airbytehq/airbyte/pull/46402) | Update dependencies | | 0.1.26 | 2024-09-28 | [46179](https://github.com/airbytehq/airbyte/pull/46179) | Update dependencies | | 0.1.25 | 2024-09-21 | [45829](https://github.com/airbytehq/airbyte/pull/45829) | Update dependencies | | 0.1.24 | 2024-09-14 | [45498](https://github.com/airbytehq/airbyte/pull/45498) | Update dependencies | From 273e205efa1e85d4a910d8b8041b39641a24d56b Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:12 +0300 Subject: [PATCH 138/379] =?UTF-8?q?=F0=9F=90=99=20destination-aws-datalake?= =?UTF-8?q?:=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46400)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../destination-aws-datalake/metadata.yaml | 2 +- .../destination-aws-datalake/poetry.lock | 59 ++++++++++++------- .../destination-aws-datalake/pyproject.toml | 2 +- .../integrations/destinations/aws-datalake.md | 1 + 4 files changed, 40 insertions(+), 24 deletions(-) diff --git a/airbyte-integrations/connectors/destination-aws-datalake/metadata.yaml b/airbyte-integrations/connectors/destination-aws-datalake/metadata.yaml index 74e37ac35f4cc..a26ba945c004e 100644 --- a/airbyte-integrations/connectors/destination-aws-datalake/metadata.yaml +++ b/airbyte-integrations/connectors/destination-aws-datalake/metadata.yaml @@ -4,7 +4,7 @@ data: definitionId: 99878c90-0fbd-46d3-9d98-ffde879d17fc connectorBuildOptions: baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 - dockerImageTag: 0.1.31 + dockerImageTag: 0.1.32 dockerRepository: airbyte/destination-aws-datalake githubIssueLabel: destination-aws-datalake icon: awsdatalake.svg diff --git a/airbyte-integrations/connectors/destination-aws-datalake/poetry.lock b/airbyte-integrations/connectors/destination-aws-datalake/poetry.lock index 06ec6e2e6c9eb..65c53ba6e0b6f 100644 --- a/airbyte-integrations/connectors/destination-aws-datalake/poetry.lock +++ b/airbyte-integrations/connectors/destination-aws-datalake/poetry.lock @@ -144,17 +144,17 @@ files = [ [[package]] name = "boto3" -version = "1.35.29" +version = "1.35.34" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.29-py3-none-any.whl", hash = "sha256:2244044cdfa8ac345d7400536dc15a4824835e7ec5c55bc267e118af66bb27db"}, - {file = "boto3-1.35.29.tar.gz", hash = "sha256:7bbb1ee649e09e956952285782cfdebd7e81fc78384f48dfab3d66c6eaf3f63f"}, + {file = "boto3-1.35.34-py3-none-any.whl", hash = "sha256:291e7b97a34967ed93297e6171f1bebb8529e64633dd48426760e3fdef1cdea8"}, + {file = "boto3-1.35.34.tar.gz", hash = "sha256:57e6ee8504e7929bc094bb2afc879943906064179a1e88c23b4812e2c6f61532"}, ] [package.dependencies] -botocore = ">=1.35.29,<1.36.0" +botocore = ">=1.35.34,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -163,13 +163,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.29" +version = "1.35.34" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.29-py3-none-any.whl", hash = "sha256:f8e3ae0d84214eff3fb69cb4dc51cea6c43d3bde82027a94d00c52b941d6c3d5"}, - {file = "botocore-1.35.29.tar.gz", hash = "sha256:4ed28ab03675bb008a290c452c5ddd7aaa5d4e3fa1912aadbdf93057ee84362b"}, + {file = "botocore-1.35.34-py3-none-any.whl", hash = "sha256:ccb0fe397b11b81c9abc0c87029d17298e17bf658d8db5c0c5a551a12a207e7a"}, + {file = "botocore-1.35.34.tar.gz", hash = "sha256:789b6501a3bb4a9591c1fe10da200cc315c1fa5df5ada19c720d8ef06439b3e3"}, ] [package.dependencies] @@ -181,17 +181,17 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.21.5)"] +crt = ["awscrt (==0.22.0)"] [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -550,13 +550,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -567,7 +567,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -742,13 +742,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -756,6 +756,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1445,6 +1446,20 @@ redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] yaml = ["pyyaml (>=6.0.1)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "retrying" version = "1.3.4" @@ -1535,13 +1550,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/destination-aws-datalake/pyproject.toml b/airbyte-integrations/connectors/destination-aws-datalake/pyproject.toml index 55e0b186b5e25..114df2543c2d1 100644 --- a/airbyte-integrations/connectors/destination-aws-datalake/pyproject.toml +++ b/airbyte-integrations/connectors/destination-aws-datalake/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.31" +version = "0.1.32" name = "destination-aws-datalake" description = "Destination Implementation for AWS Datalake." authors = [ "Airbyte ",] diff --git a/docs/integrations/destinations/aws-datalake.md b/docs/integrations/destinations/aws-datalake.md index ebcc0e040ae92..09293d4a0c2a4 100644 --- a/docs/integrations/destinations/aws-datalake.md +++ b/docs/integrations/destinations/aws-datalake.md @@ -94,6 +94,7 @@ which will be translated for compatibility with the Glue Data Catalog: | Version | Date | Pull Request | Subject | |:--------| :--------- | :--------------------------------------------------------- | :--------------------------------------------------- | +| 0.1.32 | 2024-10-05 | [46400](https://github.com/airbytehq/airbyte/pull/46400) | Update dependencies | | 0.1.31 | 2024-09-28 | [46126](https://github.com/airbytehq/airbyte/pull/46126) | Update dependencies | | 0.1.30 | 2024-09-21 | [45821](https://github.com/airbytehq/airbyte/pull/45821) | Update dependencies | | 0.1.29 | 2024-09-14 | [45533](https://github.com/airbytehq/airbyte/pull/45533) | Update dependencies | From d281ae051904417ad1edfd88257309fd91492663 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:15 +0300 Subject: [PATCH 139/379] =?UTF-8?q?=F0=9F=90=99=20source-iterable:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46399)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-iterable/metadata.yaml | 2 +- .../connectors/source-iterable/poetry.lock | 58 ++++++++++++------- .../connectors/source-iterable/pyproject.toml | 2 +- docs/integrations/sources/iterable.md | 1 + 4 files changed, 40 insertions(+), 23 deletions(-) diff --git a/airbyte-integrations/connectors/source-iterable/metadata.yaml b/airbyte-integrations/connectors/source-iterable/metadata.yaml index ee5ddc0e02084..2d033c5479fdd 100644 --- a/airbyte-integrations/connectors/source-iterable/metadata.yaml +++ b/airbyte-integrations/connectors/source-iterable/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: 2e875208-0c0b-4ee4-9e92-1cb3156ea799 - dockerImageTag: 0.6.12 + dockerImageTag: 0.6.13 dockerRepository: airbyte/source-iterable documentationUrl: https://docs.airbyte.com/integrations/sources/iterable githubIssueLabel: source-iterable diff --git a/airbyte-integrations/connectors/source-iterable/poetry.lock b/airbyte-integrations/connectors/source-iterable/poetry.lock index f7078d04946d3..23e2670e75a6b 100644 --- a/airbyte-integrations/connectors/source-iterable/poetry.lock +++ b/airbyte-integrations/connectors/source-iterable/poetry.lock @@ -119,13 +119,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -498,13 +498,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -515,7 +515,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -679,13 +679,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -693,6 +693,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "linkify-it-py" @@ -1489,6 +1490,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "responses" version = "0.23.1" @@ -1511,18 +1526,19 @@ tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asy [[package]] name = "rich" -version = "13.8.1" +version = "13.9.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "rich-13.8.1-py3-none-any.whl", hash = "sha256:1760a3c0848469b97b558fc61c85233e3dafb69c7a071b4d60c38099d3cd4c06"}, - {file = "rich-13.8.1.tar.gz", hash = "sha256:8260cda28e3db6bf04d2d1ef4dbc03ba80a824c88b0e7668a0f23126a424844a"}, + {file = "rich-13.9.2-py3-none-any.whl", hash = "sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1"}, + {file = "rich-13.9.2.tar.gz", hash = "sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c"}, ] [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.11\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] @@ -1586,13 +1602,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "textual" -version = "0.81.0" +version = "0.82.0" description = "Modern Text User Interface framework" optional = false python-versions = "<4.0.0,>=3.8.1" files = [ - {file = "textual-0.81.0-py3-none-any.whl", hash = "sha256:5f94e3bf185a1693c31f5e2bcbc413c8ed093a53abc96a956c65322d48f9543c"}, - {file = "textual-0.81.0.tar.gz", hash = "sha256:b438f7e6bb143fdec379170ccc6709a32d273bd998e70179537109263de7c818"}, + {file = "textual-0.82.0-py3-none-any.whl", hash = "sha256:4ce00dc898fab3a829aa835071f4e8284aad57f13870e871d0ac516cc34b3645"}, + {file = "textual-0.82.0.tar.gz", hash = "sha256:db93a2bb3ba9fdb2a536272cd5c8144c9c9682df0370a99361b670c6191b0a4d"}, ] [package.dependencies] @@ -1606,13 +1622,13 @@ syntax = ["tree-sitter (>=0.20.1,<0.21.0)", "tree-sitter-languages (==1.10.2)"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-iterable/pyproject.toml b/airbyte-integrations/connectors/source-iterable/pyproject.toml index 9acbf7b7d74af..319477bd63037 100644 --- a/airbyte-integrations/connectors/source-iterable/pyproject.toml +++ b/airbyte-integrations/connectors/source-iterable/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.6.12" +version = "0.6.13" name = "source-iterable" description = "Source implementation for Iterable." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/iterable.md b/docs/integrations/sources/iterable.md index 8f93aba943a14..fa297d1842760 100644 --- a/docs/integrations/sources/iterable.md +++ b/docs/integrations/sources/iterable.md @@ -83,6 +83,7 @@ The Iterable source connector supports the following [sync modes](https://docs.a | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 0.6.13 | 2024-10-05 | [46399](https://github.com/airbytehq/airbyte/pull/46399) | Update dependencies | | 0.6.12 | 2024-09-28 | [46155](https://github.com/airbytehq/airbyte/pull/46155) | Update dependencies | | 0.6.11 | 2024-09-21 | [45828](https://github.com/airbytehq/airbyte/pull/45828) | Update dependencies | | 0.6.10 | 2024-09-14 | [45518](https://github.com/airbytehq/airbyte/pull/45518) | Update dependencies | From e5cfb9bb2d33485ab64bd25f1e15d163a8626fae Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:17 +0300 Subject: [PATCH 140/379] =?UTF-8?q?=F0=9F=90=99=20source-faker:=20run=20up?= =?UTF-8?q?-to-date=20pipeline=20[2024-10-05]=20(#46398)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-faker/metadata.yaml | 2 +- .../connectors/source-faker/poetry.lock | 35 +++++++++++++------ .../connectors/source-faker/pyproject.toml | 2 +- docs/integrations/sources/faker.md | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-faker/metadata.yaml b/airbyte-integrations/connectors/source-faker/metadata.yaml index 29f4bf40d0cf4..fc2f69db41f82 100644 --- a/airbyte-integrations/connectors/source-faker/metadata.yaml +++ b/airbyte-integrations/connectors/source-faker/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: api connectorType: source definitionId: dfd88b22-b603-4c3d-aad7-3701784586b1 - dockerImageTag: 6.2.16 + dockerImageTag: 6.2.17 dockerRepository: airbyte/source-faker documentationUrl: https://docs.airbyte.com/integrations/sources/faker githubIssueLabel: source-faker diff --git a/airbyte-integrations/connectors/source-faker/poetry.lock b/airbyte-integrations/connectors/source-faker/poetry.lock index 4d5b71e99ef00..e3bfb1c76950d 100644 --- a/airbyte-integrations/connectors/source-faker/poetry.lock +++ b/airbyte-integrations/connectors/source-faker/poetry.lock @@ -129,13 +129,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -494,13 +494,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -511,7 +511,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -675,13 +675,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -692,6 +692,7 @@ pydantic = [ {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, ] requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1341,6 +1342,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-faker/pyproject.toml b/airbyte-integrations/connectors/source-faker/pyproject.toml index 0e2136f0d1cea..b20b9d669a7f6 100644 --- a/airbyte-integrations/connectors/source-faker/pyproject.toml +++ b/airbyte-integrations/connectors/source-faker/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "6.2.16" +version = "6.2.17" name = "source-faker" description = "Source implementation for fake but realistic looking data." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/faker.md b/docs/integrations/sources/faker.md index 7e69d42cdee0b..4902ea8b872cf 100644 --- a/docs/integrations/sources/faker.md +++ b/docs/integrations/sources/faker.md @@ -104,6 +104,7 @@ None! | Version | Date | Pull Request | Subject | | :------ | :--------- | :-------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- | +| 6.2.17 | 2024-10-05 | [46398](https://github.com/airbytehq/airbyte/pull/46398) | Update dependencies | | 6.2.16 | 2024-09-28 | [46207](https://github.com/airbytehq/airbyte/pull/46207) | Update dependencies | | 6.2.15 | 2024-09-21 | [45740](https://github.com/airbytehq/airbyte/pull/45740) | Update dependencies | | 6.2.14 | 2024-09-14 | [45567](https://github.com/airbytehq/airbyte/pull/45567) | Update dependencies | From f9b3f70a14db56f2e7787d5e0a0d69cfaa6f7b3e Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:20 +0300 Subject: [PATCH 141/379] =?UTF-8?q?=F0=9F=90=99=20source-looker:=20run=20u?= =?UTF-8?q?p-to-date=20pipeline=20[2024-10-05]=20(#46397)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-looker/metadata.yaml | 2 +- .../connectors/source-looker/poetry.lock | 43 +++++++++++++------ .../connectors/source-looker/pyproject.toml | 2 +- docs/integrations/sources/looker.md | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/airbyte-integrations/connectors/source-looker/metadata.yaml b/airbyte-integrations/connectors/source-looker/metadata.yaml index 5f2bd5e33d3e4..3b8f631a1fdde 100644 --- a/airbyte-integrations/connectors/source-looker/metadata.yaml +++ b/airbyte-integrations/connectors/source-looker/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: 00405b19-9768-4e0c-b1ae-9fc2ee2b2a8c - dockerImageTag: 1.0.11 + dockerImageTag: 1.0.12 dockerRepository: airbyte/source-looker githubIssueLabel: source-looker icon: looker.svg diff --git a/airbyte-integrations/connectors/source-looker/poetry.lock b/airbyte-integrations/connectors/source-looker/poetry.lock index e823f9bcadc42..76c9e4136fbc2 100644 --- a/airbyte-integrations/connectors/source-looker/poetry.lock +++ b/airbyte-integrations/connectors/source-looker/poetry.lock @@ -121,13 +121,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -500,13 +500,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -517,7 +517,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -692,13 +692,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.129" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, - {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -709,6 +709,7 @@ pydantic = [ {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, ] requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1462,6 +1463,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" @@ -1521,13 +1536,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-looker/pyproject.toml b/airbyte-integrations/connectors/source-looker/pyproject.toml index 6e17103fef250..0538bb0eee714 100644 --- a/airbyte-integrations/connectors/source-looker/pyproject.toml +++ b/airbyte-integrations/connectors/source-looker/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.0.11" +version = "1.0.12" name = "source-looker" description = "Source implementation for looker." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/looker.md b/docs/integrations/sources/looker.md index 1adace4a2448e..798d7353460ad 100644 --- a/docs/integrations/sources/looker.md +++ b/docs/integrations/sources/looker.md @@ -85,6 +85,7 @@ Please read the "API3 Key" section in [Looker's information for users docs](http | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------- | +| 1.0.12 | 2024-10-05 | [46397](https://github.com/airbytehq/airbyte/pull/46397) | Update dependencies | | 1.0.11 | 2024-09-28 | [46191](https://github.com/airbytehq/airbyte/pull/46191) | Update dependencies | | 1.0.10 | 2024-09-21 | [45762](https://github.com/airbytehq/airbyte/pull/45762) | Update dependencies | | 1.0.9 | 2024-09-14 | [45564](https://github.com/airbytehq/airbyte/pull/45564) | Update dependencies | From 590684f5447ea55254ef6998f6785a8a47fc783a Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:22 +0300 Subject: [PATCH 142/379] =?UTF-8?q?=F0=9F=90=99=20source-azure-table:=20ru?= =?UTF-8?q?n=20up-to-date=20pipeline=20[2024-10-05]=20(#46396)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-azure-table/metadata.yaml | 2 +- .../connectors/source-azure-table/poetry.lock | 6 +++--- .../connectors/source-azure-table/pyproject.toml | 2 +- docs/integrations/sources/azure-table.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-azure-table/metadata.yaml b/airbyte-integrations/connectors/source-azure-table/metadata.yaml index e98bdc83df3da..f2c438d2e3c0e 100644 --- a/airbyte-integrations/connectors/source-azure-table/metadata.yaml +++ b/airbyte-integrations/connectors/source-azure-table/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: database connectorType: source definitionId: 798ae795-5189-42b6-b64e-3cb91db93338 - dockerImageTag: 0.1.25 + dockerImageTag: 0.1.26 dockerRepository: airbyte/source-azure-table githubIssueLabel: source-azure-table icon: azureblobstorage.svg diff --git a/airbyte-integrations/connectors/source-azure-table/poetry.lock b/airbyte-integrations/connectors/source-azure-table/poetry.lock index a4947f61ee9ae..e32484dda73f3 100644 --- a/airbyte-integrations/connectors/source-azure-table/poetry.lock +++ b/airbyte-integrations/connectors/source-azure-table/poetry.lock @@ -128,13 +128,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-azure-table/pyproject.toml b/airbyte-integrations/connectors/source-azure-table/pyproject.toml index d3f35cea85d30..abaff53745f45 100644 --- a/airbyte-integrations/connectors/source-azure-table/pyproject.toml +++ b/airbyte-integrations/connectors/source-azure-table/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.25" +version = "0.1.26" name = "source-azure-table" description = "Source implementation for Azure Table." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/azure-table.md b/docs/integrations/sources/azure-table.md index f37ff34bc9f66..7c9f5701f39b2 100644 --- a/docs/integrations/sources/azure-table.md +++ b/docs/integrations/sources/azure-table.md @@ -70,6 +70,7 @@ We recommend creating a restricted key specifically for Airbyte access. This wil | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------ | +| 0.1.26 | 2024-10-05 | [46396](https://github.com/airbytehq/airbyte/pull/46396) | Update dependencies | | 0.1.25 | 2024-09-28 | [46183](https://github.com/airbytehq/airbyte/pull/46183) | Update dependencies | | 0.1.24 | 2024-09-21 | [45836](https://github.com/airbytehq/airbyte/pull/45836) | Update dependencies | | 0.1.23 | 2024-09-14 | [45544](https://github.com/airbytehq/airbyte/pull/45544) | Update dependencies | From 21f7f9c541e52b8ae8fc77ed340ff101bd9f91a4 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:25 +0300 Subject: [PATCH 143/379] =?UTF-8?q?=F0=9F=90=99=20source-orb:=20run=20up-t?= =?UTF-8?q?o-date=20pipeline=20[2024-10-05]=20(#46395)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-orb/metadata.yaml | 2 +- .../connectors/source-orb/poetry.lock | 13 +++++++------ .../connectors/source-orb/pyproject.toml | 2 +- docs/integrations/sources/orb.md | 1 + 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/airbyte-integrations/connectors/source-orb/metadata.yaml b/airbyte-integrations/connectors/source-orb/metadata.yaml index 768160421c99d..e23ee1e566466 100644 --- a/airbyte-integrations/connectors/source-orb/metadata.yaml +++ b/airbyte-integrations/connectors/source-orb/metadata.yaml @@ -4,7 +4,7 @@ data: connectorSubtype: api connectorType: source definitionId: 7f0455fb-4518-4ec0-b7a3-d808bf8081cc - dockerImageTag: 2.0.12 + dockerImageTag: 2.0.13 dockerRepository: airbyte/source-orb githubIssueLabel: source-orb icon: orb.svg diff --git a/airbyte-integrations/connectors/source-orb/poetry.lock b/airbyte-integrations/connectors/source-orb/poetry.lock index 54765afd22fd4..121f44db8750e 100644 --- a/airbyte-integrations/connectors/source-orb/poetry.lock +++ b/airbyte-integrations/connectors/source-orb/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -303,17 +303,18 @@ test = ["pytest (>=6)"] [[package]] name = "faker" -version = "30.0.0" +version = "30.1.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.8" files = [ - {file = "Faker-30.0.0-py3-none-any.whl", hash = "sha256:f0a60009150736c1c033bea31aa19ae63071c9dcf10adfaf9f1a87a3add84bc8"}, - {file = "faker-30.0.0.tar.gz", hash = "sha256:bf0207af5777950054a2a3b43f4b5bdc33b585918d2b28f1dab52ac0ffe2bac0"}, + {file = "Faker-30.1.0-py3-none-any.whl", hash = "sha256:dbf81295c948270a9e96cd48a9a3ebec73acac9a153d0c854fbbd0294557609f"}, + {file = "faker-30.1.0.tar.gz", hash = "sha256:e0593931bd7be9a9ea984b5d8c302ef1cec19392585d1e90d444199271d0a94d"}, ] [package.dependencies] python-dateutil = ">=2.4" +typing-extensions = "*" [[package]] name = "genson" diff --git a/airbyte-integrations/connectors/source-orb/pyproject.toml b/airbyte-integrations/connectors/source-orb/pyproject.toml index 319063683d2ca..812c2d4a6dec8 100644 --- a/airbyte-integrations/connectors/source-orb/pyproject.toml +++ b/airbyte-integrations/connectors/source-orb/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.0.12" +version = "2.0.13" name = "source-orb" description = "Source implementation for Orb." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/orb.md b/docs/integrations/sources/orb.md index c6960530bcf28..6239c5eefbf95 100644 --- a/docs/integrations/sources/orb.md +++ b/docs/integrations/sources/orb.md @@ -65,6 +65,7 @@ an Orb Account and API Key. | Version | Date | Pull Request | Subject | |---------|------------| -------------------------------------------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 2.0.13 | 2024-10-05 | [46395](https://github.com/airbytehq/airbyte/pull/46395) | Update dependencies | | 2.0.12 | 2024-09-28 | [45785](https://github.com/airbytehq/airbyte/pull/45785) | Update dependencies | | 2.0.11 | 2024-09-14 | [45472](https://github.com/airbytehq/airbyte/pull/45472) | Update dependencies | | 2.0.10 | 2024-09-07 | [45212](https://github.com/airbytehq/airbyte/pull/45212) | Update dependencies | From b17a981a61c59e2666c9e21a40ce08d60bee05cd Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:27 +0300 Subject: [PATCH 144/379] =?UTF-8?q?=F0=9F=90=99=20source-zendesk-talk:=20r?= =?UTF-8?q?un=20up-to-date=20pipeline=20[2024-10-05]=20(#46394)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-zendesk-talk/metadata.yaml | 2 +- .../connectors/source-zendesk-talk/poetry.lock | 6 +++--- .../connectors/source-zendesk-talk/pyproject.toml | 2 +- docs/integrations/sources/zendesk-talk.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-zendesk-talk/metadata.yaml b/airbyte-integrations/connectors/source-zendesk-talk/metadata.yaml index 13ab002134ec7..5ab57362f6111 100644 --- a/airbyte-integrations/connectors/source-zendesk-talk/metadata.yaml +++ b/airbyte-integrations/connectors/source-zendesk-talk/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: c8630570-086d-4a40-99ae-ea5b18673071 - dockerImageTag: 1.0.18 + dockerImageTag: 1.0.19 dockerRepository: airbyte/source-zendesk-talk documentationUrl: https://docs.airbyte.com/integrations/sources/zendesk-talk githubIssueLabel: source-zendesk-talk diff --git a/airbyte-integrations/connectors/source-zendesk-talk/poetry.lock b/airbyte-integrations/connectors/source-zendesk-talk/poetry.lock index 39cc99a4faf10..57207641d9fb5 100644 --- a/airbyte-integrations/connectors/source-zendesk-talk/poetry.lock +++ b/airbyte-integrations/connectors/source-zendesk-talk/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-zendesk-talk/pyproject.toml b/airbyte-integrations/connectors/source-zendesk-talk/pyproject.toml index 43dd75ee4267e..cdb3f84d78b61 100644 --- a/airbyte-integrations/connectors/source-zendesk-talk/pyproject.toml +++ b/airbyte-integrations/connectors/source-zendesk-talk/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "1.0.18" +version = "1.0.19" name = "source-zendesk-talk" description = "Source implementation for Zendesk Talk." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/zendesk-talk.md b/docs/integrations/sources/zendesk-talk.md index 8f814c23d5404..ace4d9fef35b1 100644 --- a/docs/integrations/sources/zendesk-talk.md +++ b/docs/integrations/sources/zendesk-talk.md @@ -79,6 +79,7 @@ The Zendesk connector should not run into Zendesk API limitations under normal u | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:----------------------------------------------------------------------------| +| 1.0.19 | 2024-10-05 | [46394](https://github.com/airbytehq/airbyte/pull/46394) | Update dependencies | | 1.0.18 | 2024-09-28 | [46149](https://github.com/airbytehq/airbyte/pull/46149) | Update dependencies | | 1.0.17 | 2024-09-21 | [45783](https://github.com/airbytehq/airbyte/pull/45783) | Update dependencies | | 1.0.16 | 2024-09-14 | [45524](https://github.com/airbytehq/airbyte/pull/45524) | Update dependencies | From 386bbb4d101aa68207fc51255e53bff7434e66be Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:30 +0300 Subject: [PATCH 145/379] =?UTF-8?q?=F0=9F=90=99=20source-appsflyer:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-05]=20(#46393)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-appsflyer/metadata.yaml | 2 +- .../connectors/source-appsflyer/poetry.lock | 6 +++--- .../connectors/source-appsflyer/pyproject.toml | 2 +- docs/integrations/sources/appsflyer.md | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-appsflyer/metadata.yaml b/airbyte-integrations/connectors/source-appsflyer/metadata.yaml index a4b785cbabcb5..3231010e62cf8 100644 --- a/airbyte-integrations/connectors/source-appsflyer/metadata.yaml +++ b/airbyte-integrations/connectors/source-appsflyer/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: 16447954-e6a8-4593-b140-43dea13bc457 - dockerImageTag: 0.2.18 + dockerImageTag: 0.2.19 dockerRepository: airbyte/source-appsflyer githubIssueLabel: source-appsflyer icon: appsflyer.svg diff --git a/airbyte-integrations/connectors/source-appsflyer/poetry.lock b/airbyte-integrations/connectors/source-appsflyer/poetry.lock index 25471070216d0..17a57d064a1ba 100644 --- a/airbyte-integrations/connectors/source-appsflyer/poetry.lock +++ b/airbyte-integrations/connectors/source-appsflyer/poetry.lock @@ -92,13 +92,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-appsflyer/pyproject.toml b/airbyte-integrations/connectors/source-appsflyer/pyproject.toml index 8f33858811618..d0e8f90d1dd42 100644 --- a/airbyte-integrations/connectors/source-appsflyer/pyproject.toml +++ b/airbyte-integrations/connectors/source-appsflyer/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.2.18" +version = "0.2.19" name = "source-appsflyer" description = "Source implementation for Appsflyer." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/appsflyer.md b/docs/integrations/sources/appsflyer.md index c7e5eb8ec222a..795a19f00b2da 100644 --- a/docs/integrations/sources/appsflyer.md +++ b/docs/integrations/sources/appsflyer.md @@ -23,6 +23,7 @@ The Airbyte Source for [AppsFLyer](https://www.appsflyer.com/) | Version | Date | Pull Request | Subject | | :------ | :--------- | :----------------------------------------------------- | :------------------------------------------ | +| 0.2.19 | 2024-10-05 | [46393](https://github.com/airbytehq/airbyte/pull/46393) | Update dependencies | | 0.2.18 | 2024-09-28 | [46202](https://github.com/airbytehq/airbyte/pull/46202) | Update dependencies | | 0.2.17 | 2024-09-21 | [45746](https://github.com/airbytehq/airbyte/pull/45746) | Update dependencies | | 0.2.16 | 2024-09-14 | [45510](https://github.com/airbytehq/airbyte/pull/45510) | Update dependencies | From 6b04f8164c019c56eae81de1b1f87ff41e1ee2d3 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:34 +0300 Subject: [PATCH 146/379] =?UTF-8?q?=F0=9F=90=99=20source-tiktok-marketing:?= =?UTF-8?q?=20run=20up-to-date=20pipeline=20[2024-10-05]=20(#46164)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-tiktok-marketing/metadata.yaml | 2 +- .../source-tiktok-marketing/poetry.lock | 41 +++++++++++++------ .../source-tiktok-marketing/pyproject.toml | 2 +- docs/integrations/sources/tiktok-marketing.md | 1 + 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/airbyte-integrations/connectors/source-tiktok-marketing/metadata.yaml b/airbyte-integrations/connectors/source-tiktok-marketing/metadata.yaml index 64597adc46281..e84342ac59067 100644 --- a/airbyte-integrations/connectors/source-tiktok-marketing/metadata.yaml +++ b/airbyte-integrations/connectors/source-tiktok-marketing/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 4bfac00d-ce15-44ff-95b9-9e3c3e8fbd35 - dockerImageTag: 4.3.3 + dockerImageTag: 4.3.4 dockerRepository: airbyte/source-tiktok-marketing documentationUrl: https://docs.airbyte.com/integrations/sources/tiktok-marketing githubIssueLabel: source-tiktok-marketing diff --git a/airbyte-integrations/connectors/source-tiktok-marketing/poetry.lock b/airbyte-integrations/connectors/source-tiktok-marketing/poetry.lock index 20783f7215172..548508cc60f28 100644 --- a/airbyte-integrations/connectors/source-tiktok-marketing/poetry.lock +++ b/airbyte-integrations/connectors/source-tiktok-marketing/poetry.lock @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -153,13 +153,13 @@ files = [ [[package]] name = "cattrs" -version = "24.1.1" +version = "24.1.2" description = "Composable complex class support for attrs and dataclasses." optional = false python-versions = ">=3.8" files = [ - {file = "cattrs-24.1.1-py3-none-any.whl", hash = "sha256:ec8ce8fdc725de9d07547cd616f968670687c6fa7a2e263b088370c46d834d97"}, - {file = "cattrs-24.1.1.tar.gz", hash = "sha256:16e94a13f9aaf6438bd5be5df521e072b1b00481b4cf807bcb1acbd49f814c08"}, + {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, + {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, ] [package.dependencies] @@ -510,13 +510,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -527,7 +527,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -702,13 +702,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.125" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.125-py3-none-any.whl", hash = "sha256:74ce8eb2663e1ed20bfcfc88d41e0712879306956c9938d1cdbab7d60458bdca"}, - {file = "langsmith-0.1.125.tar.gz", hash = "sha256:2c0eb0c3cbf22cff55bf519b8e889041f9a591bcf97af5152c8e130333c5940e"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -716,6 +716,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1481,6 +1482,20 @@ six = "*" fixture = ["fixtures"] test = ["fixtures", "mock", "purl", "pytest", "sphinx", "testrepository (>=0.0.18)", "testtools"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "setuptools" version = "75.1.0" diff --git a/airbyte-integrations/connectors/source-tiktok-marketing/pyproject.toml b/airbyte-integrations/connectors/source-tiktok-marketing/pyproject.toml index 0358a65581699..729d405a36701 100644 --- a/airbyte-integrations/connectors/source-tiktok-marketing/pyproject.toml +++ b/airbyte-integrations/connectors/source-tiktok-marketing/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "4.3.3" +version = "4.3.4" name = "source-tiktok-marketing" description = "Source implementation for Tiktok Marketing." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/tiktok-marketing.md b/docs/integrations/sources/tiktok-marketing.md index aed5d006b6a46..33a6f760e5094 100644 --- a/docs/integrations/sources/tiktok-marketing.md +++ b/docs/integrations/sources/tiktok-marketing.md @@ -138,6 +138,7 @@ The connector is restricted by [requests limitation](https://business-api.tiktok | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------------------------------------| +| 4.3.4 | 2024-10-05 | [46164](https://github.com/airbytehq/airbyte/pull/46164) | Update dependencies | | 4.3.3 | 2024-09-21 | [45790](https://github.com/airbytehq/airbyte/pull/45790) | Update dependencies | | 4.3.2 | 2024-09-14 | [45488](https://github.com/airbytehq/airbyte/pull/45488) | Update dependencies | | 4.3.1 | 2024-09-07 | [45270](https://github.com/airbytehq/airbyte/pull/45270) | Update dependencies | From 2acf7bd32198f0ef26978807135a461110031e72 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:40 +0300 Subject: [PATCH 147/379] =?UTF-8?q?=F0=9F=90=99=20source-shopify:=20run=20?= =?UTF-8?q?up-to-date=20pipeline=20[2024-10-05]=20(#45759)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-shopify/metadata.yaml | 2 +- .../connectors/source-shopify/poetry.lock | 447 ++++++++++-------- .../connectors/source-shopify/pyproject.toml | 2 +- docs/integrations/sources/shopify.md | 3 +- 4 files changed, 244 insertions(+), 210 deletions(-) diff --git a/airbyte-integrations/connectors/source-shopify/metadata.yaml b/airbyte-integrations/connectors/source-shopify/metadata.yaml index 5367d136376e4..7494cbc76787d 100644 --- a/airbyte-integrations/connectors/source-shopify/metadata.yaml +++ b/airbyte-integrations/connectors/source-shopify/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 9da77001-af33-4bcd-be46-6252bf9342b9 - dockerImageTag: 2.5.3 + dockerImageTag: 2.5.4 dockerRepository: airbyte/source-shopify documentationUrl: https://docs.airbyte.com/integrations/sources/shopify erdUrl: https://dbdocs.io/airbyteio/source-shopify?view=relationships diff --git a/airbyte-integrations/connectors/source-shopify/poetry.lock b/airbyte-integrations/connectors/source-shopify/poetry.lock index aff062544ec4b..0316586e1a09b 100644 --- a/airbyte-integrations/connectors/source-shopify/poetry.lock +++ b/airbyte-integrations/connectors/source-shopify/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.5.2" +version = "5.10.2" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.5.2-py3-none-any.whl", hash = "sha256:cbca686ce52b1b26a49801308927662ef477400ca0142832f06f0add3073bf0e"}, - {file = "airbyte_cdk-5.5.2.tar.gz", hash = "sha256:7e105be721a141979852229fbeb1a2aaf12bd2adf6b51806867f07ca4c3d365b"}, + {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, + {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, ] [package.dependencies] @@ -26,7 +26,7 @@ jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" nltk = "3.8.1" orjson = ">=3.10.7,<4.0.0" -pandas = "2.2.0" +pandas = "2.2.2" pendulum = "<3.0.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" @@ -40,7 +40,7 @@ serpyco-rs = ">=1.10.2,<2.0.0" wcmatch = "8.4" [package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] @@ -68,13 +68,13 @@ files = [ [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, + {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, ] [package.dependencies] @@ -84,9 +84,9 @@ sniffio = ">=1.1" typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "attributes-doc" @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -153,13 +153,13 @@ files = [ [[package]] name = "cattrs" -version = "24.1.1" +version = "24.1.2" description = "Composable complex class support for attrs and dataclasses." optional = false python-versions = ">=3.8" files = [ - {file = "cattrs-24.1.1-py3-none-any.whl", hash = "sha256:ec8ce8fdc725de9d07547cd616f968670687c6fa7a2e263b088370c46d834d97"}, - {file = "cattrs-24.1.1.tar.gz", hash = "sha256:16e94a13f9aaf6438bd5be5df521e072b1b00481b4cf807bcb1acbd49f814c08"}, + {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, + {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, ] [package.dependencies] @@ -555,13 +555,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -572,7 +572,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -601,13 +601,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "idna" -version = "3.9" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.9-py3-none-any.whl", hash = "sha256:69297d5da0cc9281c77efffb4e730254dd45943f45bbfb461de5991713989b1e"}, - {file = "idna-3.9.tar.gz", hash = "sha256:e5c5dafde284f26e9e0f28f6ea2d6400abd5ca099864a67f576f3981c6476124"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] [package.extras] @@ -747,13 +747,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.120" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.120-py3-none-any.whl", hash = "sha256:54d2785e301646c0988e0a69ebe4d976488c87b41928b358cb153b6ddd8db62b"}, - {file = "langsmith-0.1.120.tar.gz", hash = "sha256:25499ca187b41bd89d784b272b97a8d76f60e0e21bdf20336e8a2aa6a9b23ac9"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -761,6 +761,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -858,47 +859,64 @@ twitter = ["twython"] [[package]] name = "numpy" -version = "1.26.4" +version = "2.1.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, ] [[package]] @@ -980,46 +998,46 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1044,6 +1062,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -1085,13 +1104,13 @@ pytzdata = ">=2020.1" [[package]] name = "platformdirs" -version = "4.3.3" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.3.3-py3-none-any.whl", hash = "sha256:50a5450e2e84f44539718293cbb1da0a0885c9d14adf21b77bae4e66fc99d9b5"}, - {file = "platformdirs-4.3.3.tar.gz", hash = "sha256:d4e0b7d8ec176b341fb03cb11ca12d0276faa8c485f9cd218f613840463fc2c0"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] @@ -1127,18 +1146,18 @@ files = [ [[package]] name = "pydantic" -version = "2.9.1" +version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.9.1-py3-none-any.whl", hash = "sha256:7aff4db5fdf3cf573d4b3c30926a510a10e19a0774d38fc4967f78beb6deb612"}, - {file = "pydantic-2.9.1.tar.gz", hash = "sha256:1363c7d975c7036df0db2b4a61f2e062fbc0aa5ab5f2772e0ffc7191a4f4bce2"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.3" +pydantic-core = "2.23.4" typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] @@ -1147,100 +1166,100 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.23.3" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.23.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7f10a5d1b9281392f1bf507d16ac720e78285dfd635b05737c3911637601bae6"}, - {file = "pydantic_core-2.23.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c09a7885dd33ee8c65266e5aa7fb7e2f23d49d8043f089989726391dd7350c5"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6470b5a1ec4d1c2e9afe928c6cb37eb33381cab99292a708b8cb9aa89e62429b"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9172d2088e27d9a185ea0a6c8cebe227a9139fd90295221d7d495944d2367700"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86fc6c762ca7ac8fbbdff80d61b2c59fb6b7d144aa46e2d54d9e1b7b0e780e01"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0cb80fd5c2df4898693aa841425ea1727b1b6d2167448253077d2a49003e0ed"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03667cec5daf43ac4995cefa8aaf58f99de036204a37b889c24a80927b629cec"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:047531242f8e9c2db733599f1c612925de095e93c9cc0e599e96cf536aaf56ba"}, - {file = "pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5499798317fff7f25dbef9347f4451b91ac2a4330c6669821c8202fd354c7bee"}, - {file = "pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bbb5e45eab7624440516ee3722a3044b83fff4c0372efe183fd6ba678ff681fe"}, - {file = "pydantic_core-2.23.3-cp310-none-win32.whl", hash = "sha256:8b5b3ed73abb147704a6e9f556d8c5cb078f8c095be4588e669d315e0d11893b"}, - {file = "pydantic_core-2.23.3-cp310-none-win_amd64.whl", hash = "sha256:2b603cde285322758a0279995b5796d64b63060bfbe214b50a3ca23b5cee3e83"}, - {file = "pydantic_core-2.23.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c889fd87e1f1bbeb877c2ee56b63bb297de4636661cc9bbfcf4b34e5e925bc27"}, - {file = "pydantic_core-2.23.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea85bda3189fb27503af4c45273735bcde3dd31c1ab17d11f37b04877859ef45"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7f7f72f721223f33d3dc98a791666ebc6a91fa023ce63733709f4894a7dc611"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b2b55b0448e9da68f56b696f313949cda1039e8ec7b5d294285335b53104b61"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c24574c7e92e2c56379706b9a3f07c1e0c7f2f87a41b6ee86653100c4ce343e5"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2b05e6ccbee333a8f4b8f4d7c244fdb7a979e90977ad9c51ea31261e2085ce0"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2c409ce1c219c091e47cb03feb3c4ed8c2b8e004efc940da0166aaee8f9d6c8"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d965e8b325f443ed3196db890d85dfebbb09f7384486a77461347f4adb1fa7f8"}, - {file = "pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f56af3a420fb1ffaf43ece3ea09c2d27c444e7c40dcb7c6e7cf57aae764f2b48"}, - {file = "pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b01a078dd4f9a52494370af21aa52964e0a96d4862ac64ff7cea06e0f12d2c5"}, - {file = "pydantic_core-2.23.3-cp311-none-win32.whl", hash = "sha256:560e32f0df04ac69b3dd818f71339983f6d1f70eb99d4d1f8e9705fb6c34a5c1"}, - {file = "pydantic_core-2.23.3-cp311-none-win_amd64.whl", hash = "sha256:c744fa100fdea0d000d8bcddee95213d2de2e95b9c12be083370b2072333a0fa"}, - {file = "pydantic_core-2.23.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e0ec50663feedf64d21bad0809f5857bac1ce91deded203efc4a84b31b2e4305"}, - {file = "pydantic_core-2.23.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:db6e6afcb95edbe6b357786684b71008499836e91f2a4a1e55b840955b341dbb"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98ccd69edcf49f0875d86942f4418a4e83eb3047f20eb897bffa62a5d419c8fa"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a678c1ac5c5ec5685af0133262103defb427114e62eafeda12f1357a12140162"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01491d8b4d8db9f3391d93b0df60701e644ff0894352947f31fff3e52bd5c801"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcf31facf2796a2d3b7fe338fe8640aa0166e4e55b4cb108dbfd1058049bf4cb"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7200fd561fb3be06827340da066df4311d0b6b8eb0c2116a110be5245dceb326"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc1636770a809dee2bd44dd74b89cc80eb41172bcad8af75dd0bc182c2666d4c"}, - {file = "pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:67a5def279309f2e23014b608c4150b0c2d323bd7bccd27ff07b001c12c2415c"}, - {file = "pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:748bdf985014c6dd3e1e4cc3db90f1c3ecc7246ff5a3cd4ddab20c768b2f1dab"}, - {file = "pydantic_core-2.23.3-cp312-none-win32.whl", hash = "sha256:255ec6dcb899c115f1e2a64bc9ebc24cc0e3ab097775755244f77360d1f3c06c"}, - {file = "pydantic_core-2.23.3-cp312-none-win_amd64.whl", hash = "sha256:40b8441be16c1e940abebed83cd006ddb9e3737a279e339dbd6d31578b802f7b"}, - {file = "pydantic_core-2.23.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6daaf5b1ba1369a22c8b050b643250e3e5efc6a78366d323294aee54953a4d5f"}, - {file = "pydantic_core-2.23.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d015e63b985a78a3d4ccffd3bdf22b7c20b3bbd4b8227809b3e8e75bc37f9cb2"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3fc572d9b5b5cfe13f8e8a6e26271d5d13f80173724b738557a8c7f3a8a3791"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f6bd91345b5163ee7448bee201ed7dd601ca24f43f439109b0212e296eb5b423"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc379c73fd66606628b866f661e8785088afe2adaba78e6bbe80796baf708a63"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbdce4b47592f9e296e19ac31667daed8753c8367ebb34b9a9bd89dacaa299c9"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3cf31edf405a161a0adad83246568647c54404739b614b1ff43dad2b02e6d5"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e22b477bf90db71c156f89a55bfe4d25177b81fce4aa09294d9e805eec13855"}, - {file = "pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0a0137ddf462575d9bce863c4c95bac3493ba8e22f8c28ca94634b4a1d3e2bb4"}, - {file = "pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:203171e48946c3164fe7691fc349c79241ff8f28306abd4cad5f4f75ed80bc8d"}, - {file = "pydantic_core-2.23.3-cp313-none-win32.whl", hash = "sha256:76bdab0de4acb3f119c2a4bff740e0c7dc2e6de7692774620f7452ce11ca76c8"}, - {file = "pydantic_core-2.23.3-cp313-none-win_amd64.whl", hash = "sha256:37ba321ac2a46100c578a92e9a6aa33afe9ec99ffa084424291d84e456f490c1"}, - {file = "pydantic_core-2.23.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d063c6b9fed7d992bcbebfc9133f4c24b7a7f215d6b102f3e082b1117cddb72c"}, - {file = "pydantic_core-2.23.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6cb968da9a0746a0cf521b2b5ef25fc5a0bee9b9a1a8214e0a1cfaea5be7e8a4"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edbefe079a520c5984e30e1f1f29325054b59534729c25b874a16a5048028d16"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbaaf2ef20d282659093913da9d402108203f7cb5955020bd8d1ae5a2325d1c4"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb539d7e5dc4aac345846f290cf504d2fd3c1be26ac4e8b5e4c2b688069ff4cf"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e6f33503c5495059148cc486867e1d24ca35df5fc064686e631e314d959ad5b"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04b07490bc2f6f2717b10c3969e1b830f5720b632f8ae2f3b8b1542394c47a8e"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:03795b9e8a5d7fda05f3873efc3f59105e2dcff14231680296b87b80bb327295"}, - {file = "pydantic_core-2.23.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c483dab0f14b8d3f0df0c6c18d70b21b086f74c87ab03c59250dbf6d3c89baba"}, - {file = "pydantic_core-2.23.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b2682038e255e94baf2c473dca914a7460069171ff5cdd4080be18ab8a7fd6e"}, - {file = "pydantic_core-2.23.3-cp38-none-win32.whl", hash = "sha256:f4a57db8966b3a1d1a350012839c6a0099f0898c56512dfade8a1fe5fb278710"}, - {file = "pydantic_core-2.23.3-cp38-none-win_amd64.whl", hash = "sha256:13dd45ba2561603681a2676ca56006d6dee94493f03d5cadc055d2055615c3ea"}, - {file = "pydantic_core-2.23.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82da2f4703894134a9f000e24965df73cc103e31e8c31906cc1ee89fde72cbd8"}, - {file = "pydantic_core-2.23.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dd9be0a42de08f4b58a3cc73a123f124f65c24698b95a54c1543065baca8cf0e"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89b731f25c80830c76fdb13705c68fef6a2b6dc494402987c7ea9584fe189f5d"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6de1ec30c4bb94f3a69c9f5f2182baeda5b809f806676675e9ef6b8dc936f28"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb68b41c3fa64587412b104294b9cbb027509dc2f6958446c502638d481525ef"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c3980f2843de5184656aab58698011b42763ccba11c4a8c35936c8dd6c7068c"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94f85614f2cba13f62c3c6481716e4adeae48e1eaa7e8bac379b9d177d93947a"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:510b7fb0a86dc8f10a8bb43bd2f97beb63cffad1203071dc434dac26453955cd"}, - {file = "pydantic_core-2.23.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1eba2f7ce3e30ee2170410e2171867ea73dbd692433b81a93758ab2de6c64835"}, - {file = "pydantic_core-2.23.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b259fd8409ab84b4041b7b3f24dcc41e4696f180b775961ca8142b5b21d0e70"}, - {file = "pydantic_core-2.23.3-cp39-none-win32.whl", hash = "sha256:40d9bd259538dba2f40963286009bf7caf18b5112b19d2b55b09c14dde6db6a7"}, - {file = "pydantic_core-2.23.3-cp39-none-win_amd64.whl", hash = "sha256:5a8cd3074a98ee70173a8633ad3c10e00dcb991ecec57263aacb4095c5efb958"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f399e8657c67313476a121a6944311fab377085ca7f490648c9af97fc732732d"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6b5547d098c76e1694ba85f05b595720d7c60d342f24d5aad32c3049131fa5c4"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dda0290a6f608504882d9f7650975b4651ff91c85673341789a476b1159f211"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65b6e5da855e9c55a0c67f4db8a492bf13d8d3316a59999cfbaf98cc6e401961"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:09e926397f392059ce0afdcac920df29d9c833256354d0c55f1584b0b70cf07e"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:87cfa0ed6b8c5bd6ae8b66de941cece179281239d482f363814d2b986b79cedc"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e61328920154b6a44d98cabcb709f10e8b74276bc709c9a513a8c37a18786cc4"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce3317d155628301d649fe5e16a99528d5680af4ec7aa70b90b8dacd2d725c9b"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e89513f014c6be0d17b00a9a7c81b1c426f4eb9224b15433f3d98c1a071f8433"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4f62c1c953d7ee375df5eb2e44ad50ce2f5aff931723b398b8bc6f0ac159791a"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2718443bc671c7ac331de4eef9b673063b10af32a0bb385019ad61dcf2cc8f6c"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d90e08b2727c5d01af1b5ef4121d2f0c99fbee692c762f4d9d0409c9da6541"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b676583fc459c64146debea14ba3af54e540b61762dfc0613dc4e98c3f66eeb"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:50e4661f3337977740fdbfbae084ae5693e505ca2b3130a6d4eb0f2281dc43b8"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:68f4cf373f0de6abfe599a38307f4417c1c867ca381c03df27c873a9069cda25"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:59d52cf01854cb26c46958552a21acb10dd78a52aa34c86f284e66b209db8cab"}, - {file = "pydantic_core-2.23.3.tar.gz", hash = "sha256:3cb0f65d8b4121c1b015c60104a685feb929a29d7cf204387c7f2688c7974690"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] @@ -1627,6 +1646,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "serpyco-rs" version = "1.11.0" @@ -1683,18 +1716,18 @@ typing-extensions = "*" [[package]] name = "setuptools" -version = "74.1.2" +version = "75.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-74.1.2-py3-none-any.whl", hash = "sha256:5f4c08aa4d3ebcb57a50c33b1b07e94315d7fc7230f7115e47fc99776c8ce308"}, - {file = "setuptools-74.1.2.tar.gz", hash = "sha256:95b40ed940a1c67eb70fc099094bd6e99c6ee7c23aa2306f4d2697ba7916f9c6"}, + {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, + {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] @@ -1758,13 +1791,13 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -1800,13 +1833,13 @@ files = [ [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-shopify/pyproject.toml b/airbyte-integrations/connectors/source-shopify/pyproject.toml index 433fe880da659..9062a5c4e184a 100644 --- a/airbyte-integrations/connectors/source-shopify/pyproject.toml +++ b/airbyte-integrations/connectors/source-shopify/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.5.3" +version = "2.5.4" name = "source-shopify" description = "Source CDK implementation for Shopify." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/shopify.md b/docs/integrations/sources/shopify.md index 77a220b7cd044..c079e5f4ad549 100644 --- a/docs/integrations/sources/shopify.md +++ b/docs/integrations/sources/shopify.md @@ -247,6 +247,7 @@ For all `Shopify GraphQL BULK` api requests these limitations are applied: https | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 2.5.4 | 2024-10-05 | [45759](https://github.com/airbytehq/airbyte/pull/45759) | Update dependencies | | 2.5.3 | 2024-09-27 | [46095](https://github.com/airbytehq/airbyte/pull/46095) | Fixed duplicates for `Product Images`, `Metafield Product Images` and `Metafield Products` streams for Incremental syncs | | 2.5.2 | 2024-09-17 | [45633](https://github.com/airbytehq/airbyte/pull/45633) | Adds `read_inventory` as a required scope for `product_variants` stream | | 2.5.1 | 2024-09-14 | [45255](https://github.com/airbytehq/airbyte/pull/45255) | Update dependencies | @@ -354,4 +355,4 @@ For all `Shopify GraphQL BULK` api requests these limitations are applied: https | 0.1.4 | 2021-06-09 | [3926](https://github.com/airbytehq/airbyte/pull/3926) | New attributes to Orders schema | | 0.1.3 | 2021-06-08 | [3787](https://github.com/airbytehq/airbyte/pull/3787) | Added Native Shopify Source Connector | - \ No newline at end of file + From 92317c34be0c0e8faaea75d5361b3ea4d50e05f5 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Sun, 6 Oct 2024 03:22:54 +0300 Subject: [PATCH 148/379] =?UTF-8?q?=F0=9F=90=99=20source-stripe:=20run=20u?= =?UTF-8?q?p-to-date=20pipeline=20[2024-10-05]=20(#43881)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-stripe/metadata.yaml | 2 +- .../connectors/source-stripe/poetry.lock | 8 +-- .../connectors/source-stripe/pyproject.toml | 2 +- docs/integrations/sources/stripe.md | 69 ++++++++++--------- 4 files changed, 41 insertions(+), 40 deletions(-) diff --git a/airbyte-integrations/connectors/source-stripe/metadata.yaml b/airbyte-integrations/connectors/source-stripe/metadata.yaml index 36dacd91219f3..6b9716d128469 100644 --- a/airbyte-integrations/connectors/source-stripe/metadata.yaml +++ b/airbyte-integrations/connectors/source-stripe/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: e094cb9a-26de-4645-8761-65c0c425d1de - dockerImageTag: 5.6.1 + dockerImageTag: 5.6.2 dockerRepository: airbyte/source-stripe documentationUrl: https://docs.airbyte.com/integrations/sources/stripe erdUrl: https://dbdocs.io/airbyteio/source-stripe?view=relationships diff --git a/airbyte-integrations/connectors/source-stripe/poetry.lock b/airbyte-integrations/connectors/source-stripe/poetry.lock index 74364cc49385a..da673414ae181 100644 --- a/airbyte-integrations/connectors/source-stripe/poetry.lock +++ b/airbyte-integrations/connectors/source-stripe/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "airbyte-cdk" @@ -716,13 +716,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.130" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.130-py3-none-any.whl", hash = "sha256:acf27d77e699d84b03045f3f226e78be1dffb3e756aa1a085f9993a45380e8b2"}, - {file = "langsmith-0.1.130.tar.gz", hash = "sha256:3e43f87655a86395133e3a745d5968667d4d05dc9a24c617f89224c8cbf54dce"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] diff --git a/airbyte-integrations/connectors/source-stripe/pyproject.toml b/airbyte-integrations/connectors/source-stripe/pyproject.toml index d4393510201fc..67531a49f17b7 100644 --- a/airbyte-integrations/connectors/source-stripe/pyproject.toml +++ b/airbyte-integrations/connectors/source-stripe/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.6.1" +version = "5.6.2" name = "source-stripe" description = "Source implementation for Stripe." authors = [ "Airbyte ",] diff --git a/docs/integrations/sources/stripe.md b/docs/integrations/sources/stripe.md index d61be90955820..bfcca491fac04 100644 --- a/docs/integrations/sources/stripe.md +++ b/docs/integrations/sources/stripe.md @@ -239,40 +239,41 @@ Each record is marked with `is_deleted` flag when the appropriate event happens | Version | Date | Pull Request | Subject | |:--------|:-----------|:----------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 5.6.1 | 2024-10-03 | [46327](https://github.com/airbytehq/airbyte/pull/46327) | Bump the cdk to 5.10.2 to stop using PrintBuffer optimization due to record count mismatches | -| 5.6.0 | 2024-09-10 | [44891](https://github.com/airbytehq/airbyte/pull/44891) | Update `Payment Methods` stream | -| 5.5.4 | 2024-09-09 | [45348](https://github.com/airbytehq/airbyte/pull/45348) | Remove `stripe` python package | -| 5.5.3 | 2024-09-03 | [45101](https://github.com/airbytehq/airbyte/pull/45101) | Fix regression following pagination issue fix | -| 5.5.2 | 2024-08-28 | [44862](https://github.com/airbytehq/airbyte/pull/44862) | Fix RFR pagination issue | -| 5.5.1 | 2024-08-10 | [43105](https://github.com/airbytehq/airbyte/pull/43105) | Update dependencies | -| 5.5.0 | 2024-08-08 | [43302](https://github.com/airbytehq/airbyte/pull/43302) | Fix problem with state not updating and upgrade cdk 4 | -| 5.4.12 | 2024-07-31 | [41985](https://github.com/airbytehq/airbyte/pull/41985) | Expand Invoice discounts and tax rates | -| 5.4.11 | 2024-07-27 | [42623](https://github.com/airbytehq/airbyte/pull/42623) | Update dependencies | -| 5.4.10 | 2024-07-20 | [42305](https://github.com/airbytehq/airbyte/pull/42305) | Update dependencies | -| 5.4.9 | 2024-07-13 | [41760](https://github.com/airbytehq/airbyte/pull/41760) | Update dependencies | -| 5.4.8 | 2024-07-10 | [41477](https://github.com/airbytehq/airbyte/pull/41477) | Update dependencies | -| 5.4.7 | 2024-07-09 | [40869](https://github.com/airbytehq/airbyte/pull/40869) | Update dependencies | -| 5.4.6 | 2024-07-08 | [41044](https://github.com/airbytehq/airbyte/pull/41044) | Use latest `CDK` version possible | -| 5.4.5 | 2024-06-25 | [40404](https://github.com/airbytehq/airbyte/pull/40404) | Update dependencies | -| 5.4.4 | 2024-06-22 | [40040](https://github.com/airbytehq/airbyte/pull/40040) | Update dependencies | -| 5.4.3 | 2024-06-06 | [39284](https://github.com/airbytehq/airbyte/pull/39284) | [autopull] Upgrade base image to v1.2.2 | -| 5.4.2 | 2024-06-11 | [39412](https://github.com/airbytehq/airbyte/pull/39412) | Removed `invoice.upcomming` event type from (incremental sync) for `Invoices` stream | -| 5.4.1 | 2024-06-11 | [39393](https://github.com/airbytehq/airbyte/pull/39393) | Added missing `event types` (incremental sync) for `Invoices` stream | -| 5.4.0 | 2024-06-05 | [39138](https://github.com/airbytehq/airbyte/pull/39138) | Fixed the `Refunds` stream missing data for the `incremental` sync | -| 5.3.9 | 2024-05-22 | [38550](https://github.com/airbytehq/airbyte/pull/38550) | Update authenticator package | -| 5.3.8 | 2024-05-15 | [38248](https://github.com/airbytehq/airbyte/pull/38248) | Replace AirbyteLogger with logging.Logger | -| 5.3.7 | 2024-04-24 | [36663](https://github.com/airbytehq/airbyte/pull/36663) | Schema descriptions | -| 5.3.6 | 2024-04-18 | [37448](https://github.com/airbytehq/airbyte/pull/37448) | Ensure AirbyteTracedException in concurrent CDK are emitted with the right type | -| 5.3.5 | 2024-04-18 | [37418](https://github.com/airbytehq/airbyte/pull/37418) | Ensure python return code != 0 in case of error | -| 5.3.4 | 2024-04-11 | [37406](https://github.com/airbytehq/airbyte/pull/37406) | Update CDK version to have partitioned state fix | -| 5.3.3 | 2024-04-11 | [37001](https://github.com/airbytehq/airbyte/pull/37001) | Update airbyte-cdk to flush print buffer for every message | -| 5.3.2 | 2024-04-11 | [36964](https://github.com/airbytehq/airbyte/pull/36964) | Update CDK version to fix breaking change before another devs work on it | -| 5.3.1 | 2024-04-10 | [36960](https://github.com/airbytehq/airbyte/pull/36960) | Remove unused imports | -| 5.3.0 | 2024-03-12 | [35978](https://github.com/airbytehq/airbyte/pull/35978) | Upgrade CDK to start emitting record counts with state and full refresh state | -| 5.2.4 | 2024-02-12 | [35137](https://github.com/airbytehq/airbyte/pull/35137) | Fix license in `pyproject.toml` | -| 5.2.3 | 2024-02-09 | [35068](https://github.com/airbytehq/airbyte/pull/35068) | Manage dependencies with Poetry. | -| 5.2.2 | 2024-01-31 | [34619](https://github.com/airbytehq/airbyte/pull/34619) | Events stream concurrent on incremental syncs | -| 5.2.1 | 2024-01-18 | [34495](https://github.com/airbytehq/airbyte/pull/34495) | Fix deadlock issue | +| 5.6.2 | 2024-10-05 | [43881](https://github.com/airbytehq/airbyte/pull/43881) | Update dependencies | +| 5.6.1 | 2024-10-03 | [46327](https://github.com/airbytehq/airbyte/pull/46327) | Bump the cdk to 5.10.2 to stop using PrintBuffer optimization due to record count mismatches | +| 5.6.0 | 2024-09-10 | [44891](https://github.com/airbytehq/airbyte/pull/44891) | Update `Payment Methods` stream | +| 5.5.4 | 2024-09-09 | [45348](https://github.com/airbytehq/airbyte/pull/45348) | Remove `stripe` python package | +| 5.5.3 | 2024-09-03 | [45101](https://github.com/airbytehq/airbyte/pull/45101) | Fix regression following pagination issue fix | +| 5.5.2 | 2024-08-28 | [44862](https://github.com/airbytehq/airbyte/pull/44862) | Fix RFR pagination issue | +| 5.5.1 | 2024-08-10 | [43105](https://github.com/airbytehq/airbyte/pull/43105) | Update dependencies | +| 5.5.0 | 2024-08-08 | [43302](https://github.com/airbytehq/airbyte/pull/43302) | Fix problem with state not updating and upgrade cdk 4 | +| 5.4.12 | 2024-07-31 | [41985](https://github.com/airbytehq/airbyte/pull/41985) | Expand Invoice discounts and tax rates | +| 5.4.11 | 2024-07-27 | [42623](https://github.com/airbytehq/airbyte/pull/42623) | Update dependencies | +| 5.4.10 | 2024-07-20 | [42305](https://github.com/airbytehq/airbyte/pull/42305) | Update dependencies | +| 5.4.9 | 2024-07-13 | [41760](https://github.com/airbytehq/airbyte/pull/41760) | Update dependencies | +| 5.4.8 | 2024-07-10 | [41477](https://github.com/airbytehq/airbyte/pull/41477) | Update dependencies | +| 5.4.7 | 2024-07-09 | [40869](https://github.com/airbytehq/airbyte/pull/40869) | Update dependencies | +| 5.4.6 | 2024-07-08 | [41044](https://github.com/airbytehq/airbyte/pull/41044) | Use latest `CDK` version possible | +| 5.4.5 | 2024-06-25 | [40404](https://github.com/airbytehq/airbyte/pull/40404) | Update dependencies | +| 5.4.4 | 2024-06-22 | [40040](https://github.com/airbytehq/airbyte/pull/40040) | Update dependencies | +| 5.4.3 | 2024-06-06 | [39284](https://github.com/airbytehq/airbyte/pull/39284) | [autopull] Upgrade base image to v1.2.2 | +| 5.4.2 | 2024-06-11 | [39412](https://github.com/airbytehq/airbyte/pull/39412) | Removed `invoice.upcomming` event type from (incremental sync) for `Invoices` stream | +| 5.4.1 | 2024-06-11 | [39393](https://github.com/airbytehq/airbyte/pull/39393) | Added missing `event types` (incremental sync) for `Invoices` stream | +| 5.4.0 | 2024-06-05 | [39138](https://github.com/airbytehq/airbyte/pull/39138) | Fixed the `Refunds` stream missing data for the `incremental` sync | +| 5.3.9 | 2024-05-22 | [38550](https://github.com/airbytehq/airbyte/pull/38550) | Update authenticator package | +| 5.3.8 | 2024-05-15 | [38248](https://github.com/airbytehq/airbyte/pull/38248) | Replace AirbyteLogger with logging.Logger | +| 5.3.7 | 2024-04-24 | [36663](https://github.com/airbytehq/airbyte/pull/36663) | Schema descriptions | +| 5.3.6 | 2024-04-18 | [37448](https://github.com/airbytehq/airbyte/pull/37448) | Ensure AirbyteTracedException in concurrent CDK are emitted with the right type | +| 5.3.5 | 2024-04-18 | [37418](https://github.com/airbytehq/airbyte/pull/37418) | Ensure python return code != 0 in case of error | +| 5.3.4 | 2024-04-11 | [37406](https://github.com/airbytehq/airbyte/pull/37406) | Update CDK version to have partitioned state fix | +| 5.3.3 | 2024-04-11 | [37001](https://github.com/airbytehq/airbyte/pull/37001) | Update airbyte-cdk to flush print buffer for every message | +| 5.3.2 | 2024-04-11 | [36964](https://github.com/airbytehq/airbyte/pull/36964) | Update CDK version to fix breaking change before another devs work on it | +| 5.3.1 | 2024-04-10 | [36960](https://github.com/airbytehq/airbyte/pull/36960) | Remove unused imports | +| 5.3.0 | 2024-03-12 | [35978](https://github.com/airbytehq/airbyte/pull/35978) | Upgrade CDK to start emitting record counts with state and full refresh state | +| 5.2.4 | 2024-02-12 | [35137](https://github.com/airbytehq/airbyte/pull/35137) | Fix license in `pyproject.toml` | +| 5.2.3 | 2024-02-09 | [35068](https://github.com/airbytehq/airbyte/pull/35068) | Manage dependencies with Poetry. | +| 5.2.2 | 2024-01-31 | [34619](https://github.com/airbytehq/airbyte/pull/34619) | Events stream concurrent on incremental syncs | +| 5.2.1 | 2024-01-18 | [34495](https://github.com/airbytehq/airbyte/pull/34495) | Fix deadlock issue | | 5.2.0 | 2024-01-18 | [34347](https://github.com/airbytehq/airbyte/pull//34347) | Add new fields invoices and subscription streams. Upgrade the CDK for better memory usage. | | 5.1.3 | 2023-12-18 | [33306](https://github.com/airbytehq/airbyte/pull/33306/) | Adding integration tests | | 5.1.2 | 2024-01-04 | [33414](https://github.com/airbytehq/airbyte/pull/33414) | Prepare for airbyte-lib | From 917e1fc731d5356896f56918cc3bf9a42af38896 Mon Sep 17 00:00:00 2001 From: Natalie Kwong <38087517+nataliekwong@users.noreply.github.com> Date: Sat, 5 Oct 2024 22:26:22 -0700 Subject: [PATCH 149/379] docs: Show PyAirbyte as product (#46358) --- docs/using-airbyte/getting-started/readme.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/using-airbyte/getting-started/readme.md b/docs/using-airbyte/getting-started/readme.md index 2fdba4fa0bf4e..a44a2268557dd 100644 --- a/docs/using-airbyte/getting-started/readme.md +++ b/docs/using-airbyte/getting-started/readme.md @@ -16,18 +16,23 @@ Whether you're part of a large organization managing complex data pipelines or a + + + + + + + - - - + - + From b806e7c808479dc3f994a07a0f0683c0dac5994e Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Mon, 7 Oct 2024 01:01:46 +0100 Subject: [PATCH 150/379] =?UTF-8?q?=E2=9C=A8=20Source=20Trustpilot=20:=20M?= =?UTF-8?q?igrate=20to=20Manifest-only=20(#46529)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Octavia Squidington III --- .../connectors/source-trustpilot/README.md | 81 +- .../connectors/source-trustpilot/__init__.py | 3 - .../acceptance-test-config.yml | 2 +- .../connectors/source-trustpilot/main.py | 8 - .../source-trustpilot/manifest.yaml | 822 ++++++++++ .../source-trustpilot/metadata.yaml | 8 +- .../connectors/source-trustpilot/poetry.lock | 1452 ----------------- .../source-trustpilot/pyproject.toml | 28 - .../source_trustpilot/__init__.py | 8 - .../source_trustpilot/manifest.yaml | 339 ---- .../source_trustpilot/run.py | 14 - .../schemas/business_units.json | 76 - .../schemas/configured_business_units.json | 76 - .../schemas/private_reviews.json | 255 --- .../source_trustpilot/source.py | 18 - docs/integrations/sources/trustpilot.md | 1 + 16 files changed, 855 insertions(+), 2336 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-trustpilot/__init__.py delete mode 100644 airbyte-integrations/connectors/source-trustpilot/main.py create mode 100644 airbyte-integrations/connectors/source-trustpilot/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-trustpilot/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-trustpilot/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-trustpilot/source_trustpilot/__init__.py delete mode 100644 airbyte-integrations/connectors/source-trustpilot/source_trustpilot/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-trustpilot/source_trustpilot/run.py delete mode 100644 airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/business_units.json delete mode 100644 airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/configured_business_units.json delete mode 100644 airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/private_reviews.json delete mode 100644 airbyte-integrations/connectors/source-trustpilot/source_trustpilot/source.py diff --git a/airbyte-integrations/connectors/source-trustpilot/README.md b/airbyte-integrations/connectors/source-trustpilot/README.md index 9ffa24b435b54..3566bdb36b35e 100644 --- a/airbyte-integrations/connectors/source-trustpilot/README.md +++ b/airbyte-integrations/connectors/source-trustpilot/README.md @@ -1,90 +1,63 @@ # Trustpilot source connector +This directory contains the manifest-only connector for `source-trustpilot`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -This is the repository for the Trustpilot configuration based source connector. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/trustpilot). +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/trustpilot). ## Local development -### Prerequisites -* Python (~=3.9) -* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! +If you prefer to develop locally, you can follow the instructions below. -### Installing the connector -From this connector directory, run: -```bash -poetry install --with dev -``` - - -### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/trustpilot) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_trustpilot/spec.yaml` file or spec in the `manifest.yaml`. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - - -### Locally running the connector - -``` -poetry run source-trustpilot spec -poetry run source-trustpilot check --config secrets/config.json -poetry run source-trustpilot discover --config secrets/config.json -poetry run source-trustpilot read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` +### Building the docker image -### Running unit tests -To run unit tests locally, from the connector directory run: -``` -poetry run pytest unit_tests -``` +You can build any manifest-only connector with `airbyte-ci`: -### Building the docker image 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: + ```bash airbyte-ci connectors --name=source-trustpilot build ``` An image will be available on your host with the tag `airbyte/source-trustpilot:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/trustpilot) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. ### Running as a docker container -Then run any of the connector commands as follows: -``` + +Then run any of the standard source connector commands: + +```bash docker run --rm airbyte/source-trustpilot:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-trustpilot:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-trustpilot:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-trustpilot:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite -You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -```bash -airbyte-ci connectors --name=source-trustpilot test -``` +### Running the CI test suite -### Customizing acceptance Tests -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. +You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -### Dependency Management -All of your dependencies should be managed via Poetry. -To add a new dependency, run: ```bash -poetry add +airbyte-ci connectors --name=source-trustpilot test ``` -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-trustpilot test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + +If you want to contribute changes to `source-trustpilot`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-trustpilot test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/trustpilot.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. diff --git a/airbyte-integrations/connectors/source-trustpilot/__init__.py b/airbyte-integrations/connectors/source-trustpilot/__init__.py deleted file mode 100644 index c941b30457953..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-trustpilot/acceptance-test-config.yml b/airbyte-integrations/connectors/source-trustpilot/acceptance-test-config.yml index 3a913874deafa..8323c75d3926d 100644 --- a/airbyte-integrations/connectors/source-trustpilot/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-trustpilot/acceptance-test-config.yml @@ -5,7 +5,7 @@ test_strictness_level: low acceptance_tests: spec: tests: - - spec_path: "source_trustpilot/spec.yaml" + - spec_path: "manifest.yaml" backward_compatibility_tests_config: disable_for_version: 0.1.0 connection: diff --git a/airbyte-integrations/connectors/source-trustpilot/main.py b/airbyte-integrations/connectors/source-trustpilot/main.py deleted file mode 100644 index 27e409441e33d..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_trustpilot.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-trustpilot/manifest.yaml b/airbyte-integrations/connectors/source-trustpilot/manifest.yaml new file mode 100644 index 0000000000000..8341e513b9be6 --- /dev/null +++ b/airbyte-integrations/connectors/source-trustpilot/manifest.yaml @@ -0,0 +1,822 @@ +version: 5.10.2 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - configured_business_units + +definitions: + streams: + configured_business_units: + type: DeclarativeStream + name: configured_business_units + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /business-units/find + http_method: GET + request_headers: + apikey: "{{ config['client_id'] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + - 403 + - 404 + error_message: Credentails might be expired, please validate + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: ListPartitionRouter + values: "{{ config['business_units'] }}" + cursor_field: business_unit + request_option: + type: RequestOption + field_name: name + inject_into: request_parameter + transformations: + - type: RemoveFields + field_pointers: + - - links + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/configured_business_units" + private_reviews: + type: DeclarativeStream + name: private_reviews + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /private/business-units/{{ stream_partition['business_unit_id'] + }}/reviews + http_method: GET + request_parameters: + orderBy: createdat.desc + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + - 403 + - 404 + error_message: >- + Business account needs oauth flow, refer documentation for + more details + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - reviews + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: business_unit_id + stream: + $ref: "#/definitions/streams/configured_business_units" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: createdAt + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%SZ" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + is_data_feed: true + transformations: + - type: RemoveFields + field_pointers: + - - links + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/private_reviews" + business_units: + type: DeclarativeStream + name: business_units + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /business-units/all + http_method: GET + request_headers: + apikey: "{{ config['client_id'] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + - 403 + - 404 + error_message: Credentails might be expired, please validate + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - businessUnits + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 1000 + start_from_page: 1 + transformations: + - type: RemoveFields + field_pointers: + - - links + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/business_units" + base_requester: + type: HttpRequester + url_base: https://api.trustpilot.com/v1 + authenticator: + type: SelectiveAuthenticator + authenticators: + apikey: + type: ApiKeyAuthenticator + header: apikey + api_token: "{{ config['client_id'] }}" + oauth2.0: + type: OAuthAuthenticator + client_id: "{{ config['credentials']['client_id'] }}" + grant_type: refresh_token + client_secret: "{{ config['credentials']['client_secret'] }}" + refresh_token: "{{ config['credentials']['refresh_token'] }}" + access_token_name: access_token + token_refresh_endpoint: >- + https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/refresh + authenticator_selection_path: + - credentials + - auth_type + +streams: + - $ref: "#/definitions/streams/configured_business_units" + - $ref: "#/definitions/streams/private_reviews" + - $ref: "#/definitions/streams/business_units" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - credentials + - start_date + - business_units + properties: + credentials: + type: object + oneOf: + - type: object + title: OAuth 2.0 + required: + - client_id + - client_secret + - refresh_token + - access_token + - token_expiry_date + properties: + auth_type: + type: string + const: oauth2.0 + client_id: + type: string + description: >- + The API key of the Trustpilot API application. (represents the + OAuth Client ID) + title: API key + airbyte_secret: true + access_token: + type: string + description: Access Token for making authenticated requests. + title: Access Token + airbyte_secret: true + client_secret: + type: string + description: >- + The Secret of the Trustpilot API application. (represents the + OAuth Client Secret) + title: Secret + airbyte_secret: true + refresh_token: + type: string + description: The key to refresh the expired access_token. + title: Refresh token + airbyte_secret: true + token_expiry_date: + type: string + description: The date-time when the access token should be refreshed. + title: Token expiry date time + format: date-time + - type: object + description: >- + The API key authentication method gives you access to only the + streams which are part of the Public API. When you want to get + streams available via the Consumer API (e.g. the private reviews) + you need to use authentication method OAuth 2.0. + title: API Key + required: + - client_id + properties: + auth_type: + type: string + const: apikey + client_id: + type: string + description: The API key of the Trustpilot API application. + title: API key + airbyte_secret: true + order: 0 + title: Authorization Method + start_date: + type: string + description: >- + For streams with sync. method incremental the start date time to be + used + title: Start Date + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + examples: + - "%Y-%m-%dT%H:%M:%SZ" + order: 1 + business_units: + type: array + description: >- + The names of business units which shall be synchronized. Some streams + e.g. configured_business_units or private_reviews use this + configuration. + items: + type: string + title: Business Unit names + examples: + - mydomain.com + - www.mydomain.com + order: 2 + additionalProperties: true + +metadata: + autoImportSchema: + configured_business_units: true + private_reviews: true + business_units: true + yamlComponents: + global: + - authenticator + testedStreams: + configured_business_units: + streamHash: 8ddb9852da3424bf2d6c2d1e115a46d251788a45 + private_reviews: + streamHash: 22084eb8f332c0c589e760f9a7362281accda700 + business_units: + streamHash: 8addc2b46355dee47731cc4363832e9775ee8824 + assist: {} + +schemas: + configured_business_units: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + id: + type: + - string + - 'null' + displayName: + type: + - string + - 'null' + name: + type: + - object + - 'null' + properties: + identifying: + type: + - string + - 'null' + referring: + type: + - array + - 'null' + items: + type: + - string + - 'null' + websiteUrl: + type: + - string + - 'null' + country: + type: + - string + - 'null' + numberOfReviews: + type: + - object + - 'null' + properties: + total: + type: + - integer + - 'null' + usedForTrustScoreCalculation: + type: + - integer + - 'null' + oneStar: + type: + - integer + - 'null' + twoStars: + type: + - integer + - 'null' + threeStars: + type: + - integer + - 'null' + fourStars: + type: + - integer + - 'null' + fiveStars: + type: + - integer + - 'null' + status: + type: + - string + - 'null' + score: + type: + - object + - 'null' + properties: + trustScore: + type: + - number + - 'null' + stars: + type: + - number + - 'null' + badFit: + type: + - boolean + - 'null' + private_reviews: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + id: + type: + - string + - 'null' + consumer: + type: + - object + - 'null' + properties: + id: + type: + - string + - 'null' + displayName: + type: + - string + - 'null' + displayLocation: + type: + - string + - 'null' + numberOfReviews: + type: integer + businessUnit: + type: + - object + - 'null' + properties: + id: + type: + - string + - 'null' + identifyingName: + type: + - string + - 'null' + displayName: + type: + - string + - 'null' + stars: + type: + - integer + - 'null' + title: + type: + - string + - 'null' + text: + type: + - string + - 'null' + language: + type: + - string + - 'null' + location: + type: + - object + - 'null' + properties: + externalId: + type: + - string + - 'null' + urlFormattedName: + type: + - string + - 'null' + id: + type: + - string + - 'null' + name: + type: + - string + - 'null' + createdAt: + type: + - string + - 'null' + format: date-time + updatedAt: + type: + - string + - 'null' + format: date-time + experiencedAt: + type: + - string + - 'null' + format: date-time + referralEmail: + type: + - string + - 'null' + referenceId: + type: + - string + - 'null' + source: + type: + - string + - 'null' + companyReply: + type: + - object + - 'null' + properties: + createdAt: + type: + - string + - 'null' + format: date-time + updatedAt: + type: + - string + - 'null' + format: date-time + text: + type: + - string + - 'null' + authorBusinessUserId: + type: + - string + - 'null' + tags: + type: + - array + - 'null' + items: + type: + - object + - 'null' + properties: + group: + type: + - string + - 'null' + value: + type: + - string + - 'null' + findReviewer: + type: + - object + - 'null' + properties: + isEligible: + type: + - boolean + - 'null' + requests: + type: + - array + - 'null' + items: + type: + - object + - 'null' + properties: + status: + type: + - string + - 'null' + consumerResponse: + type: + - object + - 'null' + properties: + referenceId: + type: + - string + - 'null' + name: + type: + - string + - 'null' + submittedAt: + type: + - string + - 'null' + format: date-time + phoneNumber: + type: + - string + - 'null' + address: + type: + - string + - 'null' + message: + type: + - string + - 'null' + email: + type: + - string + - 'null' + businessUserMessage: + type: + - string + - 'null' + id: + type: + - string + - 'null' + created: + type: + - string + - 'null' + format: date-time + isVerified: + type: + - boolean + - 'null' + numberOfLikes: + type: integer + status: + type: + - 'null' + - string + reportData: + type: + - object + - 'null' + properties: + source: + type: + - string + - 'null' + publicComment: + type: + - string + - 'null' + createdAt: + type: + - string + - 'null' + format: date-time + reasons: + type: + - array + - 'null' + items: + type: 'null' + "$comment": Data structure at this point is unknown + complianceLabels: + type: + - array + - 'null' + items: + type: + - string + - 'null' + countsTowardsTrustScore: + type: + - boolean + - 'null' + countsTowardsLocationTrustScore: + type: + - boolean + - 'null' + invitation: + type: + - object + - 'null' + properties: + businessUnitId: + type: + - string + - 'null' + businessUnitHistory: + type: + - array + - 'null' + items: + type: + - object + - 'null' + properties: + identifyingName: + type: + - string + - 'null' + displayName: + type: + - string + - 'null' + businessUnitId: + type: + - string + - 'null' + changeDate: + type: + - string + - 'null' + format: date-time + reviewVerificationLevel: + type: + - string + - 'null' + business_units: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + id: + type: + - string + - 'null' + displayName: + type: + - string + - 'null' + name: + type: object + properties: + identifying: + type: + - string + - 'null' + referring: + type: + - array + - 'null' + items: + type: + - string + - 'null' + websiteUrl: + type: + - string + - 'null' + country: + type: + - string + - 'null' + numberOfReviews: + type: + - object + - 'null' + properties: + total: + type: + - integer + - 'null' + usedForTrustScoreCalculation: + type: + - integer + - 'null' + oneStar: + type: + - integer + - 'null' + twoStars: + type: + - integer + - 'null' + threeStars: + type: + - integer + - 'null' + fourStars: + type: + - integer + - 'null' + fiveStars: + type: + - integer + - 'null' + status: + type: + - string + - 'null' + score: + type: + - object + - 'null' + properties: + trustScore: + type: + - number + - 'null' + stars: + type: + - number + - 'null' + badFit: + type: + - boolean + - 'null' + diff --git a/airbyte-integrations/connectors/source-trustpilot/metadata.yaml b/airbyte-integrations/connectors/source-trustpilot/metadata.yaml index 73545c637975e..573a10aa1f6c5 100644 --- a/airbyte-integrations/connectors/source-trustpilot/metadata.yaml +++ b/airbyte-integrations/connectors/source-trustpilot/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: d7e23ea6-d741-4314-9209-a33c91a2e945 - dockerImageTag: 0.2.13 + dockerImageTag: 0.3.0 dockerRepository: airbyte/source-trustpilot githubIssueLabel: source-trustpilot icon: trustpilot.svg @@ -10,7 +10,7 @@ data: name: TrustPilot remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-trustpilot registryOverrides: cloud: @@ -20,8 +20,8 @@ data: releaseStage: alpha documentationUrl: https://docs.airbyte.com/integrations/sources/trustpilot tags: - - language:python - cdk:low-code + - language:manifest-only ab_internal: sl: 100 ql: 100 @@ -40,5 +40,5 @@ data: type: GSM alias: airbyte-connector-testing-secret-store connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-trustpilot/poetry.lock b/airbyte-integrations/connectors/source-trustpilot/poetry.lock deleted file mode 100644 index cb49d9e5d5a19..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/poetry.lock +++ /dev/null @@ -1,1452 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "1.8.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-1.8.0-py3-none-any.whl", hash = "sha256:ca23d7877005fe87ffc4a3a3de29ee55eed625d874eb59b49664b156f9ae9ee2"}, - {file = "airbyte_cdk-1.8.0.tar.gz", hash = "sha256:ac82fbfd6b650b7ed015900748e30fdd2a4c574caa54d1bcc03cb584a17f1533"}, -] - -[package.dependencies] -airbyte-protocol-models = ">=0.9.0,<1.0" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.1.6,<3.0.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.13.0" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.13.0-py3-none-any.whl", hash = "sha256:fa8b7e1a85f9ae171c50b30d23b317da1740d051994fd3ed648f9dfba00250e2"}, - {file = "airbyte_protocol_models-0.13.0.tar.gz", hash = "sha256:09d8900ba8674a9315fa1799d17026f6b38d2187c08160449540ee93331ed2e7"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.8" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.2.0" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.2.0-py3-none-any.whl", hash = "sha256:b330a375ded0a0d2ed404440f6c6a715deae5313af40bbb01c8a41d891900576"}, - {file = "dpath-2.2.0.tar.gz", hash = "sha256:34f7e630dc55ea3f219e555726f5da4b4b25f2200319c8e6902c394258dd6a3e"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.6" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.131" -description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, - {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} -requests = ">=2,<3" -requests-toolbelt = ">=1.0.0,<2.0.0" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "orjson" -version = "3.10.7" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "8.3.3" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "tomli" -version = "2.0.2" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, - {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "5b0cd125a4941563e47d35d2a1603eb16db2c74dd30a0ea65043dfabe1a82cd9" diff --git a/airbyte-integrations/connectors/source-trustpilot/pyproject.toml b/airbyte-integrations/connectors/source-trustpilot/pyproject.toml deleted file mode 100644 index e2fd3f80fb0c4..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "0.2.13" -name = "source-trustpilot" -description = "Source implementation for Trustpilot." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/trustpilot" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_trustpilot" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "^1" - -[tool.poetry.scripts] -source-trustpilot = "source_trustpilot.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "*" -pytest-mock = "*" -pytest = "*" diff --git a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/__init__.py b/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/__init__.py deleted file mode 100644 index d5de7f3852e22..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceTrustpilot - -__all__ = ["SourceTrustpilot"] diff --git a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/manifest.yaml b/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/manifest.yaml deleted file mode 100644 index 2bd553f6599c3..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/manifest.yaml +++ /dev/null @@ -1,339 +0,0 @@ -version: 0.71.0 -type: DeclarativeSource - -definitions: - oauth_authenticator: - type: OAuthAuthenticator - client_id: "{{ config['credentials']['client_id'] }}" - client_secret: "{{ config['credentials']['client_secret'] }}" - refresh_token: "{{ config['credentials']['refresh_token'] }}" - token_refresh_endpoint: "https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/refresh" - grant_type: refresh_token - access_token_name: access_token - - apikey_authenticator: - type: ApiKeyAuthenticator - header: apikey - api_token: "{{ config['client_id'] }}" - - selective_authenticator: - type: SelectiveAuthenticator - authenticator_selection_path: ["credentials", "auth_type"] - authenticators: - oauth2.0: "#/definitions/oauth_authenticator" - apikey: "#/definitions/apikey_authenticator" - -check: - type: CheckStream - stream_names: - - configured_business_units -streams: - - name: configured_business_units - type: DeclarativeStream - retriever: - type: SimpleRetriever - paginator: - type: NoPagination - requester: - path: /business-units/find - type: HttpRequester - url_base: https://api.trustpilot.com/v1 - http_method: GET - authenticator: - $ref: "#/definitions/selective_authenticator" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - type: HttpResponseFilter - action: IGNORE - http_codes: - - 400 - - 403 - - 404 - error_message: Credentails might be expired, please validate - request_headers: - apikey: "{{ config['client_id'] }}" - request_body_json: {} - request_parameters: {} - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - partition_router: - - type: ListPartitionRouter - values: "{{ config['business_units'] }}" - cursor_field: business_unit - request_option: - type: RequestOption - field_name: name - inject_into: request_parameter - primary_key: - - id - transformations: - - type: RemoveFields - field_pointers: - - ["links"] - - name: private_reviews - type: DeclarativeStream - retriever: - type: SimpleRetriever - paginator: - type: DefaultPaginator - page_size_option: - type: RequestOption - field_name: perPage - inject_into: request_parameter - page_token_option: - type: RequestOption - field_name: page - inject_into: request_parameter - pagination_strategy: - type: PageIncrement - page_size: 100 - start_from_page: 1 - requester: - path: >- - /private/business-units/{{ stream_partition['business_unit_id'] - }}/reviews - type: HttpRequester - url_base: https://api.trustpilot.com/v1 - http_method: GET - authenticator: - $ref: "#/definitions/selective_authenticator" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - type: HttpResponseFilter - action: IGNORE - http_codes: - - 400 - - 403 - - 404 - error_message: Business account needs oauth flow, refer documentation for more details - request_headers: {} - request_body_json: {} - request_parameters: - orderBy: createdat.desc - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: - - reviews - partition_router: - - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - stream: - name: configured_business_units - type: DeclarativeStream - retriever: - type: SimpleRetriever - paginator: - type: NoPagination - requester: - path: /business-units/find - type: HttpRequester - url_base: https://api.trustpilot.com/v1 - http_method: GET - authenticator: - $ref: "#/definitions/selective_authenticator" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - type: HttpResponseFilter - action: IGNORE - http_codes: - - 400 - - 403 - - 404 - error_message: Credentails might be expired, please validate - request_headers: - apikey: "{{ config['client_id'] }}" - request_body_json: {} - request_parameters: {} - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - partition_router: - - type: ListPartitionRouter - values: "{{ config['business_units'] }}" - cursor_field: business_unit - request_option: - type: RequestOption - field_name: name - inject_into: request_parameter - primary_key: - - id - parent_key: id - partition_field: business_unit_id - primary_key: - - id - transformations: - - type: RemoveFields - field_pointers: - - ["links"] - incremental_sync: - type: DatetimeBasedCursor - cursor_field: createdAt - is_data_feed: true - start_datetime: - type: MinMaxDatetime - datetime: "{{ config['start_date'] }}" - datetime_format: "%Y-%m-%dT%H:%M:%SZ" - datetime_format: "%Y-%m-%dT%H:%M:%SZ" - cursor_datetime_formats: - - "%Y-%m-%dT%H:%M:%SZ" - - name: business_units - type: DeclarativeStream - retriever: - type: SimpleRetriever - paginator: - type: DefaultPaginator - page_size_option: - type: RequestOption - field_name: perPage - inject_into: request_parameter - page_token_option: - type: RequestOption - field_name: page - inject_into: request_parameter - pagination_strategy: - type: PageIncrement - page_size: 1000 - start_from_page: 1 - requester: - path: /business-units/all - type: HttpRequester - url_base: https://api.trustpilot.com/v1 - http_method: GET - authenticator: - $ref: "#/definitions/selective_authenticator" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - type: HttpResponseFilter - action: IGNORE - http_codes: - - 400 - - 403 - - 404 - error_message: Credentails might be expired, please validate - request_headers: - apikey: "{{ config['client_id'] }}" - request_body_json: {} - request_parameters: {} - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: - - businessUnits - primary_key: - - id - transformations: - - type: RemoveFields - field_pointers: - - ["links"] -spec: - type: Spec - documentation_url: https://docs.airbyte.com/integrations/sources/trustpilot - connection_specification: - $schema: http://json-schema.org/draft-07/schema# - title: Trustpilot Spec - type: object - additionalProperties: true - required: - - credentials - - business_units - - start_date - properties: - credentials: - title: Authorization Method - type: object - order: 0 - oneOf: - - type: object - title: "OAuth 2.0" - required: - - client_id - - client_secret - - refresh_token - - access_token - - token_expiry_date - properties: - auth_type: - type: string - const: "oauth2.0" - client_id: - type: string - title: API key - description: The API key of the Trustpilot API application. (represents the OAuth Client ID) - airbyte_secret: true - client_secret: - type: string - title: Secret - description: The Secret of the Trustpilot API application. (represents the OAuth Client Secret) - airbyte_secret: true - access_token: - type: string - title: Access Token - description: Access Token for making authenticated requests. - airbyte_secret: true - token_expiry_date: - type: string - title: Token expiry date time - description: The date-time when the access token should be refreshed. - format: date-time - refresh_token: - type: string - title: Refresh token - description: The key to refresh the expired access_token. - airbyte_secret: true - - - type: object - title: "API Key" - description: The API key authentication method gives you access to only the streams which are part of the Public API. When you want to get streams available via the Consumer API (e.g. the private reviews) you need to use authentication method OAuth 2.0. - required: - - client_id - properties: - auth_type: - type: string - const: "apikey" - client_id: - type: string - title: API key - description: The API key of the Trustpilot API application. - airbyte_secret: true - business_units: - type: array - items: - type: string - title: Business Unit names - description: The names of business units which shall be synchronized. Some streams e.g. configured_business_units or private_reviews use this configuration. - examples: - - mydomain.com - - www.mydomain.com - start_date: - type: string - title: Start Date - description: For streams with sync. method incremental the start date time to be used - pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ - examples: - - "%Y-%m-%dT%H:%M:%SZ" -metadata: - autoImportSchema: - business_units: true - private_reviews: true - configured_business_units: true diff --git a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/run.py b/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/run.py deleted file mode 100644 index 40c488dbf9a74..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_trustpilot import SourceTrustpilot - - -def run(): - source = SourceTrustpilot() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/business_units.json b/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/business_units.json deleted file mode 100644 index ba99626421d1b..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/business_units.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": ["string", "null"] - }, - "displayName": { - "type": ["string", "null"] - }, - "name": { - "type": "object", - "properties": { - "identifying": { - "type": ["string", "null"] - }, - "referring": { - "type": ["array", "null"], - "items": { - "type": ["string", "null"] - } - } - } - }, - "websiteUrl": { - "type": ["string", "null"] - }, - "country": { - "type": ["string", "null"] - }, - "numberOfReviews": { - "type": ["object", "null"], - "properties": { - "total": { - "type": ["integer", "null"] - }, - "usedForTrustScoreCalculation": { - "type": ["integer", "null"] - }, - "oneStar": { - "type": ["integer", "null"] - }, - "twoStars": { - "type": ["integer", "null"] - }, - "threeStars": { - "type": ["integer", "null"] - }, - "fourStars": { - "type": ["integer", "null"] - }, - "fiveStars": { - "type": ["integer", "null"] - } - } - }, - "status": { - "type": ["string", "null"] - }, - "score": { - "type": ["object", "null"], - "properties": { - "trustScore": { - "type": ["number", "null"] - }, - "stars": { - "type": ["number", "null"] - } - } - }, - "badFit": { - "type": ["boolean", "null"] - } - } -} diff --git a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/configured_business_units.json b/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/configured_business_units.json deleted file mode 100644 index deda7dccafa96..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/configured_business_units.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": ["string", "null"] - }, - "displayName": { - "type": ["string", "null"] - }, - "name": { - "type": ["object", "null"], - "properties": { - "identifying": { - "type": ["string", "null"] - }, - "referring": { - "type": ["array", "null"], - "items": { - "type": ["string", "null"] - } - } - } - }, - "websiteUrl": { - "type": ["string", "null"] - }, - "country": { - "type": ["string", "null"] - }, - "numberOfReviews": { - "type": ["object", "null"], - "properties": { - "total": { - "type": ["integer", "null"] - }, - "usedForTrustScoreCalculation": { - "type": ["integer", "null"] - }, - "oneStar": { - "type": ["integer", "null"] - }, - "twoStars": { - "type": ["integer", "null"] - }, - "threeStars": { - "type": ["integer", "null"] - }, - "fourStars": { - "type": ["integer", "null"] - }, - "fiveStars": { - "type": ["integer", "null"] - } - } - }, - "status": { - "type": ["string", "null"] - }, - "score": { - "type": ["object", "null"], - "properties": { - "trustScore": { - "type": ["number", "null"] - }, - "stars": { - "type": ["number", "null"] - } - } - }, - "badFit": { - "type": ["boolean", "null"] - } - } -} diff --git a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/private_reviews.json b/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/private_reviews.json deleted file mode 100644 index ce6e97b9d9643..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/schemas/private_reviews.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": ["string", "null"] - }, - "consumer": { - "type": ["object", "null"], - "properties": { - "id": { - "type": ["string", "null"] - }, - "displayName": { - "type": ["string", "null"] - }, - "displayLocation": { - "type": ["string", "null"] - }, - "numberOfReviews": { - "type": "integer" - } - } - }, - "businessUnit": { - "type": ["object", "null"], - "properties": { - "id": { - "type": ["string", "null"] - }, - "identifyingName": { - "type": ["string", "null"] - }, - "displayName": { - "type": ["string", "null"] - } - } - }, - "stars": { - "type": ["integer", "null"] - }, - "title": { - "type": ["string", "null"] - }, - "text": { - "type": ["string", "null"] - }, - "language": { - "type": ["string", "null"] - }, - "location": { - "type": ["object", "null"], - "properties": { - "externalId": { - "type": ["string", "null"] - }, - "urlFormattedName": { - "type": ["string", "null"] - }, - "id": { - "type": ["string", "null"] - }, - "name": { - "type": ["string", "null"] - } - } - }, - "createdAt": { - "type": ["string", "null"], - "format": "date-time" - }, - "updatedAt": { - "type": ["string", "null"], - "format": "date-time" - }, - "experiencedAt": { - "type": ["string", "null"], - "format": "date-time" - }, - "referralEmail": { - "type": ["string", "null"] - }, - "referenceId": { - "type": ["string", "null"] - }, - "source": { - "type": ["string", "null"] - }, - "companyReply": { - "type": ["object", "null"], - "properties": { - "createdAt": { - "type": ["string", "null"], - "format": "date-time" - }, - "updatedAt": { - "type": ["string", "null"], - "format": "date-time" - }, - "text": { - "type": ["string", "null"] - }, - "authorBusinessUserId": { - "type": ["string", "null"] - } - } - }, - "tags": { - "type": ["array", "null"], - "items": { - "type": ["object", "null"], - "properties": { - "group": { - "type": ["string", "null"] - }, - "value": { - "type": ["string", "null"] - } - } - } - }, - "findReviewer": { - "type": ["object", "null"], - "properties": { - "isEligible": { - "type": ["boolean", "null"] - }, - "requests": { - "type": ["array", "null"], - "items": { - "type": ["object", "null"], - "properties": { - "status": { - "type": ["string", "null"] - }, - "consumerResponse": { - "type": ["object", "null"], - "properties": { - "referenceId": { - "type": ["string", "null"] - }, - "name": { - "type": ["string", "null"] - }, - "submittedAt": { - "type": ["string", "null"], - "format": "date-time" - }, - "phoneNumber": { - "type": ["string", "null"] - }, - "address": { - "type": ["string", "null"] - }, - "message": { - "type": ["string", "null"] - }, - "email": { - "type": ["string", "null"] - } - } - }, - "businessUserMessage": { - "type": ["string", "null"] - }, - "id": { - "type": ["string", "null"] - }, - "created": { - "type": ["string", "null"], - "format": "date-time" - } - } - } - } - } - }, - "isVerified": { - "type": ["boolean", "null"] - }, - "numberOfLikes": { - "type": "integer" - }, - "status": { - "type": ["null", "string"] - }, - "reportData": { - "type": ["object", "null"], - "properties": { - "source": { - "type": ["string", "null"] - }, - "publicComment": { - "type": ["string", "null"] - }, - "createdAt": { - "type": ["string", "null"], - "format": "date-time" - }, - "reasons": { - "type": ["array", "null"], - "items": { - "type": "null", - "$comment": "Data structure at this point is unknown" - } - } - } - }, - "complianceLabels": { - "type": ["array", "null"], - "items": { - "type": ["string", "null"] - } - }, - "countsTowardsTrustScore": { - "type": ["boolean", "null"] - }, - "countsTowardsLocationTrustScore": { - "type": ["boolean", "null"] - }, - "invitation": { - "type": ["object", "null"], - "properties": { - "businessUnitId": { - "type": ["string", "null"] - } - } - }, - "businessUnitHistory": { - "type": ["array", "null"], - "items": { - "type": ["object", "null"], - "properties": { - "identifyingName": { - "type": ["string", "null"] - }, - "displayName": { - "type": ["string", "null"] - }, - "businessUnitId": { - "type": ["string", "null"] - }, - "changeDate": { - "type": ["string", "null"], - "format": "date-time" - } - } - } - }, - "reviewVerificationLevel": { - "type": ["string", "null"] - } - } -} diff --git a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/source.py b/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/source.py deleted file mode 100644 index d6885cda42382..0000000000000 --- a/airbyte-integrations/connectors/source-trustpilot/source_trustpilot/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceTrustpilot(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/docs/integrations/sources/trustpilot.md b/docs/integrations/sources/trustpilot.md index d9847417f307e..a0f75d4a89622 100644 --- a/docs/integrations/sources/trustpilot.md +++ b/docs/integrations/sources/trustpilot.md @@ -61,6 +61,7 @@ The Trustpilot connector should not run into any limits under normal usage. Plea | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------- | +| 0.3.0 | 2024-10-06 | [46529](https://github.com/airbytehq/airbyte/pull/46529) | Migrate to Manifest-only | | 0.2.13 | 2024-10-05 | [46507](https://github.com/airbytehq/airbyte/pull/46507) | Update dependencies | | 0.2.12 | 2024-09-28 | [46134](https://github.com/airbytehq/airbyte/pull/46134) | Update dependencies | | 0.2.11 | 2024-09-21 | [45789](https://github.com/airbytehq/airbyte/pull/45789) | Update dependencies | From 2fe25298ed4ef6fa04e8af45ea41b8905b481c7d Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Mon, 7 Oct 2024 01:16:57 +0100 Subject: [PATCH 151/379] =?UTF-8?q?=E2=9C=A8=20Source=20Square=20:=20Migra?= =?UTF-8?q?te=20to=20Manifest-only=20(#46527)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Octavia Squidington III --- .../connectors/source-square/README.md | 89 +- .../connectors/source-square/__init__.py | 3 - .../source-square/acceptance-test-config.yml | 2 +- .../connectors/source-square/main.py | 8 - .../connectors/source-square/manifest.yaml | 4007 +++++++++++++++++ .../connectors/source-square/metadata.yaml | 8 +- .../connectors/source-square/poetry.lock | 1489 ------ .../connectors/source-square/pyproject.toml | 29 - .../source-square/source_square/__init__.py | 8 - .../source-square/source_square/manifest.yaml | 3141 ------------- .../source-square/source_square/run.py | 14 - .../source-square/source_square/source.py | 18 - .../source-square/unit_tests/test_source.py | 32 - docs/integrations/sources/square.md | 1 + 14 files changed, 4038 insertions(+), 4811 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-square/__init__.py delete mode 100644 airbyte-integrations/connectors/source-square/main.py create mode 100644 airbyte-integrations/connectors/source-square/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-square/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-square/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-square/source_square/__init__.py delete mode 100644 airbyte-integrations/connectors/source-square/source_square/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-square/source_square/run.py delete mode 100644 airbyte-integrations/connectors/source-square/source_square/source.py delete mode 100644 airbyte-integrations/connectors/source-square/unit_tests/test_source.py diff --git a/airbyte-integrations/connectors/source-square/README.md b/airbyte-integrations/connectors/source-square/README.md index a54fd27b9f755..9615878a8c6dd 100644 --- a/airbyte-integrations/connectors/source-square/README.md +++ b/airbyte-integrations/connectors/source-square/README.md @@ -1,49 +1,22 @@ # Square source connector -This is the repository for the Square source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/square). +This directory contains the manifest-only connector for `source-square`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -## Local development - -### Prerequisites - -- Python (~=3.9) -- Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) - -### Installing the connector - -From this connector directory, run: - -```bash -poetry install --with dev -``` - -### Create credentials +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/square). -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/square) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_square/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - -### Locally running the connector - -``` -poetry run source-square spec -poetry run source-square check --config secrets/config.json -poetry run source-square discover --config secrets/config.json -poetry run source-square read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` +## Local development -### Running unit tests +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! -To run unit tests locally, from the connector directory run: - -``` -poetry run pytest unit_tests -``` +If you prefer to develop locally, you can follow the instructions below. ### Building the docker image +You can build any manifest-only connector with `airbyte-ci`: + 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: @@ -53,18 +26,24 @@ airbyte-ci connectors --name=source-square build An image will be available on your host with the tag `airbyte/source-square:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/square) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. + ### Running as a docker container -Then run any of the connector commands as follows: +Then run any of the standard source connector commands: -``` +```bash docker run --rm airbyte/source-square:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-square:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-square:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-square:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite +### Running the CI test suite You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): @@ -72,33 +51,15 @@ You can run our full test suite locally using [`airbyte-ci`](https://github.com/ airbyte-ci connectors --name=source-square test ``` -### Customizing acceptance Tests - -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. - -### Dependency Management - -All of your dependencies should be managed via Poetry. -To add a new dependency, run: - -```bash -poetry add -``` - -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? - -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-square test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. +If you want to contribute changes to `source-square`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-square test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + - bump the `dockerImageTag` value in in `metadata.yaml` 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/square.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. 7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master. -8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry. +8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry. \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-square/__init__.py b/airbyte-integrations/connectors/source-square/__init__.py deleted file mode 100644 index c941b30457953..0000000000000 --- a/airbyte-integrations/connectors/source-square/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-square/acceptance-test-config.yml b/airbyte-integrations/connectors/source-square/acceptance-test-config.yml index 5b9b6aaa6e709..861053daa4d15 100644 --- a/airbyte-integrations/connectors/source-square/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-square/acceptance-test-config.yml @@ -3,7 +3,7 @@ test_strictness_level: high acceptance_tests: spec: tests: - - spec_path: "source_square/spec.yaml" + - spec_path: "manifest.yaml" backward_compatibility_tests_config: disable_for_version: "1.0.0" connection: diff --git a/airbyte-integrations/connectors/source-square/main.py b/airbyte-integrations/connectors/source-square/main.py deleted file mode 100644 index 7102d93900cfc..0000000000000 --- a/airbyte-integrations/connectors/source-square/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_square.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-square/manifest.yaml b/airbyte-integrations/connectors/source-square/manifest.yaml new file mode 100644 index 0000000000000..0b145ae19c627 --- /dev/null +++ b/airbyte-integrations/connectors/source-square/manifest.yaml @@ -0,0 +1,4007 @@ +version: 5.10.2 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - locations + +definitions: + streams: + customers: + type: DeclarativeStream + name: customers + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /customers + http_method: GET + request_parameters: + sort_field: CREATED_AT + sort_order: ASC + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - customers + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response['cursor'] }}" + stop_condition: "{{ 'cursor' not in response }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/customers" + locations: + type: DeclarativeStream + name: locations + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /locations + http_method: GET + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - locations + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response['cursor'] }}" + stop_condition: "{{ 'cursor' not in response }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/locations" + shifts: + type: DeclarativeStream + name: shifts + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: labor/shifts/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - shifts + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/shifts" + team_members: + type: DeclarativeStream + name: team_members + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /team-members/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - team_members + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/team_members" + team_member_wages: + type: DeclarativeStream + name: team_member_wages + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /labor/team-member-wages + http_method: GET + request_parameters: + sort_field: CREATED_AT + sort_order: ASC + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - team_member_wages + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/team_member_wages" + items: + type: DeclarativeStream + name: items + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /catalog/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + object_types: ITEM + include_deleted_objects: "{{ config['include_deleted_objects'] }}" + include_related_objects: "{{ False }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - objects + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 1000 + cursor_value: "{{ response.cursor }}" + stop_condition: "{{ 'cursor' not in response }}" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_time_option: + type: RequestOption + field_name: begin_time + inject_into: body_json + end_time_option: + type: RequestOption + field_name: end_time + inject_into: body_json + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + step: P30D + cursor_granularity: PT0.000001S + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/items" + categories: + type: DeclarativeStream + name: categories + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /catalog/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + object_types: CATEGORY + include_deleted_objects: "{{ config['include_deleted_objects'] }}" + include_related_objects: "{{ False }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - objects + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 1000 + cursor_value: "{{ response.cursor }}" + stop_condition: "{{ 'cursor' not in response }}" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_time_option: + type: RequestOption + field_name: begin_time + inject_into: body_json + end_time_option: + type: RequestOption + field_name: end_time + inject_into: body_json + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + step: P30D + cursor_granularity: PT0.000001S + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/categories" + discounts: + type: DeclarativeStream + name: discounts + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /catalog/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + object_types: DISCOUNT + include_deleted_objects: "{{ config['include_deleted_objects'] }}" + include_related_objects: "{{ False }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - objects + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 1000 + cursor_value: "{{ response.cursor }}" + stop_condition: "{{ 'cursor' not in response }}" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_time_option: + type: RequestOption + field_name: begin_time + inject_into: body_json + end_time_option: + type: RequestOption + field_name: end_time + inject_into: body_json + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + step: P30D + cursor_granularity: PT0.000001S + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/discounts" + taxes: + type: DeclarativeStream + name: taxes + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /catalog/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + object_types: TAX + include_deleted_objects: "{{ config['include_deleted_objects'] }}" + include_related_objects: "{{ False }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - objects + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 1000 + cursor_value: "{{ response.cursor }}" + stop_condition: "{{ 'cursor' not in response }}" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_time_option: + type: RequestOption + field_name: begin_time + inject_into: body_json + end_time_option: + type: RequestOption + field_name: end_time + inject_into: body_json + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + step: P30D + cursor_granularity: PT0.000001S + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/taxes" + modifier_list: + type: DeclarativeStream + name: modifier_list + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /catalog/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + object_types: MODIFIER_LIST + include_deleted_objects: "{{ config['include_deleted_objects'] }}" + include_related_objects: "{{ False }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - objects + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 1000 + cursor_value: "{{ response.cursor }}" + stop_condition: "{{ 'cursor' not in response }}" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_time_option: + type: RequestOption + field_name: begin_time + inject_into: body_json + end_time_option: + type: RequestOption + field_name: end_time + inject_into: body_json + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + step: P30D + cursor_granularity: PT0.000001S + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/modifier_list" + refunds: + type: DeclarativeStream + name: refunds + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /refunds + http_method: GET + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + sort_field: CREATED_AT + sort_order: ASC + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - refunds + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.cursor }}" + stop_condition: "{{ 'cursor' not in response }}" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: created_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_time_option: + type: RequestOption + field_name: begin_time + inject_into: body_json + end_time_option: + type: RequestOption + field_name: end_time + inject_into: body_json + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + step: P30D + cursor_granularity: PT0.000001S + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/refunds" + inventory: + type: DeclarativeStream + name: inventory + primary_key: + - catalog_object_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /inventory/counts/batch-retrieve + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + limit: "{{ 500 }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - counts + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/inventory" + payments: + type: DeclarativeStream + name: payments + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /payments + http_method: GET + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + sort_field: CREATED_AT + sort_order: ASC + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - payments + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.cursor }}" + stop_condition: "{{ 'cursor' not in response }}" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: created_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_time_option: + type: RequestOption + field_name: begin_time + inject_into: body_json + end_time_option: + type: RequestOption + field_name: end_time + inject_into: body_json + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + step: P30D + cursor_granularity: PT0.000001S + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/payments" + orders: + type: DeclarativeStream + name: orders + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /orders/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + sort: + sort_field: UPDATED_AT + sort_order: ASC + limit: "{{ 500 }}" + filter: + date_time_filter: + updated_at: + start_at: "{{ stream_slice.start_time }}" + location_ids: "{{ [ stream_slice.location_ids ] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - orders + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: location_ids + stream: + $ref: "#/definitions/streams/locations" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/orders" + bank_accounts: + type: DeclarativeStream + name: bank_accounts + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /bank-accounts + http_method: GET + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - bank_accounts + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: cursor + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response['cursor'] }}" + stop_condition: "{{ 'cursor' not in response }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/bank_accounts" + cash_drawers: + type: DeclarativeStream + name: cash_drawers + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /cash-drawers/shifts + http_method: GET + request_parameters: + location_id: "{{ stream_partition.location_id }}" + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - cash_drawer_shifts + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: location_id + stream: + $ref: "#/definitions/streams/locations" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/cash_drawers" + loyalty: + type: DeclarativeStream + name: loyalty + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /loyalty/accounts/search + http_method: POST + request_headers: + Content-Type: application/json + Square-Version: "2022-10-19" + request_body_json: + limit: "{{ 200 }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 404 + - 403 + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: >- + Failed to authorize request. Please update your access + token to continue using the source. + - type: HttpResponseFilter + action: RETRY + http_codes: + - 429 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 30 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - loyalty_accounts + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/loyalty" + base_requester: + type: HttpRequester + url_base: >- + {{ 'https://connect.squareupsandbox.com/v2' if config['is_sandbox'] else + 'https://connect.squareup.com/v2' }} + authenticator: + type: SelectiveAuthenticator + authenticators: + OAuth: + type: OAuthAuthenticator + client_id: "{{ config['credentials']['client_id'] }}" + client_secret: "{{ config['credentials']['client_secret'] }}" + refresh_token: "{{ config['credentials']['refresh_token'] }}" + expires_in_name: expires_at + token_refresh_endpoint: https://connect.squareup.com/oauth2/token + token_expiry_date_format: YYYY-MM-DDTHH:mm:ss[Z] + API Key: + type: BearerAuthenticator + api_token: "{{ config['credentials']['api_key'] }}" + authenticator_selection_path: + - credentials + - auth_type + +streams: + - $ref: "#/definitions/streams/customers" + - $ref: "#/definitions/streams/locations" + - $ref: "#/definitions/streams/shifts" + - $ref: "#/definitions/streams/team_members" + - $ref: "#/definitions/streams/team_member_wages" + - $ref: "#/definitions/streams/items" + - $ref: "#/definitions/streams/categories" + - $ref: "#/definitions/streams/discounts" + - $ref: "#/definitions/streams/taxes" + - $ref: "#/definitions/streams/modifier_list" + - $ref: "#/definitions/streams/refunds" + - $ref: "#/definitions/streams/inventory" + - $ref: "#/definitions/streams/payments" + - $ref: "#/definitions/streams/orders" + - $ref: "#/definitions/streams/bank_accounts" + - $ref: "#/definitions/streams/cash_drawers" + - $ref: "#/definitions/streams/loyalty" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - is_sandbox + properties: + credentials: + type: object + description: Choose how to authenticate to Square. + oneOf: + - type: object + title: Oauth authentication + required: + - auth_type + - client_id + - client_secret + - refresh_token + properties: + auth_type: + type: string + const: OAuth + order: 0 + client_id: + type: string + description: The Square-issued ID of your application + title: Client ID + airbyte_secret: true + client_secret: + type: string + description: The Square-issued application secret for your application + title: Client Secret + airbyte_secret: true + refresh_token: + type: string + description: A refresh token generated using the above client ID and secret + title: Refresh Token + airbyte_secret: true + - type: object + title: API key + required: + - auth_type + - api_key + properties: + api_key: + type: string + description: The API key for a Square application + title: API key token + airbyte_secret: true + auth_type: + type: string + const: API Key + order: 1 + order: 0 + title: Authentication + is_sandbox: + type: boolean + description: Determines whether to use the sandbox or production environment. + order: 1 + title: Sandbox + default: false + start_date: + type: string + description: >- + UTC date in the format YYYY-MM-DD. Any data before this date will not + be replicated. If not set, all data will be replicated. + order: 2 + title: Start Date + format: date + default: "2021-01-01" + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ + include_deleted_objects: + type: boolean + description: >- + In some streams there is an option to include deleted objects (Items, + Categories, Discounts, Taxes) + order: 3 + title: Include Deleted Objects + default: false + additionalProperties: true + +metadata: + autoImportSchema: + customers: false + locations: false + shifts: false + team_members: false + team_member_wages: false + items: false + categories: false + discounts: false + taxes: false + modifier_list: false + refunds: false + inventory: false + payments: false + orders: false + bank_accounts: false + cash_drawers: false + loyalty: false + yamlComponents: + streams: + customers: + - errorHandler + locations: + - errorHandler + shifts: + - errorHandler + team_members: + - errorHandler + team_member_wages: + - errorHandler + items: + - errorHandler + categories: + - errorHandler + discounts: + - errorHandler + taxes: + - errorHandler + modifier_list: + - errorHandler + refunds: + - errorHandler + inventory: + - errorHandler + payments: + - errorHandler + orders: + - errorHandler + bank_accounts: + - errorHandler + cash_drawers: + - errorHandler + loyalty: + - errorHandler + global: + - authenticator + testedStreams: + customers: + streamHash: 512f6c0efa25012a95ae404d59b34f51381d63ea + locations: + streamHash: d4582c3b8bac1a5cb02bb2a3969ae5d61715072f + shifts: + streamHash: 2543e0b1511dfcfb93100f892701b86d7df41b2e + team_members: + streamHash: 27e584f390cd72f919397e5c38cd87b19543327c + team_member_wages: + streamHash: df7b36ae383488e650e7915068e3043ee07461ac + items: + streamHash: bd3ab876b289b4dba7065b913910b8045d3fb747 + categories: + streamHash: 00e5efbf9ca77b0980b2bfa9588f2b96aa360af8 + discounts: + streamHash: 115de6f88c47141c141e6b40de20775da3815a06 + taxes: + streamHash: 98f52a1e47bf1a68b2e1c195405dacbb7dd86ed8 + modifier_list: + streamHash: e430f0c3735e10a7715a7e8950a477bc0a2a218c + refunds: + streamHash: 3e3ef3b42273620897faeff5f34df0bc35d0d6fa + inventory: + streamHash: b799f598deb52190117f2e3626d87e62b8987c6a + payments: + streamHash: 3f9c6b9f4894d778bfe4214b1a3155cc3eda24aa + orders: + streamHash: 2c6311a34808057dd827658bb191672270b7d957 + bank_accounts: + streamHash: d39a65b099ab01b638df8abb13106e054a776942 + cash_drawers: + streamHash: 7a857ae17a85d3b6387fe58a4b300b40cd85c66e + loyalty: + streamHash: 59b9bdbd762fef15515bcedbe6e2b2bc8f2b27dd + assist: {} + +schemas: + customers: + type: object + additionalProperties: true + properties: + version: + type: + - "null" + - integer + address: + type: + - "null" + - object + properties: + address_line_1: + type: + - "null" + - string + address_line_2: + type: + - "null" + - string + administrative_district_level_1: + type: + - "null" + - string + locality: + type: + - "null" + - string + postal_code: + type: + - "null" + - string + birthday: + type: + - "null" + - string + cards: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + billing_address: + type: + - "null" + - object + properties: + postal_code: + type: + - "null" + - string + card_brand: + type: + - "null" + - string + cardholder_name: + type: + - "null" + - string + exp_month: + type: + - "null" + - integer + exp_year: + type: + - "null" + - integer + id: + type: + - "null" + - string + last_4: + type: + - "null" + - string + company_name: + type: + - "null" + - string + created_at: + type: + - "null" + - string + creation_source: + type: + - "null" + - string + email_address: + type: + - "null" + - string + family_name: + type: + - "null" + - string + given_name: + type: + - "null" + - string + group_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + id: + type: + - "null" + - string + phone_number: + type: + - "null" + - string + preferences: + type: + - "null" + - object + properties: + email_unsubscribed: + type: boolean + reference_id: + type: + - "null" + - string + segment_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + locations: + type: object + additionalProperties: true + properties: + type: + type: + - "null" + - string + description: + type: + - "null" + - string + address: + type: + - "null" + - object + properties: + address_line_1: + type: + - "null" + - string + administrative_district_level_1: + type: + - "null" + - string + country: + type: + - "null" + - string + locality: + type: + - "null" + - string + postal_code: + type: + - "null" + - string + business_email: + type: + - "null" + - string + business_hours: + type: + - "null" + - object + business_name: + type: + - "null" + - string + capabilities: + type: + - "null" + - array + items: + type: + - "null" + - string + country: + type: + - "null" + - string + created_at: + type: + - "null" + - string + currency: + type: + - "null" + - string + facebook_url: + type: + - "null" + - string + id: + type: + - "null" + - string + instagram_username: + type: + - "null" + - string + language_code: + type: + - "null" + - string + mcc: + type: + - "null" + - string + merchant_id: + type: + - "null" + - string + name: + type: + - "null" + - string + phone_number: + type: + - "null" + - string + status: + type: + - "null" + - string + timezone: + type: + - "null" + - string + twitter_username: + type: + - "null" + - string + website_url: + type: + - "null" + - string + shifts: + type: object + additionalProperties: true + properties: + version: + type: + - "null" + - integer + breaks: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + break_type_id: + type: + - "null" + - string + end_at: + type: + - "null" + - string + expected_duration: + type: + - "null" + - string + id: + type: + - "null" + - string + is_paid: + type: + - "null" + - boolean + name: + type: + - "null" + - string + start_at: + type: + - "null" + - string + created_at: + type: + - "null" + - string + employee_id: + type: + - "null" + - string + end_at: + type: + - "null" + - string + id: + type: + - "null" + - string + location_id: + type: + - "null" + - string + start_at: + type: + - "null" + - string + status: + type: + - "null" + - string + team_member_id: + type: + - "null" + - string + timezone: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + wage: + type: + - "null" + - object + properties: + hourly_rate: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + title: + type: + - "null" + - string + team_members: + type: object + additionalProperties: true + properties: + assigned_locations: + type: + - "null" + - object + properties: + assignment_type: + type: + - "null" + - string + created_at: + type: + - "null" + - string + email_address: + type: + - "null" + - string + family_name: + type: + - "null" + - string + given_name: + type: + - "null" + - string + id: + type: + - "null" + - string + is_owner: + type: + - "null" + - boolean + phone_number: + type: + - "null" + - string + reference_id: + type: + - "null" + - string + status: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + team_member_wages: + type: object + additionalProperties: true + properties: + hourly_rate: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + id: + type: + - "null" + - string + team_member_id: + type: + - "null" + - string + title: + type: + - "null" + - string + items: + type: object + additionalProperties: true + properties: + version: + type: + - "null" + - integer + type: + type: + - "null" + - string + custom_attribute_values: + type: + - "null" + - object + id: + type: + - "null" + - string + image_id: + type: + - "null" + - string + is_deleted: + type: + - "null" + - boolean + item_data: + type: + - "null" + - object + properties: + description: + type: + - "null" + - string + category_id: + type: + - "null" + - string + ecom_visibility: + type: + - "null" + - string + item_options: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + item_option_id: + type: + - "null" + - string + modifier_list_info: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + enabled: + type: + - "null" + - boolean + max_selected_modifiers: + type: + - "null" + - integer + min_selected_modifiers: + type: + - "null" + - integer + modifier_list_id: + type: + - "null" + - string + visibility: + type: + - "null" + - string + name: + type: + - "null" + - string + product_type: + type: + - "null" + - string + skip_modifier_screen: + type: + - "null" + - boolean + tax_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + variations: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + version: + type: + - "null" + - integer + type: + type: + - "null" + - string + id: + type: + - "null" + - string + is_deleted: + type: + - "null" + - boolean + item_variation_data: + type: + - "null" + - object + properties: + item_id: + type: + - "null" + - string + item_option_values: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + item_option_id: + type: + - "null" + - string + item_option_value_id: + type: + - "null" + - string + location_overrides: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + location_id: + type: + - "null" + - string + track_inventory: + type: + - "null" + - boolean + name: + type: + - "null" + - string + ordinal: + type: + - "null" + - integer + price_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + pricing_type: + type: + - "null" + - string + sku: + type: + - "null" + - string + present_at_all_locations: + type: + - "null" + - boolean + present_at_location_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + visibility: + type: + - "null" + - string + present_at_all_locations: + type: + - "null" + - boolean + present_at_location_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + categories: + type: object + additionalProperties: true + properties: + version: + type: + - "null" + - integer + type: + type: + - "null" + - string + category_data: + type: + - "null" + - object + properties: + name: + type: + - "null" + - string + id: + type: + - "null" + - string + is_deleted: + type: + - "null" + - boolean + present_at_all_locations: + type: + - "null" + - boolean + updated_at: + type: + - "null" + - string + discounts: + type: object + additionalProperties: true + properties: + version: + type: + - "null" + - integer + type: + type: + - "null" + - string + discount_data: + type: + - "null" + - object + properties: + amount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + application_method: + type: + - "null" + - string + discount_type: + type: + - "null" + - string + modify_tax_basis: + type: + - "null" + - string + name: + type: + - "null" + - string + percentage: + type: + - "null" + - string + pin_required: + type: + - "null" + - boolean + id: + type: + - "null" + - string + is_deleted: + type: + - "null" + - boolean + present_at_all_locations: + type: + - "null" + - boolean + present_at_location_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + taxes: + type: object + additionalProperties: true + properties: + version: + type: + - "null" + - integer + type: + type: + - "null" + - string + absent_at_location_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + id: + type: + - "null" + - string + is_deleted: + type: + - "null" + - boolean + present_at_all_locations: + type: + - "null" + - boolean + tax_data: + type: + - "null" + - object + properties: + applies_to_custom_amounts: + type: + - "null" + - boolean + calculation_phase: + type: + - "null" + - string + enabled: + type: + - "null" + - boolean + inclusion_type: + type: + - "null" + - string + name: + type: + - "null" + - string + percentage: + type: + - "null" + - string + tax_type_id: + type: + - "null" + - string + tax_type_name: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + modifier_list: + type: object + additionalProperties: true + properties: + version: + type: + - "null" + - integer + type: + type: + - "null" + - string + id: + type: + - "null" + - string + is_deleted: + type: + - "null" + - boolean + modifier_list_data: + type: + - "null" + - object + properties: + modifiers: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + version: + type: + - "null" + - integer + type: + type: + - "null" + - string + id: + type: + - "null" + - string + is_deleted: + type: + - "null" + - boolean + modifier_data: + type: + - "null" + - object + properties: + modifier_list_id: + type: + - "null" + - string + name: + type: + - "null" + - string + on_by_default: + type: + - "null" + - boolean + ordinal: + type: + - "null" + - integer + price_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + present_at_all_locations: + type: + - "null" + - boolean + updated_at: + type: + - "null" + - string + name: + type: + - "null" + - string + selection_type: + type: + - "null" + - string + present_at_all_locations: + type: + - "null" + - boolean + updated_at: + type: + - "null" + - string + refunds: + type: object + additionalProperties: true + properties: + amount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + required: + - amount + - currency + created_at: + type: + - "null" + - string + id: + type: + - "null" + - string + location_id: + type: + - "null" + - string + order_id: + type: + - "null" + - string + payment_id: + type: + - "null" + - string + processing_fee: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + type: + type: + - "null" + - string + amount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + effective_at: + type: + - "null" + - string + reason: + type: + - "null" + - string + status: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + inventory: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + calculated_at: + type: + - string + - "null" + catalog_object_id: + type: + - string + - "null" + catalog_object_type: + type: + - string + - "null" + location_id: + type: + - string + - "null" + quantity: + type: + - string + - "null" + state: + type: + - string + - "null" + title: Inventory Schema + payments: + type: object + additionalProperties: true + properties: + amount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + approved_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + card_details: + type: + - "null" + - object + properties: + avs_status: + type: + - "null" + - string + card: + type: + - "null" + - object + properties: + bin: + type: + - "null" + - string + card_brand: + type: + - "null" + - string + card_type: + type: + - "null" + - string + exp_month: + type: + - "null" + - integer + exp_year: + type: + - "null" + - integer + fingerprint: + type: + - "null" + - string + last_4: + type: + - "null" + - string + prepaid_type: + type: + - "null" + - string + card_payment_timeline: + type: + - "null" + - object + properties: + authorized_at: + type: + - "null" + - string + captured_at: + type: + - "null" + - string + voided_at: + type: + - "null" + - string + cvv_status: + type: + - "null" + - string + entry_method: + type: + - "null" + - string + statement_description: + type: + - "null" + - string + status: + type: + - "null" + - string + created_at: + type: + - "null" + - string + customer_id: + type: + - "null" + - string + delay_action: + type: + - "null" + - string + delay_duration: + type: + - "null" + - string + delayed_until: + type: + - "null" + - string + employee_id: + type: + - "null" + - string + id: + type: + - "null" + - string + location_id: + type: + - "null" + - string + note: + type: + - "null" + - string + order_id: + type: + - "null" + - string + processing_fee: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + type: + type: + - "null" + - string + amount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + effective_at: + type: + - "null" + - string + receipt_number: + type: + - "null" + - string + receipt_url: + type: + - "null" + - string + refund_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + refunded_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + risk_evaluation: + type: + - "null" + - object + properties: + created_at: + type: + - "null" + - string + risk_level: + type: + - "null" + - string + source_type: + type: + - "null" + - string + status: + type: + - "null" + - string + total_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + version_token: + type: + - "null" + - string + orders: + type: object + additionalProperties: true + properties: + version: + type: + - "null" + - integer + closed_at: + type: + - "null" + - string + created_at: + type: + - "null" + - string + customer_id: + type: + - "null" + - string + discounts: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + type: + type: + - "null" + - string + applied_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + name: + type: + - "null" + - string + percentage: + type: + - "null" + - string + scope: + type: + - "null" + - string + uid: + type: + - "null" + - string + fulfillments: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + type: + type: + - "null" + - string + pickup_details: + type: + - "null" + - object + properties: + accepted_at: + type: + - "null" + - string + auto_complete_duration: + type: + - "null" + - string + expires_at: + type: + - "null" + - string + note: + type: + - "null" + - string + picked_up_at: + type: + - "null" + - string + pickup_at: + type: + - "null" + - string + placed_at: + type: + - "null" + - string + ready_at: + type: + - "null" + - string + recipient: + type: + - "null" + - object + properties: + display_name: + type: + - "null" + - string + phone_number: + type: + - "null" + - string + schedule_type: + type: + - "null" + - string + shipment_details: + type: + - "null" + - object + properties: + carrier: + type: + - "null" + - string + expected_shipped_at: + type: + - "null" + - string + in_progress_at: + type: + - "null" + - string + packaged_at: + type: + - "null" + - string + placed_at: + type: + - "null" + - string + recipient: + type: + - "null" + - object + properties: + address: + type: + - "null" + - object + properties: + address_line_1: + type: + - "null" + - string + administrative_district_level_1: + type: + - "null" + - string + locality: + type: + - "null" + - string + postal_code: + type: + - "null" + - string + display_name: + type: + - "null" + - string + phone_number: + type: + - "null" + - string + shipped_at: + type: + - "null" + - string + tracking_number: + type: + - "null" + - string + state: + type: + - "null" + - string + uid: + type: + - "null" + - string + id: + type: + - "null" + - string + line_items: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + applied_discounts: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + applied_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + discount_uid: + type: + - "null" + - string + uid: + type: + - "null" + - string + applied_taxes: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + applied_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + tax_uid: + type: + - "null" + - string + uid: + type: + - "null" + - string + base_price_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + catalog_object_id: + type: + - "null" + - string + gross_sales_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + item_type: + type: + - "null" + - string + modifiers: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + base_price_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + catalog_object_id: + type: + - "null" + - string + name: + type: + - "null" + - string + total_price_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + uid: + type: + - "null" + - string + name: + type: + - "null" + - string + note: + type: + - "null" + - string + quantity: + type: + - "null" + - string + total_discount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_tax_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + uid: + type: + - "null" + - string + variation_name: + type: + - "null" + - string + variation_total_price_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + location_id: + type: + - "null" + - string + net_amounts: + type: + - "null" + - object + properties: + discount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + service_charge_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + tax_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + tip_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + refunds: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + amount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + created_at: + type: + - "null" + - string + id: + type: + - "null" + - string + location_id: + type: + - "null" + - string + reason: + type: + - "null" + - string + status: + type: + - "null" + - string + tender_id: + type: + - "null" + - string + transaction_id: + type: + - "null" + - string + return_amounts: + type: + - "null" + - object + properties: + discount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + service_charge_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + tax_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + tip_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + returns: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + return_line_items: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + base_price_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + gross_return_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + item_type: + type: + - "null" + - string + quantity: + type: + - "null" + - string + total_discount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_tax_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + uid: + type: + - "null" + - string + variation_total_price_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + source_order_id: + type: + - "null" + - string + uid: + type: + - "null" + - string + service_charges: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + amount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + applied_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + calculation_phase: + type: + - "null" + - string + name: + type: + - "null" + - string + taxable: + type: + - "null" + - boolean + total_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_tax_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + uid: + type: + - "null" + - string + source: + type: + - "null" + - object + properties: + name: + type: + - "null" + - string + state: + type: + - "null" + - string + taxes: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + type: + type: + - "null" + - string + applied_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + catalog_object_id: + type: + - "null" + - string + name: + type: + - "null" + - string + percentage: + type: + - "null" + - string + scope: + type: + - "null" + - string + uid: + type: + - "null" + - string + tenders: + type: + - "null" + - array + items: + type: + - "null" + - object + properties: + type: + type: + - "null" + - string + amount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + card_details: + type: + - "null" + - object + properties: + card: + type: + - "null" + - object + properties: + card_brand: + type: + - "null" + - string + fingerprint: + type: + - "null" + - string + last_4: + type: + - "null" + - string + entry_method: + type: + - "null" + - string + status: + type: + - "null" + - string + cash_details: + type: + - "null" + - object + properties: + buyer_tendered_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + change_back_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + created_at: + type: + - "null" + - string + id: + type: + - "null" + - string + location_id: + type: + - "null" + - string + note: + type: + - "null" + - string + payment_id: + type: + - "null" + - string + transaction_id: + type: + - "null" + - string + total_discount_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_service_charge_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_tax_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + total_tip_money: + type: + - "null" + - object + properties: + amount: + type: + - "null" + - integer + currency: + type: + - "null" + - string + updated_at: + type: + - "null" + - string + bank_accounts: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + version: + type: + - "null" + - integer + account_number_suffix: + type: + - "null" + - string + account_type: + type: + - "null" + - string + bank_name: + type: + - "null" + - string + country: + type: + - "null" + - string + creditable: + type: + - "null" + - boolean + currency: + type: + - "null" + - string + debitable: + type: + - "null" + - boolean + holder_name: + type: + - "null" + - string + id: + type: + - "null" + - string + location_id: + type: + - "null" + - string + primary_bank_identification_number: + type: + - "null" + - string + status: + type: + - "null" + - string + cash_drawers: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + closed_at: + type: + - string + - "null" + closed_cash_money: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + ended_at: + type: + - string + - "null" + expected_cash_money: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + id: + type: + - string + - "null" + opened_at: + type: + - string + - "null" + opened_cash_money: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + state: + type: + - string + - "null" + title: Cash Drawer Shifts Schema + loyalty: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + balance: + type: + - number + - "null" + created_at: + type: + - string + - "null" + customer_id: + type: + - string + - "null" + id: + type: + - string + - "null" + lifetime_points: + type: + - number + - "null" + mapping: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + phone_number: + type: + - string + - "null" + program_id: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + title: Loyalty schema diff --git a/airbyte-integrations/connectors/source-square/metadata.yaml b/airbyte-integrations/connectors/source-square/metadata.yaml index fb4b4e59c1a51..b98ca1a15c3d6 100644 --- a/airbyte-integrations/connectors/source-square/metadata.yaml +++ b/airbyte-integrations/connectors/source-square/metadata.yaml @@ -7,11 +7,11 @@ data: - connect.squareupsandbox.com - connect.squareup.com connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a connectorSubtype: api connectorType: source definitionId: 77225a51-cd15-4a13-af02-65816bd0ecf4 - dockerImageTag: 1.6.23 + dockerImageTag: 1.7.0 dockerRepository: airbyte/source-square documentationUrl: https://docs.airbyte.com/integrations/sources/square githubIssueLabel: source-square @@ -26,12 +26,12 @@ data: releaseStage: beta remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-square supportLevel: community tags: - - language:python - cdk:low-code + - language:manifest-only connectorTestSuitesOptions: - suite: liveTests testConnections: diff --git a/airbyte-integrations/connectors/source-square/poetry.lock b/airbyte-integrations/connectors/source-square/poetry.lock deleted file mode 100644 index 2f6707b3500bf..0000000000000 --- a/airbyte-integrations/connectors/source-square/poetry.lock +++ /dev/null @@ -1,1489 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "0.90.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-0.90.0-py3-none-any.whl", hash = "sha256:bd0aa5843cdc4901f2e482f0e86695ca4e6db83b65c5017799255dd20535cf56"}, - {file = "airbyte_cdk-0.90.0.tar.gz", hash = "sha256:25cefc010718bada5cce3f87e7ae93068630732c0d34ce5145f8ddf7457d4d3c"}, -] - -[package.dependencies] -airbyte-protocol-models = ">=0.9.0,<1.0" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.0.1,<2.1.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.13.0" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.13.0-py3-none-any.whl", hash = "sha256:fa8b7e1a85f9ae171c50b30d23b317da1740d051994fd3ed648f9dfba00250e2"}, - {file = "airbyte_protocol_models-0.13.0.tar.gz", hash = "sha256:09d8900ba8674a9315fa1799d17026f6b38d2187c08160449540ee93331ed2e7"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.8" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.0.8" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "freezegun" -version = "1.5.1" -description = "Let your Python tests travel through time" -optional = false -python-versions = ">=3.7" -files = [ - {file = "freezegun-1.5.1-py3-none-any.whl", hash = "sha256:bf111d7138a8abe55ab48a71755673dbaa4ab87f4cff5634a4442dfec34c15f1"}, - {file = "freezegun-1.5.1.tar.gz", hash = "sha256:b29dedfcda6d5e8e083ce71b2b542753ad48cfec44037b3fc79702e2980a89e9"}, -] - -[package.dependencies] -python-dateutil = ">=2.7" - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.6" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.131" -description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, - {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} -requests = ">=2,<3" -requests-toolbelt = ">=1.0.0,<2.0.0" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "orjson" -version = "3.10.7" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "6.2.5" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "25aa768e8715c4fc98ea4d5f1007f20000bd4c5934afb33c8f8b3724bb3ed9d2" diff --git a/airbyte-integrations/connectors/source-square/pyproject.toml b/airbyte-integrations/connectors/source-square/pyproject.toml deleted file mode 100644 index 5a2cfbb18bb46..0000000000000 --- a/airbyte-integrations/connectors/source-square/pyproject.toml +++ /dev/null @@ -1,29 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "1.6.23" -name = "source-square" -description = "Source implementation for Square." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/square" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_square" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "^0" - -[tool.poetry.scripts] -source-square = "source_square.run:run" - -[tool.poetry.group.dev.dependencies] -pytest = "^6.1" -pytest-mock = "^3.6.1" -freezegun = "^1.5.0" -requests-mock = "^1.9.3" diff --git a/airbyte-integrations/connectors/source-square/source_square/__init__.py b/airbyte-integrations/connectors/source-square/source_square/__init__.py deleted file mode 100644 index 56c7b29e9f005..0000000000000 --- a/airbyte-integrations/connectors/source-square/source_square/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceSquare - -__all__ = ["SourceSquare"] diff --git a/airbyte-integrations/connectors/source-square/source_square/manifest.yaml b/airbyte-integrations/connectors/source-square/source_square/manifest.yaml deleted file mode 100644 index b630b18b17dbe..0000000000000 --- a/airbyte-integrations/connectors/source-square/source_square/manifest.yaml +++ /dev/null @@ -1,3141 +0,0 @@ -version: "0.81.4" - -definitions: - oauth_authenticator: - type: OAuthAuthenticator - token_refresh_endpoint: https://connect.squareup.com/oauth2/token - client_id: "{{ config['credentials']['client_id'] }}" - client_secret: "{{ config['credentials']['client_secret'] }}" - refresh_token: "{{ config['credentials']['refresh_token'] }}" - token_expiry_date_format: "YYYY-MM-DDTHH:mm:ss[Z]" - expires_in_name: expires_at - bearer_authenticator: - type: BearerAuthenticator - api_token: "{{ config['credentials']['api_key'] }}" - selector: - extractor: - field_path: ["{{ parameters['name'] }}"] - - requester: - url_base: - "{{ 'https://connect.squareupsandbox.com/v2' if config['is_sandbox'] - else 'https://connect.squareup.com/v2' }}" - http_method: "GET" - authenticator: - type: SelectiveAuthenticator - authenticator_selection_path: ["credentials", "auth_type"] - authenticators: - API Key: "#/definitions/bearer_authenticator" - OAuth: "#/definitions/oauth_authenticator" - request_headers: - Square-Version: "2022-10-19" - Content-Type: "application/json" - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - backoff_strategies: - - type: "ConstantBackoffStrategy" - backoff_time_in_seconds: 30 - response_filters: - - type: HttpResponseFilter - action: IGNORE - http_codes: - - 404 - - 403 - - type: HttpResponseFilter - action: FAIL - http_codes: - - 401 - error_message: Failed to authorize request. Please update your access token to continue using the source. - - type: HttpResponseFilter - action: RETRY - http_codes: - - 429 - - retriever: - record_selector: - $ref: "#/definitions/selector" - requester: - $ref: "#/definitions/requester" - - base_stream: - type: DeclarativeStream - retriever: - $ref: "#/definitions/retriever" - paginator: - type: DefaultPaginator - pagination_strategy: - type: "CursorPagination" - cursor_value: "{{ response['cursor'] }}" - stop_condition: "{{ 'cursor' not in response }}" - page_size: 100 - page_size_option: - inject_into: "request_parameter" - field_name: "limit" - page_token_option: - type: RequestOption - inject_into: "request_parameter" - field_name: "cursor" - - base_incremental_stream: - incremental_sync: - type: DatetimeBasedCursor - start_datetime: - datetime: - "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') - }}" - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - end_datetime: - datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - step: "P30D" - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - cursor_granularity: "PT0.000001S" - cursor_field: "created_at" - start_time_option: - field_name: begin_time - inject_into: body_json - end_time_option: - field_name: end_time - inject_into: body_json - retriever: - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - request_body_json: - sort_order: "ASC" - sort_field: "CREATED_AT" - paginator: - type: DefaultPaginator - pagination_strategy: - page_size: 100 - type: "CursorPagination" - cursor_value: "{{ response.cursor }}" - stop_condition: "{{ 'cursor' not in response }}" - page_token_option: - type: RequestOption - field_name: "cursor" - inject_into: "body_json" - page_size_option: - field_name: "limit" - inject_into: "body_json" - base_catalog_objects_stream: - $ref: "#/definitions/base_incremental_stream" - $parameters: - primary_key: "id" - path: "/catalog/search" - incremental_sync: - type: DatetimeBasedCursor - start_datetime: - datetime: - "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') - }}" - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - end_datetime: - datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}" - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - step: "P30D" - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - cursor_granularity: "PT0.000001S" - cursor_field: "updated_at" - start_time_option: - field_name: begin_time - inject_into: body_json - end_time_option: - field_name: end_time - inject_into: body_json - retriever: - $ref: "#/definitions/retriever" - record_selector: - extractor: - field_path: ["objects"] - requester: - $ref: "#/definitions/requester" - http_method: "POST" - request_body_json: - include_related_objects: "{{ False }}" - include_deleted_objects: "{{ config['include_deleted_objects'] }}" - object_types: "{{ [parameters['object_type']] }}" - paginator: - type: DefaultPaginator - pagination_strategy: - page_size: 1000 - type: "CursorPagination" - cursor_value: "{{ response.cursor }}" - stop_condition: "{{ 'cursor' not in response }}" - page_token_option: - type: RequestOption - field_name: "cursor" - inject_into: "body_json" - page_size_option: - field_name: "limit" - inject_into: "body_json" - base_stream_page_json_limit: - retriever: - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - http_method: "POST" - - customers_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "customers" - primary_key: "id" - path: "/customers" - retriever: - $ref: "#/definitions/base_stream/retriever" - requester: - $ref: "#/definitions/requester" - request_parameters: - sort_order: ASC - sort_field: CREATED_AT - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - id: - type: - - "null" - - string - created_at: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - cards: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - id: - type: - - "null" - - string - card_brand: - type: - - "null" - - string - last_4: - type: - - "null" - - string - exp_month: - type: - - "null" - - integer - exp_year: - type: - - "null" - - integer - cardholder_name: - type: - - "null" - - string - billing_address: - type: - - "null" - - object - properties: - postal_code: - type: - - "null" - - string - given_name: - type: - - "null" - - string - family_name: - type: - - "null" - - string - email_address: - type: - - "null" - - string - address: - type: - - "null" - - object - properties: - address_line_1: - type: - - "null" - - string - address_line_2: - type: - - "null" - - string - locality: - type: - - "null" - - string - administrative_district_level_1: - type: - - "null" - - string - postal_code: - type: - - "null" - - string - phone_number: - type: - - "null" - - string - reference_id: - type: - - "null" - - string - company_name: - type: - - "null" - - string - preferences: - type: - - "null" - - object - properties: - email_unsubscribed: - type: boolean - creation_source: - type: - - "null" - - string - birthday: - type: - - "null" - - string - segment_ids: - type: - - "null" - - array - items: - type: - - "null" - - string - group_ids: - type: - - "null" - - array - items: - type: - - "null" - - string - version: - type: - - "null" - - integer - shifts_stream: - $ref: "#/definitions/base_stream_page_json_limit" - $parameters: - name: "shifts" - primary_key: "id" - path: "labor/shifts/search" - retriever: - $ref: "#/definitions/base_stream_page_json_limit/retriever" - paginator: - pagination_strategy: - page_size: 200 - page_size_option: - inject_into: "body_json" - field_name: "limit" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - id: - type: - - "null" - - string - employee_id: - type: - - "null" - - string - location_id: - type: - - "null" - - string - timezone: - type: - - "null" - - string - start_at: - type: - - "null" - - string - end_at: - type: - - "null" - - string - wage: - type: - - "null" - - object - properties: - title: - type: - - "null" - - string - hourly_rate: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - breaks: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - id: - type: - - "null" - - string - start_at: - type: - - "null" - - string - end_at: - type: - - "null" - - string - break_type_id: - type: - - "null" - - string - name: - type: - - "null" - - string - expected_duration: - type: - - "null" - - string - is_paid: - type: - - "null" - - boolean - status: - type: - - "null" - - string - version: - type: - - "null" - - integer - created_at: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - team_member_id: - type: - - "null" - - string - team_members_stream: - $ref: "#/definitions/base_stream_page_json_limit" - $parameters: - name: "team_members" - primary_key: "id" - path: "/team-members/search" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - id: - type: - - "null" - - string - is_owner: - type: - - "null" - - boolean - status: - type: - - "null" - - string - given_name: - type: - - "null" - - string - family_name: - type: - - "null" - - string - email_address: - type: - - "null" - - string - created_at: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - assigned_locations: - type: - - "null" - - object - properties: - assignment_type: - type: - - "null" - - string - reference_id: - type: - - "null" - - string - phone_number: - type: - - "null" - - string - inventory_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "inventory" - primary_key: "catalog_object_id" - path: "/inventory/counts/batch-retrieve" - retriever: - $ref: "#/definitions/base_stream_page_json_limit/retriever" - requester: - $ref: "#/definitions/base_stream_page_json_limit/retriever/requester" - http_method: "POST" - request_body_json: - limit: "{{ 500 }}" - record_selector: - $ref: "#/definitions/selector" - extractor: - field_path: ["counts"] - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-07/schema# - title: Inventory Schema - additionalProperties: true - type: object - properties: - catalog_object_id: - type: - - string - - "null" - catalog_object_type: - type: - - string - - "null" - state: - type: - - string - - "null" - location_id: - type: - - string - - "null" - quantity: - type: - - string - - "null" - calculated_at: - type: - - string - - "null" - - team_member_wages_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "team_member_wages" - primary_key: "id" - path: "/labor/team-member-wages" - retriever: - $ref: "#/definitions/retriever" - requester: - $ref: "#/definitions/requester" - request_parameters: - sort_order: ASC - sort_field: CREATED_AT - paginator: - pagination_strategy: - page_size: 200 - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - id: - type: - - "null" - - string - team_member_id: - type: - - "null" - - string - title: - type: - - "null" - - string - hourly_rate: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - locations_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "locations" - primary_key: "id" - path: "/locations" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - id: - type: - - "null" - - string - name: - type: - - "null" - - string - address: - type: - - "null" - - object - properties: - address_line_1: - type: - - "null" - - string - locality: - type: - - "null" - - string - administrative_district_level_1: - type: - - "null" - - string - postal_code: - type: - - "null" - - string - country: - type: - - "null" - - string - timezone: - type: - - "null" - - string - capabilities: - type: - - "null" - - array - items: - type: - - "null" - - string - status: - type: - - "null" - - string - created_at: - type: - - "null" - - string - merchant_id: - type: - - "null" - - string - country: - type: - - "null" - - string - language_code: - type: - - "null" - - string - currency: - type: - - "null" - - string - phone_number: - type: - - "null" - - string - business_name: - type: - - "null" - - string - type: - type: - - "null" - - string - website_url: - type: - - "null" - - string - business_hours: - type: - - "null" - - object - business_email: - type: - - "null" - - string - description: - type: - - "null" - - string - twitter_username: - type: - - "null" - - string - instagram_username: - type: - - "null" - - string - facebook_url: - type: - - "null" - - string - mcc: - type: - - "null" - - string - locations_partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - stream: "#/definitions/locations_stream" - parent_key: "id" - partition_field: "location_id" - - cash_drawers_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "cash_drawers" - primary_key: "id" - path: "/cash-drawers/shifts" - retriever: - $ref: "#/definitions/retriever" - partition_router: - $ref: "#/definitions/locations_partition_router" - requester: - $ref: "#/definitions/requester" - request_parameters: - location_id: "{{ stream_partition.location_id }}" - record_selector: - $ref: "#/definitions/selector" - extractor: - field_path: ["cash_drawer_shifts"] - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-07/schema# - title: Cash Drawer Shifts Schema - additionalProperties: true - type: object - properties: - id: - type: - - string - - "null" - state: - type: - - string - - "null" - opened_at: - type: - - string - - "null" - ended_at: - type: - - string - - "null" - closed_at: - type: - - string - - "null" - description: - type: - - string - - "null" - opened_cash_money: - type: - - object - - "null" - properties: - amount: - type: - - number - - "null" - currency: - type: - - string - - "null" - expected_cash_money: - type: - - object - - "null" - properties: - amount: - type: - - number - - "null" - currency: - type: - - string - - "null" - closed_cash_money: - type: - - object - - "null" - properties: - amount: - type: - - number - - "null" - currency: - type: - - string - - "null" - - categories_stream: - $ref: "#/definitions/base_catalog_objects_stream" - $parameters: - name: "categories" - object_type: "CATEGORY" - path: "/catalog/search" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - type: - type: - - "null" - - string - id: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - version: - type: - - "null" - - integer - is_deleted: - type: - - "null" - - boolean - present_at_all_locations: - type: - - "null" - - boolean - category_data: - type: - - "null" - - object - properties: - name: - type: - - "null" - - string - items_stream: - $ref: "#/definitions/base_catalog_objects_stream" - $parameters: - name: "items" - object_type: "ITEM" - path: "/catalog/search" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - type: - type: - - "null" - - string - id: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - version: - type: - - "null" - - integer - is_deleted: - type: - - "null" - - boolean - custom_attribute_values: - type: - - "null" - - object - present_at_all_locations: - type: - - "null" - - boolean - item_data: - type: - - "null" - - object - properties: - name: - type: - - "null" - - string - description: - type: - - "null" - - string - visibility: - type: - - "null" - - string - category_id: - type: - - "null" - - string - modifier_list_info: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - modifier_list_id: - type: - - "null" - - string - visibility: - type: - - "null" - - string - min_selected_modifiers: - type: - - "null" - - integer - max_selected_modifiers: - type: - - "null" - - integer - enabled: - type: - - "null" - - boolean - variations: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - type: - type: - - "null" - - string - id: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - version: - type: - - "null" - - integer - is_deleted: - type: - - "null" - - boolean - present_at_all_locations: - type: - - "null" - - boolean - item_variation_data: - type: - - "null" - - object - properties: - item_id: - type: - - "null" - - string - name: - type: - - "null" - - string - sku: - type: - - "null" - - string - ordinal: - type: - - "null" - - integer - pricing_type: - type: - - "null" - - string - price_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - location_overrides: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - location_id: - type: - - "null" - - string - track_inventory: - type: - - "null" - - boolean - item_option_values: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - item_option_id: - type: - - "null" - - string - item_option_value_id: - type: - - "null" - - string - present_at_location_ids: - type: - - "null" - - array - items: - type: - - "null" - - string - product_type: - type: - - "null" - - string - skip_modifier_screen: - type: - - "null" - - boolean - item_options: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - item_option_id: - type: - - "null" - - string - ecom_visibility: - type: - - "null" - - string - tax_ids: - type: - - "null" - - array - items: - type: - - "null" - - string - image_id: - type: - - "null" - - string - present_at_location_ids: - type: - - "null" - - array - items: - type: - - "null" - - string - discounts_stream: - $ref: "#/definitions/base_catalog_objects_stream" - $parameters: - name: "discounts" - object_type: "DISCOUNT" - path: "/catalog/search" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - type: - type: - - "null" - - string - id: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - version: - type: - - "null" - - integer - is_deleted: - type: - - "null" - - boolean - present_at_all_locations: - type: - - "null" - - boolean - present_at_location_ids: - type: - - "null" - - array - items: - type: - - "null" - - string - discount_data: - type: - - "null" - - object - properties: - name: - type: - - "null" - - string - discount_type: - type: - - "null" - - string - percentage: - type: - - "null" - - string - application_method: - type: - - "null" - - string - modify_tax_basis: - type: - - "null" - - string - amount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - pin_required: - type: - - "null" - - boolean - taxes_stream: - $ref: "#/definitions/base_catalog_objects_stream" - $parameters: - name: "taxes" - object_type: "TAX" - path: "/catalog/search" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - type: - type: - - "null" - - string - id: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - version: - type: - - "null" - - integer - is_deleted: - type: - - "null" - - boolean - present_at_all_locations: - type: - - "null" - - boolean - tax_data: - type: - - "null" - - object - properties: - name: - type: - - "null" - - string - calculation_phase: - type: - - "null" - - string - inclusion_type: - type: - - "null" - - string - percentage: - type: - - "null" - - string - applies_to_custom_amounts: - type: - - "null" - - boolean - enabled: - type: - - "null" - - boolean - tax_type_id: - type: - - "null" - - string - tax_type_name: - type: - - "null" - - string - absent_at_location_ids: - type: - - "null" - - array - items: - type: - - "null" - - string - modifier_list_stream: - $ref: "#/definitions/base_catalog_objects_stream" - $parameters: - name: "modifier_list" - object_type: "MODIFIER_LIST" - path: "/catalog/search" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - type: - type: - - "null" - - string - id: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - version: - type: - - "null" - - integer - is_deleted: - type: - - "null" - - boolean - present_at_all_locations: - type: - - "null" - - boolean - modifier_list_data: - type: - - "null" - - object - properties: - name: - type: - - "null" - - string - selection_type: - type: - - "null" - - string - modifiers: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - type: - type: - - "null" - - string - id: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - version: - type: - - "null" - - integer - is_deleted: - type: - - "null" - - boolean - present_at_all_locations: - type: - - "null" - - boolean - modifier_data: - type: - - "null" - - object - properties: - name: - type: - - "null" - - string - price_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - on_by_default: - type: - - "null" - - boolean - ordinal: - type: - - "null" - - integer - modifier_list_id: - type: - - "null" - - string - refunds_stream: - $ref: "#/definitions/base_incremental_stream" - $parameters: - name: "refunds" - primary_key: "id" - path: "/refunds" - retriever: - $ref: "#/definitions/base_incremental_stream/retriever" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - id: - type: - - "null" - - string - status: - type: - - "null" - - string - amount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - required: - - amount - - currency - payment_id: - type: - - "null" - - string - order_id: - type: - - "null" - - string - created_at: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - location_id: - type: - - "null" - - string - reason: - type: - - "null" - - string - processing_fee: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - effective_at: - type: - - "null" - - string - type: - type: - - "null" - - string - amount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - payments_stream: - $ref: "#/definitions/base_incremental_stream" - $parameters: - name: "payments" - primary_key: "id" - path: "/payments" - retriever: - $ref: "#/definitions/base_incremental_stream/retriever" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - id: - type: - - "null" - - string - created_at: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - amount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - customer_id: - type: - - "null" - - string - status: - type: - - "null" - - string - delay_duration: - type: - - "null" - - string - source_type: - type: - - "null" - - string - card_details: - type: - - "null" - - object - properties: - status: - type: - - "null" - - string - card: - type: - - "null" - - object - properties: - card_brand: - type: - - "null" - - string - last_4: - type: - - "null" - - string - exp_month: - type: - - "null" - - integer - exp_year: - type: - - "null" - - integer - fingerprint: - type: - - "null" - - string - card_type: - type: - - "null" - - string - prepaid_type: - type: - - "null" - - string - bin: - type: - - "null" - - string - entry_method: - type: - - "null" - - string - cvv_status: - type: - - "null" - - string - avs_status: - type: - - "null" - - string - statement_description: - type: - - "null" - - string - card_payment_timeline: - type: - - "null" - - object - properties: - authorized_at: - type: - - "null" - - string - captured_at: - type: - - "null" - - string - voided_at: - type: - - "null" - - string - location_id: - type: - - "null" - - string - order_id: - type: - - "null" - - string - risk_evaluation: - type: - - "null" - - object - properties: - created_at: - type: - - "null" - - string - risk_level: - type: - - "null" - - string - processing_fee: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - effective_at: - type: - - "null" - - string - type: - type: - - "null" - - string - amount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - approved_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - receipt_number: - type: - - "null" - - string - receipt_url: - type: - - "null" - - string - delay_action: - type: - - "null" - - string - delayed_until: - type: - - "null" - - string - version_token: - type: - - "null" - - string - note: - type: - - "null" - - string - employee_id: - type: - - "null" - - string - refunded_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - refund_ids: - type: - - "null" - - array - items: - type: - - "null" - - string - loyalty_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "loyalty" - primary_key: "id" - path: "/loyalty/accounts/search" - retriever: - $ref: "#/definitions/base_stream_page_json_limit/retriever" - requester: - $ref: "#/definitions/base_stream_page_json_limit/retriever/requester" - http_method: "POST" - request_body_json: - limit: "{{ 200 }}" - record_selector: - $ref: "#/definitions/selector" - extractor: - field_path: ["loyalty_accounts"] - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-07/schema# - title: Loyalty schema - type: object - additionalProperties: true - properties: - id: - type: - - string - - "null" - mapping: - type: - - object - - "null" - properties: - id: - type: - - string - - "null" - phone_number: - type: - - string - - "null" - created_at: - type: - - string - - "null" - program_id: - type: - - string - - "null" - balance: - type: - - number - - "null" - lifetime_points: - type: - - number - - "null" - customer_id: - type: - - string - - "null" - created_at: - type: - - string - - "null" - updated_at: - type: - - string - - "null" - - orders_stream: - # ToDo: Improve the efficiency of this stream by grouping location IDs into batches of 10. - $ref: "#/definitions/base_stream_page_json_limit" - $parameters: - name: "orders" - primary_key: "id" - path: "/orders/search" - incremental_sync: - type: DatetimeBasedCursor - start_datetime: - datetime: - "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') - }}" - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - step: P30D - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - cursor_granularity: "PT0.000001S" - cursor_field: "updated_at" - retriever: - $ref: "#/definitions/base_stream_page_json_limit/retriever" - requester: - $ref: "#/definitions/base_stream_page_json_limit/retriever/requester" - http_method: "POST" - request_body_json: - limit: "{{ 500 }}" - filter: - date_time_filter: - updated_at: - start_at: "{{ stream_slice.start_time }}" - sort: - sort_field: "UPDATED_AT" - sort_order: "ASC" - location_ids: "{{ [ stream_slice.location_ids ] }}" - partition_router: - type: "SubstreamPartitionRouter" - parent_stream_configs: - - stream: "#/definitions/locations_stream" - parent_key: "id" - partition_field: "location_ids" - - schema_loader: - type: InlineSchemaLoader - schema: - type: object - properties: - id: - type: - - "null" - - string - location_id: - type: - - "null" - - string - customer_id: - type: - - "null" - - string - line_items: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - catalog_object_id: - type: - - "null" - - string - quantity: - type: - - "null" - - string - name: - type: - - "null" - - string - variation_name: - type: - - "null" - - string - base_price_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - gross_sales_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_tax_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_discount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - variation_total_price_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - item_type: - type: - - "null" - - string - modifiers: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - base_price_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_price_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - name: - type: - - "null" - - string - catalog_object_id: - type: - - "null" - - string - applied_discounts: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - discount_uid: - type: - - "null" - - string - applied_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - applied_taxes: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - tax_uid: - type: - - "null" - - string - applied_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - note: - type: - - "null" - - string - fulfillments: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - type: - type: - - "null" - - string - state: - type: - - "null" - - string - pickup_details: - type: - - "null" - - object - properties: - expires_at: - type: - - "null" - - string - pickup_at: - type: - - "null" - - string - note: - type: - - "null" - - string - placed_at: - type: - - "null" - - string - accepted_at: - type: - - "null" - - string - ready_at: - type: - - "null" - - string - schedule_type: - type: - - "null" - - string - recipient: - type: - - "null" - - object - properties: - display_name: - type: - - "null" - - string - phone_number: - type: - - "null" - - string - auto_complete_duration: - type: - - "null" - - string - picked_up_at: - type: - - "null" - - string - shipment_details: - type: - - "null" - - object - properties: - recipient: - type: - - "null" - - object - properties: - display_name: - type: - - "null" - - string - phone_number: - type: - - "null" - - string - address: - type: - - "null" - - object - properties: - address_line_1: - type: - - "null" - - string - locality: - type: - - "null" - - string - administrative_district_level_1: - type: - - "null" - - string - postal_code: - type: - - "null" - - string - carrier: - type: - - "null" - - string - tracking_number: - type: - - "null" - - string - placed_at: - type: - - "null" - - string - packaged_at: - type: - - "null" - - string - shipped_at: - type: - - "null" - - string - expected_shipped_at: - type: - - "null" - - string - in_progress_at: - type: - - "null" - - string - created_at: - type: - - "null" - - string - updated_at: - type: - - "null" - - string - state: - type: - - "null" - - string - version: - type: - - "null" - - integer - total_tax_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_discount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_tip_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - closed_at: - type: - - "null" - - string - tenders: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - id: - type: - - "null" - - string - location_id: - type: - - "null" - - string - transaction_id: - type: - - "null" - - string - created_at: - type: - - "null" - - string - amount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - type: - type: - - "null" - - string - card_details: - type: - - "null" - - object - properties: - status: - type: - - "null" - - string - card: - type: - - "null" - - object - properties: - card_brand: - type: - - "null" - - string - last_4: - type: - - "null" - - string - fingerprint: - type: - - "null" - - string - entry_method: - type: - - "null" - - string - payment_id: - type: - - "null" - - string - cash_details: - type: - - "null" - - object - properties: - buyer_tendered_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - change_back_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - note: - type: - - "null" - - string - total_service_charge_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - net_amounts: - type: - - "null" - - object - properties: - total_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - tax_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - discount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - tip_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - service_charge_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - source: - type: - - "null" - - object - properties: - name: - type: - - "null" - - string - returns: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - source_order_id: - type: - - "null" - - string - return_line_items: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - quantity: - type: - - "null" - - string - item_type: - type: - - "null" - - string - base_price_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - variation_total_price_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - gross_return_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_tax_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_discount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - return_amounts: - type: - - "null" - - object - properties: - total_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - tax_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - discount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - tip_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - service_charge_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - refunds: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - id: - type: - - "null" - - string - location_id: - type: - - "null" - - string - transaction_id: - type: - - "null" - - string - tender_id: - type: - - "null" - - string - created_at: - type: - - "null" - - string - reason: - type: - - "null" - - string - amount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - status: - type: - - "null" - - string - service_charges: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - name: - type: - - "null" - - string - amount_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - applied_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - calculation_phase: - type: - - "null" - - string - taxable: - type: - - "null" - - boolean - total_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - total_tax_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - discounts: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - name: - type: - - "null" - - string - percentage: - type: - - "null" - - string - applied_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - type: - type: - - "null" - - string - scope: - type: - - "null" - - string - taxes: - type: - - "null" - - array - items: - type: - - "null" - - object - properties: - uid: - type: - - "null" - - string - catalog_object_id: - type: - - "null" - - string - name: - type: - - "null" - - string - percentage: - type: - - "null" - - string - type: - type: - - "null" - - string - applied_money: - type: - - "null" - - object - properties: - amount: - type: - - "null" - - integer - currency: - type: - - "null" - - string - scope: - type: - - "null" - - string - bank_accounts_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "bank_accounts" - primary_key: "id" - path: "/bank-accounts" - - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-07/schema# - type: object - additionalProperties: true - properties: - id: - type: - - "null" - - string - account_number_suffix: - type: - - "null" - - string - country: - type: - - "null" - - string - currency: - type: - - "null" - - string - account_type: - type: - - "null" - - string - holder_name: - type: - - "null" - - string - primary_bank_identification_number: - type: - - "null" - - string - location_id: - type: - - "null" - - string - status: - type: - - "null" - - string - creditable: - type: - - "null" - - boolean - debitable: - type: - - "null" - - boolean - version: - type: - - "null" - - integer - bank_name: - type: - - "null" - - string -streams: - - "#/definitions/customers_stream" - - "#/definitions/locations_stream" - - "#/definitions/shifts_stream" - - "#/definitions/team_members_stream" - - "#/definitions/team_member_wages_stream" - - "#/definitions/items_stream" - - "#/definitions/categories_stream" - - "#/definitions/discounts_stream" - - "#/definitions/taxes_stream" - - "#/definitions/modifier_list_stream" - - "#/definitions/refunds_stream" - - "#/definitions/inventory_stream" - - "#/definitions/payments_stream" - - "#/definitions/orders_stream" - - "#/definitions/bank_accounts_stream" - - "#/definitions/cash_drawers_stream" - - "#/definitions/loyalty_stream" - -check: - stream_names: - - "locations" - -spec: - type: Spec - documentation_url: https://docs.airbyte.com/integrations/sources/square - connection_specification: - $schema: http://json-schema.org/draft-07/schema# - title: Square Spec - type: object - required: - - is_sandbox - additionalProperties: true - properties: - credentials: - title: Authentication - description: Choose how to authenticate to Square. - type: object - order: 0 - oneOf: - - title: Oauth authentication - type: object - required: - - auth_type - - client_id - - client_secret - - refresh_token - properties: - auth_type: - type: string - const: OAuth - order: 0 - client_id: - type: string - title: Client ID - description: The Square-issued ID of your application - airbyte_secret: true - client_secret: - type: string - title: Client Secret - description: The Square-issued application secret for your application - airbyte_secret: true - refresh_token: - title: Refresh Token - type: string - description: A refresh token generated using the above client ID and secret - airbyte_secret: true - - title: API key - type: object - required: - - auth_type - - api_key - properties: - auth_type: - type: string - const: API Key - order: 1 - api_key: - type: string - title: API key token - description: The API key for a Square application - airbyte_secret: true - is_sandbox: - type: boolean - description: Determines whether to use the sandbox or production environment. - title: Sandbox - default: false - order: 1 - start_date: - type: string - description: UTC date in the format YYYY-MM-DD. Any data before this date will not be replicated. If not set, all data will be replicated. - title: Start Date - default: "2021-01-01" - pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ - order: 2 - format: date - include_deleted_objects: - type: boolean - description: In some streams there is an option to include deleted objects (Items, Categories, Discounts, Taxes) - title: Include Deleted Objects - default: false - order: 3 - advanced_auth: - auth_flow_type: oauth2.0 - predicate_key: - - credentials - - auth_type - predicate_value: OAuth - oauth_config_specification: - complete_oauth_output_specification: - type: object - additionalProperties: false - properties: - refresh_token: - type: string - path_in_connector_config: - - credentials - - refresh_token - complete_oauth_server_input_specification: - type: object - additionalProperties: false - properties: - client_id: - type: string - client_secret: - type: string - complete_oauth_server_output_specification: - type: object - additionalProperties: false - properties: - client_id: - type: string - path_in_connector_config: - - credentials - - client_id - client_secret: - type: string - path_in_connector_config: - - credentials - - client_secret diff --git a/airbyte-integrations/connectors/source-square/source_square/run.py b/airbyte-integrations/connectors/source-square/source_square/run.py deleted file mode 100644 index df5f3fd74012c..0000000000000 --- a/airbyte-integrations/connectors/source-square/source_square/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_square import SourceSquare - - -def run(): - source = SourceSquare() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-square/source_square/source.py b/airbyte-integrations/connectors/source-square/source_square/source.py deleted file mode 100644 index 9f88faa5acea7..0000000000000 --- a/airbyte-integrations/connectors/source-square/source_square/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceSquare(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-square/unit_tests/test_source.py b/airbyte-integrations/connectors/source-square/unit_tests/test_source.py deleted file mode 100644 index 4b22453d75632..0000000000000 --- a/airbyte-integrations/connectors/source-square/unit_tests/test_source.py +++ /dev/null @@ -1,32 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -import logging - -import pytest -import requests_mock -from source_square.source import SourceSquare - -DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ" -CURSOR_GRANULARITY = "PT0.000001S" - - -@pytest.fixture -def req_mock(): - with requests_mock.Mocker() as mock: - yield mock - - -def test_source_wrong_credentials(): - source = SourceSquare() - config = { - "credentials": {"auth_type": "Apikey", "api_key": "bla"}, - "is_sandbox": True, - "start_date": "2021-06-01", - "include_deleted_objects": False, - } - - with pytest.raises(ValueError) as key_error: - status, error = source.check_connection(logger=logging.getLogger("airbyte"), config=config) - assert str(key_error.value) == "The authenticator `Apikey` is not found." diff --git a/docs/integrations/sources/square.md b/docs/integrations/sources/square.md index 4e2f0e3c9cff1..535400d0f2833 100644 --- a/docs/integrations/sources/square.md +++ b/docs/integrations/sources/square.md @@ -103,6 +103,7 @@ Exponential [Backoff](https://developer.squareup.com/forums/t/current-square-api | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------ | +| 1.7.0 | 2024-10-06 | [46527](https://github.com/airbytehq/airbyte/pull/46527) | Migrate to Manifest-only | | 1.6.23 | 2024-10-05 | [46409](https://github.com/airbytehq/airbyte/pull/46409) | Update dependencies | | 1.6.22 | 2024-09-28 | [46162](https://github.com/airbytehq/airbyte/pull/46162) | Update dependencies | | 1.6.21 | 2024-09-21 | [45787](https://github.com/airbytehq/airbyte/pull/45787) | Update dependencies | From b5929deb7817cd2394d77252ef5ca5ebf171689d Mon Sep 17 00:00:00 2001 From: btkcodedev Date: Mon, 7 Oct 2024 05:48:37 +0530 Subject: [PATCH 152/379] Source Unleash: Migrate to manifest-only (#46525) Co-authored-by: Octavia Squidington III --- .../connectors/source-unleash/README.md | 80 +- .../connectors/source-unleash/__init__.py | 3 - .../source-unleash/acceptance-test-config.yml | 2 +- .../connectors/source-unleash/bootstrap.md | 48 - .../connectors/source-unleash/main.py | 8 - .../connectors/source-unleash/manifest.yaml | 240 ++++ .../connectors/source-unleash/metadata.yaml | 8 +- .../connectors/source-unleash/poetry.lock | 1049 ----------------- .../connectors/source-unleash/pyproject.toml | 28 - .../source-unleash/source_unleash/__init__.py | 8 - .../source_unleash/manifest.yaml | 58 - .../source-unleash/source_unleash/run.py | 14 - .../source_unleash/schemas/features.json | 75 -- .../source-unleash/source_unleash/source.py | 18 - .../source-unleash/source_unleash/spec.yaml | 39 - docs/integrations/sources/unleash.md | 1 + 16 files changed, 273 insertions(+), 1406 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-unleash/__init__.py delete mode 100644 airbyte-integrations/connectors/source-unleash/bootstrap.md delete mode 100644 airbyte-integrations/connectors/source-unleash/main.py create mode 100644 airbyte-integrations/connectors/source-unleash/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-unleash/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-unleash/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-unleash/source_unleash/__init__.py delete mode 100644 airbyte-integrations/connectors/source-unleash/source_unleash/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-unleash/source_unleash/run.py delete mode 100644 airbyte-integrations/connectors/source-unleash/source_unleash/schemas/features.json delete mode 100644 airbyte-integrations/connectors/source-unleash/source_unleash/source.py delete mode 100644 airbyte-integrations/connectors/source-unleash/source_unleash/spec.yaml diff --git a/airbyte-integrations/connectors/source-unleash/README.md b/airbyte-integrations/connectors/source-unleash/README.md index b36cec56c863c..36c664473fd59 100644 --- a/airbyte-integrations/connectors/source-unleash/README.md +++ b/airbyte-integrations/connectors/source-unleash/README.md @@ -1,89 +1,63 @@ # Unleash source connector +This directory contains the manifest-only connector for `source-unleash`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -This is the repository for the Unleash source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/unleash). +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/unleash). ## Local development -### Prerequisites -* Python (~=3.9) -* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! +If you prefer to develop locally, you can follow the instructions below. -### Installing the connector -From this connector directory, run: -```bash -poetry install --with dev -``` - - -### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/unleash) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_unleash/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - - -### Locally running the connector -``` -poetry run source-unleash spec -poetry run source-unleash check --config secrets/config.json -poetry run source-unleash discover --config secrets/config.json -poetry run source-unleash read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` +### Building the docker image -### Running unit tests -To run unit tests locally, from the connector directory run: -``` -poetry run pytest unit_tests -``` +You can build any manifest-only connector with `airbyte-ci`: -### Building the docker image 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: + ```bash airbyte-ci connectors --name=source-unleash build ``` An image will be available on your host with the tag `airbyte/source-unleash:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/unleash) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. ### Running as a docker container -Then run any of the connector commands as follows: -``` + +Then run any of the standard source connector commands: + +```bash docker run --rm airbyte/source-unleash:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-unleash:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-unleash:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-unleash:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite -You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -```bash -airbyte-ci connectors --name=source-unleash test -``` +### Running the CI test suite -### Customizing acceptance Tests -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. +You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -### Dependency Management -All of your dependencies should be managed via Poetry. -To add a new dependency, run: ```bash -poetry add +airbyte-ci connectors --name=source-unleash test ``` -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-unleash test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + +If you want to contribute changes to `source-unleash`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-unleash test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/unleash.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. diff --git a/airbyte-integrations/connectors/source-unleash/__init__.py b/airbyte-integrations/connectors/source-unleash/__init__.py deleted file mode 100644 index 1100c1c58cf51..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2022 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-unleash/acceptance-test-config.yml b/airbyte-integrations/connectors/source-unleash/acceptance-test-config.yml index 8d2db9558bc46..a441f50668b63 100644 --- a/airbyte-integrations/connectors/source-unleash/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-unleash/acceptance-test-config.yml @@ -4,7 +4,7 @@ connector_image: airbyte/source-unleash:dev acceptance_tests: spec: tests: - - spec_path: "source_unleash/spec.yaml" + - spec_path: "manifest.yaml" connection: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-unleash/bootstrap.md b/airbyte-integrations/connectors/source-unleash/bootstrap.md deleted file mode 100644 index 5c0f3051900c1..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/bootstrap.md +++ /dev/null @@ -1,48 +0,0 @@ -# Unleash - -## Overview - -[Unleash API](https://docs.getunleash.io/reference/api/legacy/unleash) is a web service for accessing the data from your Unleash feature experiments. To get started, You need a key to successfully authenticate against the API. Unleash is implemented with the [Airbyte Low-Code CDK](https://docs.airbyte.com/connector-development/config-based/low-code-cdk-overview). - -The Unleash source can sync data from the [Unleash API](https://docs.getunleash.io/reference/api/legacy/unleash). At present this connector only supports full refresh syncs meaning that each time you use the connector it will sync all available records from scratch. - -## Output Format - -#### Each content item has the following structure:- - -```yaml -{ - "name": "string", - "description": "string" - "project": "string" - "type": "string" - "enabled": "boolean" - "stale": "boolean" - "strategies": "array" - "strategy": "string" - "parameters": "object" - "impressionData": "boolean" - "variants": "array" -} -``` - -**Description:-** - -**webPublicationDate**: The combined date and time of publication -**webUrl**: The URL of the html content -**apiUrl**: The URL of the raw content - -## Core Streams - -Connector supports the `features` stream that returns all pieces of content in the API. - -## Rate Limiting - -The key that you are assigned is rate-limited and as such any applications that depend on making large numbers of requests on a polling basis are likely to exceed their daily quota and thus be prevented from making further requests until the next period begins. - -## Authentication and Permissions - -To access the API, you will need to sign up for an API key, which should be sent with every request. Visit [this](https://docs.getunleash.io/how-to/how-to-create-api-tokens) link to get an API key. -You can see the type of payload the API returns by visiting [this](https://docs.getunleash.io/reference/api/legacy/unleash/client/features). - -See [this](https://docs.airbyte.io/integrations/sources/unleash) link for the connector docs. diff --git a/airbyte-integrations/connectors/source-unleash/main.py b/airbyte-integrations/connectors/source-unleash/main.py deleted file mode 100644 index 72ec2c888dcb9..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_unleash.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-unleash/manifest.yaml b/airbyte-integrations/connectors/source-unleash/manifest.yaml new file mode 100644 index 0000000000000..04f90fa27ec85 --- /dev/null +++ b/airbyte-integrations/connectors/source-unleash/manifest.yaml @@ -0,0 +1,240 @@ +version: 5.10.2 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - features + +definitions: + streams: + features: + type: DeclarativeStream + name: features + primary_key: + - name + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: features + http_method: GET + request_parameters: + project: "{{ config[\"project_name\"] }}" + namePrefix: "{{ config[\"nameprefix\"] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: FAIL + http_codes: + - 401 + error_message: Unauthorized + - type: DefaultErrorHandler + max_retries: 3 + response_filters: + - type: HttpResponseFilter + action: RETRY + http_codes: + - 403 + error_message: Forbidden + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + - type: DefaultErrorHandler + max_retries: 3 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - features + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/features" + base_requester: + type: HttpRequester + url_base: https://{{ config["api_url"] }}/api/client + authenticator: + type: ApiKeyAuthenticator + inject_into: + type: RequestOption + inject_into: header + field_name: Authorization + api_token: "{{ config[\"api_token\"] }}" + +streams: + - $ref: "#/definitions/streams/features" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_token + - api_url + properties: + api_token: + type: string + description: >- + Your API Token (Server-Side SDK [Client]). See here. + The token is case sensitive. + title: API Token Client + airbyte_secret: true + examples: + - >- + project:environment.be44368985f7fb3237c584ef86f3d6bdada42ddbd63a019d26955178 + - >- + *:environment.be44368985f7fb3237c584ef86f3d6bdada42ddbd63a019d26955178 + - be44368985f7fb3237c584ef86f3d6bdada42ddbd63a019d26955178 + order: 0 + api_url: + type: string + description: "Your API URL. No trailing slash. ex: https://unleash.host.com/api" + title: API URL + order: 1 + project_name: + type: string + description: >- + Use this if you want to filter the API call for only one given project + (can be used in addition to the "Feature Name Prefix" field). See here + title: Project Name + order: 2 + nameprefix: + type: string + description: >- + Use this if you want to filter the API call for only one given project + (can be used in addition to the "Feature Name Prefix" field). See here + title: Feature Name Prefix + order: 3 + additionalProperties: true + +metadata: + autoImportSchema: + features: false + testedStreams: + features: + streamHash: 8950acc55e5fdb5c59254187acde679a6e37f06e + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: {} + +schemas: + features: + type: object + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + name: + type: + - string + - "null" + project: + type: + - string + - "null" + enabled: + type: + - boolean + - "null" + stale: + type: + - boolean + - "null" + strategies: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + constraints: + type: + - array + - "null" + parameters: + type: + - object + - "null" + strategy: + type: + - string + - "null" + parameters: + type: + - object + - "null" + impressionData: + type: + - boolean + - "null" + variants: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + weight: + type: + - integer + - "null" + weightType: + type: + - string + - "null" + stickiness: + type: + - string + - "null" + payload: + type: + - object + - "null" + overrides: + type: + - array + - "null" + additionalProperties: true diff --git a/airbyte-integrations/connectors/source-unleash/metadata.yaml b/airbyte-integrations/connectors/source-unleash/metadata.yaml index b956f107c94c1..8c91bb98ac434 100644 --- a/airbyte-integrations/connectors/source-unleash/metadata.yaml +++ b/airbyte-integrations/connectors/source-unleash/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: f77914a1-442b-4195-9355-8810a1f4ed3f - dockerImageTag: 0.1.18 + dockerImageTag: 0.2.0 dockerRepository: airbyte/source-unleash githubIssueLabel: source-unleash icon: unleash.svg @@ -10,7 +10,7 @@ data: name: Unleash remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-unleash registryOverrides: cloud: @@ -20,8 +20,8 @@ data: releaseStage: alpha documentationUrl: https://docs.airbyte.com/integrations/sources/unleash tags: - - language:python - cdk:low-code + - language:manifest-only ab_internal: sl: 100 ql: 100 @@ -35,5 +35,5 @@ data: type: GSM alias: airbyte-connector-testing-secret-store connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-unleash/poetry.lock b/airbyte-integrations/connectors/source-unleash/poetry.lock deleted file mode 100644 index 4db559b53ed78..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/poetry.lock +++ /dev/null @@ -1,1049 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "0.80.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-0.80.0-py3-none-any.whl", hash = "sha256:060e92323a73674fa4e9e2e4a1eb312b9b9d072c9bbe5fa28f54ef21cb4974f3"}, - {file = "airbyte_cdk-0.80.0.tar.gz", hash = "sha256:1383512a83917fecca5b24cea4c72aa5c561cf96dd464485fbcefda48fe574c5"}, -] - -[package.dependencies] -airbyte-protocol-models = "0.5.1" -backoff = "*" -cachetools = "*" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.0.1,<2.1.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.0.271)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.5.1" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.5.1-py3-none-any.whl", hash = "sha256:dfe84e130e51ce2ae81a06d5aa36f6c5ce3152b9e36e6f0195fad6c3dab0927e"}, - {file = "airbyte_protocol_models-0.5.1.tar.gz", hash = "sha256:7c8b16c7c1c7956b1996052e40585a3a93b1e44cb509c4e97c1ee4fe507ea086"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.0.8" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "packaging" -version = "24.1" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "6.2.5" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "990042bd8aff2361370f7cea38b2dffbadb5bd28397a241166061ec2619f6426" diff --git a/airbyte-integrations/connectors/source-unleash/pyproject.toml b/airbyte-integrations/connectors/source-unleash/pyproject.toml deleted file mode 100644 index 986eedbce7c2b..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "0.1.18" -name = "source-unleash" -description = "Source implementation for Unleash." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/unleash" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_unleash" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "0.80.0" - -[tool.poetry.scripts] -source-unleash = "source_unleash.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "^1.9.3" -pytest = "^6.2" -pytest-mock = "^3.6.1" diff --git a/airbyte-integrations/connectors/source-unleash/source_unleash/__init__.py b/airbyte-integrations/connectors/source-unleash/source_unleash/__init__.py deleted file mode 100644 index fbc7aad44b1e1..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/source_unleash/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2022 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceUnleash - -__all__ = ["SourceUnleash"] diff --git a/airbyte-integrations/connectors/source-unleash/source_unleash/manifest.yaml b/airbyte-integrations/connectors/source-unleash/source_unleash/manifest.yaml deleted file mode 100644 index 23ce38af9bdea..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/source_unleash/manifest.yaml +++ /dev/null @@ -1,58 +0,0 @@ -version: "0.80.0" - -definitions: - selector: - extractor: - field_path: [] - selector_features: - extractor: - field_path: ["features"] - requester: - url_base: "{{ config['api_url'] }}/client" - http_method: "GET" - request_options_provider: - request_headers: - "Content-Type": "application/json" - authenticator: - type: ApiKeyAuthenticator - header: "Authorization" - api_token: "{{ config['api_token'] }}" - - error_handler: - type: "DefaultErrorHandler" - error_handlers: - - response_filters: - - http_codes: [401] - action: FAIL - - http_codes: [403] - action: RETRY - retriever: - record_selector: - $ref: "#/definitions/selector" - paginator: - type: NoPagination - requester: - $ref: "#/definitions/requester" - - base_stream: - retriever: - $ref: "#/definitions/retriever" - - # API Docs: https://docs.getunleash.io/reference/api/legacy/unleash/client/features - features_stream: - $ref: "#/definitions/base_stream" - retriever: - $ref: "#/definitions/retriever" - record_selector: - $ref: "#/definitions/selector_features" - $parameters: - name: "features" - primary_key: "name" - path: "/features?{{ ('project=' ~ config['project_name']) if config['project_name'] is defined else '' }}&{{ ('namePrefix=' ~ config['nameprefix']) if config['nameprefix'] is defined else '' }}" - -streams: - - "$ref": "#/definitions/features_stream" - -check: - stream_names: - - "features" diff --git a/airbyte-integrations/connectors/source-unleash/source_unleash/run.py b/airbyte-integrations/connectors/source-unleash/source_unleash/run.py deleted file mode 100644 index 0de14599b8b36..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/source_unleash/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_unleash import SourceUnleash - - -def run(): - source = SourceUnleash() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-unleash/source_unleash/schemas/features.json b/airbyte-integrations/connectors/source-unleash/source_unleash/schemas/features.json deleted file mode 100644 index 9fde8dcd888de..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/source_unleash/schemas/features.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "type": "object", - "properties": { - "name": { - "type": ["string", "null"] - }, - "description": { - "type": ["string", "null"] - }, - "project": { - "type": ["string", "null"] - }, - "type": { - "type": ["string", "null"] - }, - "enabled": { - "type": ["boolean", "null"] - }, - "stale": { - "type": ["boolean", "null"] - }, - "strategies": { - "type": ["array", "null"], - "items": { - "type": ["object", "null"], - "properties": { - "name": { - "type": ["string", "null"] - }, - "constraints": { - "type": ["array", "null"] - }, - "parameters": { - "type": ["object", "null"] - } - } - } - }, - "strategy": { - "type": ["string", "null"] - }, - "parameters": { - "type": ["object", "null"] - }, - "impressionData": { - "type": ["boolean", "null"] - }, - "variants": { - "type": ["array", "null"], - "items": { - "type": ["object", "null"], - "properties": { - "name": { - "type": ["string", "null"] - }, - "weight": { - "type": ["integer", "null"] - }, - "weightType": { - "type": ["string", "null"] - }, - "stickiness": { - "type": ["string", "null"] - }, - "payload": { - "type": ["object", "null"] - }, - "overrides": { - "type": ["array", "null"] - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-unleash/source_unleash/source.py b/airbyte-integrations/connectors/source-unleash/source_unleash/source.py deleted file mode 100644 index 4047256d52f3d..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/source_unleash/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceUnleash(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-unleash/source_unleash/spec.yaml b/airbyte-integrations/connectors/source-unleash/source_unleash/spec.yaml deleted file mode 100644 index 0c04356731942..0000000000000 --- a/airbyte-integrations/connectors/source-unleash/source_unleash/spec.yaml +++ /dev/null @@ -1,39 +0,0 @@ -documentationUrl: https://docs.airbyte.io/integrations/sources/unleash -connectionSpecification: - $schema: https://json-schema.org/draft-07/schema# - title: Unleash Source Spec - type: object - required: - - api_token - - api_url - additionalProperties: true - properties: - api_token: - title: API Token Client - type: string - description: >- - Your API Token (Server-Side SDK [Client]). See here. The token is - case sensitive. - airbyte_secret: true - examples: - - "project:environment.be44368985f7fb3237c584ef86f3d6bdada42ddbd63a019d26955178" - - "*:environment.be44368985f7fb3237c584ef86f3d6bdada42ddbd63a019d26955178" - - "be44368985f7fb3237c584ef86f3d6bdada42ddbd63a019d26955178" - api_url: - title: API URL - type: string - description: >- - Your API URL. No trailing slash. ex: https://unleash.host.com/api - project_name: - title: Project Name - type: string - description: >- - Use this if you want to filter the API call for only one given project (can be used in addition to the "Feature Name Prefix" field). - See here - nameprefix: - title: Feature Name Prefix - type: string - description: >- - Use this if you want to filter the API call for only one given project (can be used in addition to the "Feature Name Prefix" field). - See here diff --git a/docs/integrations/sources/unleash.md b/docs/integrations/sources/unleash.md index cd8c3853f70b5..958a30d2c26b1 100644 --- a/docs/integrations/sources/unleash.md +++ b/docs/integrations/sources/unleash.md @@ -58,6 +58,7 @@ The API key that you are assigned is rate-limited. | Version | Date | Pull Request | Subject | | :------ | :--------- | :-------------------------------------------------------- | :------------------------------------ | +| 0.2.0 | 2024-10-06 | [46525](https://github.com/airbytehq/airbyte/pull/46525) | Converting to manifest-only format | | 0.1.18 | 2024-10-05 | [46490](https://github.com/airbytehq/airbyte/pull/46490) | Update dependencies | | 0.1.17 | 2024-09-28 | [46113](https://github.com/airbytehq/airbyte/pull/46113) | Update dependencies | | 0.1.16 | 2024-09-21 | [45817](https://github.com/airbytehq/airbyte/pull/45817) | Update dependencies | From 1875cf1c18e75b8d28fc77bd00c06d3957b1d8cc Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Mon, 7 Oct 2024 01:18:52 +0100 Subject: [PATCH 153/379] =?UTF-8?q?=E2=9C=A8=20Source=20Qonto=20:=20Migrat?= =?UTF-8?q?e=20to=20Manifest-only=20(#46523)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Octavia Squidington III --- .../connectors/source-qonto/README.md | 80 +- .../connectors/source-qonto/__init__.py | 3 - .../source-qonto/acceptance-test-config.yml | 2 +- .../connectors/source-qonto/main.py | 8 - .../connectors/source-qonto/manifest.yaml | 382 +++++ .../connectors/source-qonto/metadata.yaml | 8 +- .../connectors/source-qonto/poetry.lock | 1475 ----------------- .../connectors/source-qonto/pyproject.toml | 28 - .../source-qonto/source_qonto/__init__.py | 8 - .../source-qonto/source_qonto/manifest.yaml | 124 -- .../source-qonto/source_qonto/run.py | 14 - .../source_qonto/schemas/labels.json | 15 - .../source_qonto/schemas/memberships.json | 34 - .../source_qonto/schemas/transactions.json | 108 -- .../source-qonto/source_qonto/source.py | 18 - docs/integrations/sources/qonto.md | 1 + 16 files changed, 415 insertions(+), 1893 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-qonto/__init__.py delete mode 100644 airbyte-integrations/connectors/source-qonto/main.py create mode 100644 airbyte-integrations/connectors/source-qonto/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-qonto/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-qonto/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-qonto/source_qonto/__init__.py delete mode 100644 airbyte-integrations/connectors/source-qonto/source_qonto/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-qonto/source_qonto/run.py delete mode 100644 airbyte-integrations/connectors/source-qonto/source_qonto/schemas/labels.json delete mode 100644 airbyte-integrations/connectors/source-qonto/source_qonto/schemas/memberships.json delete mode 100644 airbyte-integrations/connectors/source-qonto/source_qonto/schemas/transactions.json delete mode 100644 airbyte-integrations/connectors/source-qonto/source_qonto/source.py diff --git a/airbyte-integrations/connectors/source-qonto/README.md b/airbyte-integrations/connectors/source-qonto/README.md index 4d5d54e6523c1..8d3427d88b2ed 100644 --- a/airbyte-integrations/connectors/source-qonto/README.md +++ b/airbyte-integrations/connectors/source-qonto/README.md @@ -1,89 +1,63 @@ # Qonto source connector +This directory contains the manifest-only connector for `source-qonto`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -This is the repository for the Qonto source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/qonto). +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/qonto). ## Local development -### Prerequisites -* Python (~=3.9) -* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! +If you prefer to develop locally, you can follow the instructions below. -### Installing the connector -From this connector directory, run: -```bash -poetry install --with dev -``` - - -### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/qonto) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_qonto/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - - -### Locally running the connector -``` -poetry run source-qonto spec -poetry run source-qonto check --config secrets/config.json -poetry run source-qonto discover --config secrets/config.json -poetry run source-qonto read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` +### Building the docker image -### Running unit tests -To run unit tests locally, from the connector directory run: -``` -poetry run pytest unit_tests -``` +You can build any manifest-only connector with `airbyte-ci`: -### Building the docker image 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: + ```bash airbyte-ci connectors --name=source-qonto build ``` An image will be available on your host with the tag `airbyte/source-qonto:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/qonto) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. ### Running as a docker container -Then run any of the connector commands as follows: -``` + +Then run any of the standard source connector commands: + +```bash docker run --rm airbyte/source-qonto:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-qonto:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-qonto:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-qonto:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite -You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -```bash -airbyte-ci connectors --name=source-qonto test -``` +### Running the CI test suite -### Customizing acceptance Tests -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. +You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -### Dependency Management -All of your dependencies should be managed via Poetry. -To add a new dependency, run: ```bash -poetry add +airbyte-ci connectors --name=source-qonto test ``` -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-qonto test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + +If you want to contribute changes to `source-qonto`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-qonto test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/qonto.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. diff --git a/airbyte-integrations/connectors/source-qonto/__init__.py b/airbyte-integrations/connectors/source-qonto/__init__.py deleted file mode 100644 index c941b30457953..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-qonto/acceptance-test-config.yml b/airbyte-integrations/connectors/source-qonto/acceptance-test-config.yml index 04b2b86f6277d..b09a60a56cfc9 100644 --- a/airbyte-integrations/connectors/source-qonto/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-qonto/acceptance-test-config.yml @@ -4,7 +4,7 @@ connector_image: airbyte/source-qonto:dev acceptance_tests: spec: tests: - - spec_path: "source_qonto/spec.yaml" + - spec_path: "manifest.yaml" connection: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-qonto/main.py b/airbyte-integrations/connectors/source-qonto/main.py deleted file mode 100644 index eb2e90e366c1f..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_qonto.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-qonto/manifest.yaml b/airbyte-integrations/connectors/source-qonto/manifest.yaml new file mode 100644 index 0000000000000..00218891cfcfe --- /dev/null +++ b/airbyte-integrations/connectors/source-qonto/manifest.yaml @@ -0,0 +1,382 @@ +version: 5.10.2 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - labels + - memberships + - transactions + +definitions: + streams: + labels: + type: DeclarativeStream + name: labels + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: labels + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - labels + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: current_page + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get(\"meta\", {}).get(\"next_page\", {}) }}" + stop_condition: "{{ not response.get(\"meta\", {}).get(\"next_page\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/labels" + memberships: + type: DeclarativeStream + name: memberships + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: memberships + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - memberships + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: current_page + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get(\"meta\", {}).get(\"next_page\", {}) }}" + stop_condition: "{{ not response.get(\"meta\", {}).get(\"next_page\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/memberships" + transactions: + type: DeclarativeStream + name: transactions + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: transactions + http_method: GET + request_parameters: + iban: "{{ config['iban'] }}" + settled_at_from: "{{ config['start_date'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - transactions + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: current_page + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get(\"meta\", {}).get(\"next_page\", {}) }}" + stop_condition: "{{ not response.get(\"meta\", {}).get(\"next_page\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/transactions" + base_requester: + type: HttpRequester + url_base: >- + {{ 'https://thirdparty.qonto.com/v2/' if config['endpoint'] == + 'Production' else + ('https://stoplight.io/mocks/qonto-next/business-api/8419419/v2' if + config['endpoint'] == 'Test Mocked API Server' else '') }} + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"api_key\"] }}" + inject_into: + type: RequestOption + field_name: Authorization + inject_into: header + +streams: + - $ref: "#/definitions/streams/labels" + - $ref: "#/definitions/streams/memberships" + - $ref: "#/definitions/streams/transactions" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - endpoint + - api_key + - iban + properties: + endpoint: + type: string + description: Please choose the right endpoint to use in this connection + enum: + - Production + - Test Mocked API Server + order: 0 + title: Endpoint + api_key: + type: string + description: "Fill it in this format: `:`" + order: 1 + title: API key + pattern: ^[\w-]+:[\w]+$ + examples: + - my-organization:3564f + airbyte_secret: true + pattern_descriptor: organization_slug:secret_key + iban: + type: string + description: International Bank Account Number linked used with your Qonto Account + order: 2 + title: IBAN + pattern: ^[A-Z0-9]*$ + start_date: + type: string + description: Start getting data from that date. + title: Start date + format: date + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ + examples: + - YYYY-MM-DD + order: 3 + additionalProperties: true + +metadata: + autoImportSchema: + labels: false + memberships: false + transactions: false + testedStreams: + labels: + streamHash: 4eef83a17d456d2d928eaaa9bcad3a08bbf32157 + memberships: + streamHash: 257eb175af504b59559adf8af516cb66c192cc10 + transactions: + streamHash: c9f5bf1b729147a2547b98b705f9a5ed625a0a8c + assist: {} + +schemas: + labels: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + id: + type: string + name: + type: + - "null" + - string + parent_id: + type: + - "null" + - string + memberships: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + birth_country: + type: + - "null" + - string + birthdate: + type: + - "null" + - string + first_name: + type: + - "null" + - string + id: + type: string + last_name: + type: + - "null" + - string + nationality: + type: + - "null" + - string + residence_country: + type: + - "null" + - string + role: + type: + - "null" + - string + ubo: + type: + - "null" + - boolean + transactions: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + amount: + type: + - "null" + - number + amount_cents: + type: + - "null" + - integer + attachment_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + attachment_lost: + type: + - "null" + - boolean + attachment_required: + type: + - "null" + - boolean + card_last_digits: + type: + - "null" + - string + category: + type: + - "null" + - string + currency: + type: + - "null" + - string + emitted_at: + type: + - "null" + - string + id: + type: + - "null" + - string + initiator_id: + type: + - "null" + - string + label: + type: + - "null" + - string + label_ids: + type: + - "null" + - array + items: + type: + - "null" + - string + local_amount: + type: + - "null" + - number + local_amount_cents: + type: + - "null" + - integer + local_currency: + type: + - "null" + - string + note: + type: + - "null" + - string + operation_type: + type: + - "null" + - string + reference: + type: + - "null" + - string + settled_at: + type: + - "null" + - string + settled_balance: + type: + - "null" + - number + settled_balance_cents: + type: + - "null" + - integer + side: + type: + - "null" + - string + status: + type: + - "null" + - string + subject_type: + type: + - "null" + - string + transaction_id: + type: + - "null" + - string + transfer: + type: + - "null" + - object + additionalProperties: true + properties: {} + updated_at: + type: + - "null" + - string + vat_amount: + type: + - "null" + - number + vat_amount_cents: + type: + - "null" + - number + vat_rate: + type: + - "null" + - number diff --git a/airbyte-integrations/connectors/source-qonto/metadata.yaml b/airbyte-integrations/connectors/source-qonto/metadata.yaml index eca7766792c8c..8bb0c53570e35 100644 --- a/airbyte-integrations/connectors/source-qonto/metadata.yaml +++ b/airbyte-integrations/connectors/source-qonto/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: ccd3901d-edf3-4e58-900c-942d6990aa59 - dockerImageTag: 0.2.22 + dockerImageTag: 0.3.0 dockerRepository: airbyte/source-qonto githubIssueLabel: source-qonto icon: qonto.svg @@ -13,7 +13,7 @@ data: supportLevel: community documentationUrl: https://docs.airbyte.com/integrations/sources/qonto tags: - - language:python + - language:manifest-only - cdk:low-code # Disabling acceptance tests for now # They are not passing @@ -27,9 +27,9 @@ data: # type: GSM # alias: airbyte-connector-testing-secret-store connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-qonto metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-qonto/poetry.lock b/airbyte-integrations/connectors/source-qonto/poetry.lock deleted file mode 100644 index 1aa5b5c1ab01e..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/poetry.lock +++ /dev/null @@ -1,1475 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "1.0.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-1.0.0-py3-none-any.whl", hash = "sha256:74cd8d4f9790b9a164731c42236cb015166b5ab2b0754b6a1fd730f223eb4e7f"}, - {file = "airbyte_cdk-1.0.0.tar.gz", hash = "sha256:102b75ce589460be4f75dabd3402ac7aa633c90758558c81d140fd436b76371f"}, -] - -[package.dependencies] -airbyte-protocol-models = ">=0.9.0,<1.0" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.0.1,<2.1.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.13.0" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.13.0-py3-none-any.whl", hash = "sha256:fa8b7e1a85f9ae171c50b30d23b317da1740d051994fd3ed648f9dfba00250e2"}, - {file = "airbyte_protocol_models-0.13.0.tar.gz", hash = "sha256:09d8900ba8674a9315fa1799d17026f6b38d2187c08160449540ee93331ed2e7"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.8" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.0.8" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.6" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.131" -description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, - {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} -requests = ">=2,<3" -requests-toolbelt = ">=1.0.0,<2.0.0" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "orjson" -version = "3.10.7" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "6.2.5" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "7837a8e446313e068be6245532d7ddb3a63f70da7bc4c6613d26c3a1443db8e7" diff --git a/airbyte-integrations/connectors/source-qonto/pyproject.toml b/airbyte-integrations/connectors/source-qonto/pyproject.toml deleted file mode 100644 index 026183f975329..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "0.2.22" -name = "source-qonto" -description = "Source implementation for Qonto." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/qonto" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_qonto" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "1.0.0" - -[tool.poetry.scripts] -source-qonto = "source_qonto.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "^1.9.3" -pytest = "^6.2" -pytest-mock = "^3.6.1" diff --git a/airbyte-integrations/connectors/source-qonto/source_qonto/__init__.py b/airbyte-integrations/connectors/source-qonto/source_qonto/__init__.py deleted file mode 100644 index 0574ef54e6593..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/source_qonto/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceQonto - -__all__ = ["SourceQonto"] diff --git a/airbyte-integrations/connectors/source-qonto/source_qonto/manifest.yaml b/airbyte-integrations/connectors/source-qonto/source_qonto/manifest.yaml deleted file mode 100644 index 7e8d2476f60f8..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/source_qonto/manifest.yaml +++ /dev/null @@ -1,124 +0,0 @@ -version: "0.29.0" - -definitions: - selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: - - "{{ parameters['path'] }}" - requester: - type: HttpRequester - url_base: >- - {{ 'https://thirdparty.qonto.com/v2/' if config['endpoint'] == 'Production' - else ('https://stoplight.io/mocks/qonto-next/business-api/8419419/v2' if config['endpoint'] == 'Test Mocked API Server' - else '') }} - http_method: "GET" - authenticator: - type: ApiKeyAuthenticator - api_token: "{{ config.get('api_key') }}" - inject_into: - type: RequestOption - inject_into: header - field_name: Authorization - retriever: - type: SimpleRetriever - record_selector: - $ref: "#/definitions/selector" - paginator: - type: DefaultPaginator - page_token_option: - type: RequestOption - inject_into: request_parameter - field_name: current_page - pagination_strategy: - type: CursorPagination - cursor_value: '{{ response.get("meta", {}).get("next_page", {}) }}' - stop_condition: '{{ not response.get("meta", {}).get("next_page", {}) }}' - requester: - $ref: "#/definitions/requester" - - base_stream: - type: DeclarativeStream - retriever: - $ref: "#/definitions/retriever" - primary_key: "id" - - labels_stream: - $ref: "#/definitions/base_stream" - name: "labels" - $parameters: - path: "labels" - - memberships_stream: - $ref: "#/definitions/base_stream" - name: "memberships" - $parameters: - path: "memberships" - - transactions_stream: - $ref: "#/definitions/base_stream" - name: "transactions" - $parameters: - path: "transactions" - request_parameters: - iban: "{{ config['iban'] }}" - settled_at_from: "{{ config['start_date'] }}" - -streams: - - "#/definitions/labels_stream" - - "#/definitions/memberships_stream" - - "#/definitions/transactions_stream" - -check: - type: CheckStream - stream_names: - - labels - - memberships - - transactions - -spec: - type: Spec - documentation_url: https://docs.airbyte.com/integrations/sources/qonto - connection_specification: - title: Qonto Spec - type: object - required: - - endpoint - - iban - - api_key - additionalProperties: true - properties: - api_key: - title: API key - type: string - description: "Fill it in this format: `:`" - pattern: ^[\w-]+:[\w]+$ - pattern_descriptor: organization_slug:secret_key - examples: - - "my-organization:3564f" - airbyte_secret: true - order: 1 - endpoint: - title: Endpoint - type: string - description: Please choose the right endpoint to use in this connection - enum: - #- Sandbox # not yet supported - - Production - - Test Mocked API Server - order: 0 - iban: - title: IBAN - type: string - description: International Bank Account Number linked used with your Qonto Account - pattern: ^[A-Z0-9]*$ - order: 2 - start_date: - title: Start date - type: string - description: Start getting data from that date. - format: date - pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ - examples: - - YYYY-MM-DD diff --git a/airbyte-integrations/connectors/source-qonto/source_qonto/run.py b/airbyte-integrations/connectors/source-qonto/source_qonto/run.py deleted file mode 100644 index 0ea8c8470c1f0..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/source_qonto/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_qonto import SourceQonto - - -def run(): - source = SourceQonto() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/labels.json b/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/labels.json deleted file mode 100644 index 7aeb5973b6fe7..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/labels.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": ["null", "string"] - }, - "parent_id": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/memberships.json b/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/memberships.json deleted file mode 100644 index 6d55d4d08760b..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/memberships.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "string" - }, - "first_name": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "birth_country": { - "type": ["null", "string"] - }, - "birthdate": { - "type": ["null", "string"] - }, - "nationality": { - "type": ["null", "string"] - }, - "residence_country": { - "type": ["null", "string"] - }, - "role": { - "type": ["null", "string"] - }, - "ubo": { - "type": ["null", "boolean"] - } - } -} diff --git a/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/transactions.json b/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/transactions.json deleted file mode 100644 index 44df4b27a8704..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/source_qonto/schemas/transactions.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": true, - "properties": { - "transaction_id": { - "type": ["null", "string"] - }, - "subject_type": { - "type": ["null", "string"] - }, - "transfer": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": {} - }, - "amount": { - "type": ["null", "number"] - }, - "amount_cents": { - "type": ["null", "integer"] - }, - "settled_balance": { - "type": ["null", "number"] - }, - "settled_balance_cents": { - "type": ["null", "integer"] - }, - "attachment_ids": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "local_amount": { - "type": ["null", "number"] - }, - "local_amount_cents": { - "type": ["null", "integer"] - }, - "side": { - "type": ["null", "string"] - }, - "operation_type": { - "type": ["null", "string"] - }, - "currency": { - "type": ["null", "string"] - }, - "local_currency": { - "type": ["null", "string"] - }, - "label": { - "type": ["null", "string"] - }, - "settled_at": { - "type": ["null", "string"] - }, - "emitted_at": { - "type": ["null", "string"] - }, - "updated_at": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "note": { - "type": ["null", "string"] - }, - "reference": { - "type": ["null", "string"] - }, - "vat_amount": { - "type": ["null", "number"] - }, - "vat_amount_cents": { - "type": ["null", "number"] - }, - "vat_rate": { - "type": ["null", "number"] - }, - "initiator_id": { - "type": ["null", "string"] - }, - "label_ids": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "attachment_lost": { - "type": ["null", "boolean"] - }, - "attachment_required": { - "type": ["null", "boolean"] - }, - "card_last_digits": { - "type": ["null", "string"] - }, - "category": { - "type": ["null", "string"] - }, - "id": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-qonto/source_qonto/source.py b/airbyte-integrations/connectors/source-qonto/source_qonto/source.py deleted file mode 100644 index 6e2722fa88b33..0000000000000 --- a/airbyte-integrations/connectors/source-qonto/source_qonto/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceQonto(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/docs/integrations/sources/qonto.md b/docs/integrations/sources/qonto.md index 57e04ca0b2b3f..c67ed03dc964d 100644 --- a/docs/integrations/sources/qonto.md +++ b/docs/integrations/sources/qonto.md @@ -10,6 +10,7 @@ The Airbyte Source for [Qonto](https://qonto.com) | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------------------- | +| 0.3.0 | 2024-10-06 | [46523](https://github.com/airbytehq/airbyte/pull/46523) | Migrate to Manifest-only | | 0.2.22 | 2024-10-05 | [46414](https://github.com/airbytehq/airbyte/pull/46414) | Update dependencies | | 0.2.21 | 2024-09-28 | [46175](https://github.com/airbytehq/airbyte/pull/46175) | Update dependencies | | 0.2.20 | 2024-09-21 | [45752](https://github.com/airbytehq/airbyte/pull/45752) | Update dependencies | From d81fc28f70e1fa485ac8c96b38a7a0e2cc19b173 Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Mon, 7 Oct 2024 01:19:17 +0100 Subject: [PATCH 154/379] =?UTF-8?q?=E2=9C=A8=20Source=20N8N=20:=20Migrate?= =?UTF-8?q?=20to=20Manifest-only=20(#46520)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Octavia Squidington III --- .../connectors/source-n8n/README.md | 82 +- .../connectors/source-n8n/__init__.py | 3 - .../source-n8n/acceptance-test-config.yml | 2 +- .../connectors/source-n8n/main.py | 8 - .../connectors/source-n8n/manifest.yaml | 129 ++ .../connectors/source-n8n/metadata.yaml | 8 +- .../connectors/source-n8n/poetry.lock | 1475 ----------------- .../connectors/source-n8n/pyproject.toml | 28 - .../source-n8n/source_n8n/__init__.py | 8 - .../source-n8n/source_n8n/manifest.yaml | 49 - .../connectors/source-n8n/source_n8n/run.py | 14 - .../source_n8n/schemas/executions.json | 33 - .../source-n8n/source_n8n/source.py | 18 - .../source-n8n/source_n8n/spec.yaml | 16 - docs/integrations/sources/n8n.md | 1 + 15 files changed, 163 insertions(+), 1711 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-n8n/__init__.py delete mode 100644 airbyte-integrations/connectors/source-n8n/main.py create mode 100644 airbyte-integrations/connectors/source-n8n/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-n8n/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-n8n/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-n8n/source_n8n/__init__.py delete mode 100644 airbyte-integrations/connectors/source-n8n/source_n8n/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-n8n/source_n8n/run.py delete mode 100644 airbyte-integrations/connectors/source-n8n/source_n8n/schemas/executions.json delete mode 100644 airbyte-integrations/connectors/source-n8n/source_n8n/source.py delete mode 100644 airbyte-integrations/connectors/source-n8n/source_n8n/spec.yaml diff --git a/airbyte-integrations/connectors/source-n8n/README.md b/airbyte-integrations/connectors/source-n8n/README.md index cf16335295256..704178fa48d15 100644 --- a/airbyte-integrations/connectors/source-n8n/README.md +++ b/airbyte-integrations/connectors/source-n8n/README.md @@ -1,89 +1,63 @@ -# N8N source connector +# N8n source connector +This directory contains the manifest-only connector for `source-n8n`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -This is the repository for the N8N source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/n8n). +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/n8n). ## Local development -### Prerequisites -* Python (~=3.9) -* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! +If you prefer to develop locally, you can follow the instructions below. -### Installing the connector -From this connector directory, run: -```bash -poetry install --with dev -``` - - -### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/n8n) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_n8n/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - - -### Locally running the connector -``` -poetry run source-n8n spec -poetry run source-n8n check --config secrets/config.json -poetry run source-n8n discover --config secrets/config.json -poetry run source-n8n read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` +### Building the docker image -### Running unit tests -To run unit tests locally, from the connector directory run: -``` -poetry run pytest unit_tests -``` +You can build any manifest-only connector with `airbyte-ci`: -### Building the docker image 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: + ```bash airbyte-ci connectors --name=source-n8n build ``` An image will be available on your host with the tag `airbyte/source-n8n:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/n8n) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. ### Running as a docker container -Then run any of the connector commands as follows: -``` + +Then run any of the standard source connector commands: + +```bash docker run --rm airbyte/source-n8n:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-n8n:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-n8n:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-n8n:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite -You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -```bash -airbyte-ci connectors --name=source-n8n test -``` +### Running the CI test suite -### Customizing acceptance Tests -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. +You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -### Dependency Management -All of your dependencies should be managed via Poetry. -To add a new dependency, run: ```bash -poetry add +airbyte-ci connectors --name=source-n8n test ``` -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-n8n test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + +If you want to contribute changes to `source-n8n`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-n8n test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/n8n.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. diff --git a/airbyte-integrations/connectors/source-n8n/__init__.py b/airbyte-integrations/connectors/source-n8n/__init__.py deleted file mode 100644 index c941b30457953..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-n8n/acceptance-test-config.yml b/airbyte-integrations/connectors/source-n8n/acceptance-test-config.yml index 6e83613d00d66..3b48f936011d3 100644 --- a/airbyte-integrations/connectors/source-n8n/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-n8n/acceptance-test-config.yml @@ -4,7 +4,7 @@ connector_image: airbyte/source-n8n:dev acceptance_tests: spec: tests: - - spec_path: "source_n8n/spec.yaml" + - spec_path: "manifest.yaml" connection: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-n8n/main.py b/airbyte-integrations/connectors/source-n8n/main.py deleted file mode 100644 index b40f7c3487525..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_n8n.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-n8n/manifest.yaml b/airbyte-integrations/connectors/source-n8n/manifest.yaml new file mode 100644 index 0000000000000..197d6d415f84b --- /dev/null +++ b/airbyte-integrations/connectors/source-n8n/manifest.yaml @@ -0,0 +1,129 @@ +version: 5.10.2 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - executions + +definitions: + streams: + executions: + type: DeclarativeStream + name: executions + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /executions + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: cursor + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: limit + pagination_strategy: + type: CursorPagination + page_size: 250 + cursor_value: "{{ response.get(\"nextCursor\", {}) }}" + stop_condition: "{{ not response.get(\"nextCursor\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/executions" + base_requester: + type: HttpRequester + url_base: "{{ config['host'] }}/api/v1" + authenticator: + type: ApiKeyAuthenticator + header: X-N8N-API-KEY + api_token: "{{ config['api_key'] }}" + +streams: + - $ref: "#/definitions/streams/executions" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - host + - api_key + properties: + host: + type: string + description: Hostname of the n8n instance + order: 0 + api_key: + type: string + description: >- + Your API KEY. See here + order: 1 + additionalProperties: true + +metadata: + autoImportSchema: + executions: false + yamlComponents: + global: + - authenticator + testedStreams: + executions: + streamHash: 7fb9c43b048f49eec85d328fab1043ae11f2b599 + assist: {} + +schemas: + executions: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + id: + type: + - integer + finished: + type: + - boolean + mode: + type: + - string + retryOf: + type: + - 'null' + - string + retrySuccessId: + type: + - 'null' + - integer + startedAt: + type: + - string + stoppedAt: + type: + - 'null' + - string + workflowId: + type: + - 'null' + - string + waitTill: + type: + - 'null' + - string + diff --git a/airbyte-integrations/connectors/source-n8n/metadata.yaml b/airbyte-integrations/connectors/source-n8n/metadata.yaml index 9334afa658772..de87c787b99c4 100644 --- a/airbyte-integrations/connectors/source-n8n/metadata.yaml +++ b/airbyte-integrations/connectors/source-n8n/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: 4a961f66-5e99-4430-8320-a73afe52f7a2 - dockerImageTag: 0.1.21 + dockerImageTag: 0.2.0 dockerRepository: airbyte/source-n8n githubIssueLabel: source-n8n icon: n8n.svg @@ -10,7 +10,7 @@ data: name: n8n remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-n8n registryOverrides: cloud: @@ -20,8 +20,8 @@ data: releaseStage: alpha documentationUrl: https://docs.airbyte.com/integrations/sources/n8n tags: - - language:python - cdk:low-code + - language:manifest-only ab_internal: sl: 100 ql: 100 @@ -37,5 +37,5 @@ data: # type: GSM # alias: airbyte-connector-testing-secret-store connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-n8n/poetry.lock b/airbyte-integrations/connectors/source-n8n/poetry.lock deleted file mode 100644 index b5f0e47b6b507..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/poetry.lock +++ /dev/null @@ -1,1475 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "1.0.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-1.0.0-py3-none-any.whl", hash = "sha256:74cd8d4f9790b9a164731c42236cb015166b5ab2b0754b6a1fd730f223eb4e7f"}, - {file = "airbyte_cdk-1.0.0.tar.gz", hash = "sha256:102b75ce589460be4f75dabd3402ac7aa633c90758558c81d140fd436b76371f"}, -] - -[package.dependencies] -airbyte-protocol-models = ">=0.9.0,<1.0" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.0.1,<2.1.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.13.0" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.13.0-py3-none-any.whl", hash = "sha256:fa8b7e1a85f9ae171c50b30d23b317da1740d051994fd3ed648f9dfba00250e2"}, - {file = "airbyte_protocol_models-0.13.0.tar.gz", hash = "sha256:09d8900ba8674a9315fa1799d17026f6b38d2187c08160449540ee93331ed2e7"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.8" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.0.8" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.6" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.131" -description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, - {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} -requests = ">=2,<3" -requests-toolbelt = ">=1.0.0,<2.0.0" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "orjson" -version = "3.10.7" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "6.2.5" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "656a09cf041cb51ce84e287501b40bd60394c28750360db74d7c8fc4b7f291f7" diff --git a/airbyte-integrations/connectors/source-n8n/pyproject.toml b/airbyte-integrations/connectors/source-n8n/pyproject.toml deleted file mode 100644 index cd02a6de54bcb..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "0.1.21" -name = "source-n8n" -description = "Source implementation for N8n." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/n8n" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_n8n" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "1.0.0" - -[tool.poetry.scripts] -source-n8n = "source_n8n.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "^1.9.3" -pytest = "^6.1" -pytest-mock = "^3.6.1" diff --git a/airbyte-integrations/connectors/source-n8n/source_n8n/__init__.py b/airbyte-integrations/connectors/source-n8n/source_n8n/__init__.py deleted file mode 100644 index 5e3ecd3f3306e..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/source_n8n/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceN8n - -__all__ = ["SourceN8n"] diff --git a/airbyte-integrations/connectors/source-n8n/source_n8n/manifest.yaml b/airbyte-integrations/connectors/source-n8n/source_n8n/manifest.yaml deleted file mode 100644 index ed7a60576692d..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/source_n8n/manifest.yaml +++ /dev/null @@ -1,49 +0,0 @@ -version: "0.29.0" - -definitions: - selector: - extractor: - field_path: ["data"] - requester: - url_base: "{{ config['host'] }}/api/v1" - http_method: "GET" - authenticator: - type: ApiKeyAuthenticator - header: X-N8N-API-KEY - api_token: "{{ config['api_key'] }}" - request_parameters: - limit: "250" - retriever: - record_selector: - $ref: "#/definitions/selector" - paginator: - type: DefaultPaginator - page_size_option: - inject_into: "request_parameter" - field_name: "" - pagination_strategy: - type: "CursorPagination" - cursor_value: "{{ response.nextCursor }}" - page_size: 250 - page_token_option: - type: RequestOption - field_name: "cursor" - inject_into: "request_parameter" - requester: - $ref: "#/definitions/requester" - base_stream: - retriever: - $ref: "#/definitions/retriever" - executions_stream: - $ref: "#/definitions/base_stream" - $parameters: - name: "executions" - primary_key: "id" - path: "/executions" - -streams: - - "#/definitions/executions_stream" - -check: - stream_names: - - "executions" diff --git a/airbyte-integrations/connectors/source-n8n/source_n8n/run.py b/airbyte-integrations/connectors/source-n8n/source_n8n/run.py deleted file mode 100644 index 04f48f6c06969..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/source_n8n/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_n8n import SourceN8n - - -def run(): - source = SourceN8n() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-n8n/source_n8n/schemas/executions.json b/airbyte-integrations/connectors/source-n8n/source_n8n/schemas/executions.json deleted file mode 100644 index 075ea0568cc4c..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/source_n8n/schemas/executions.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "id": { - "type": ["integer"] - }, - "finished": { - "type": ["boolean"] - }, - "mode": { - "type": ["string"] - }, - "retryOf": { - "type": ["null", "string"] - }, - "retrySuccessId": { - "type": ["null", "integer"] - }, - "startedAt": { - "type": ["string"] - }, - "stoppedAt": { - "type": ["null", "string"] - }, - "workflowId": { - "type": ["null", "string"] - }, - "waitTill": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-n8n/source_n8n/source.py b/airbyte-integrations/connectors/source-n8n/source_n8n/source.py deleted file mode 100644 index 441fac31019e2..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/source_n8n/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceN8n(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-n8n/source_n8n/spec.yaml b/airbyte-integrations/connectors/source-n8n/source_n8n/spec.yaml deleted file mode 100644 index 28902c69b6cbc..0000000000000 --- a/airbyte-integrations/connectors/source-n8n/source_n8n/spec.yaml +++ /dev/null @@ -1,16 +0,0 @@ -documentationUrl: https://docs.airbyte.com/integrations/sources/n8n -connectionSpecification: - $schema: http://json-schema.org/draft-07/schema# - title: N8n Spec - type: object - required: - - host - - api_key - additionalProperties: true - properties: - host: - type: string - description: Hostname of the n8n instance - api_key: - type: string - description: Your API KEY. See here diff --git a/docs/integrations/sources/n8n.md b/docs/integrations/sources/n8n.md index 8ebf469732b10..b04b3110f456c 100644 --- a/docs/integrations/sources/n8n.md +++ b/docs/integrations/sources/n8n.md @@ -32,6 +32,7 @@ You need a n8n instance or use cloud version | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------------------- | +| 0.2.0 | 2024-10-06 | [46520](https://github.com/airbytehq/airbyte/pull/46520) | Migrate to Manifest-only | | 0.1.21 | 2024-10-05 | [46407](https://github.com/airbytehq/airbyte/pull/46407) | Update dependencies | | 0.1.20 | 2024-09-28 | [46125](https://github.com/airbytehq/airbyte/pull/46125) | Update dependencies | | 0.1.19 | 2024-09-21 | [45745](https://github.com/airbytehq/airbyte/pull/45745) | Update dependencies | From 4e06912f4ce26c9feeebfc831c434a81cae8f33a Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Mon, 7 Oct 2024 01:20:57 +0100 Subject: [PATCH 155/379] =?UTF-8?q?=E2=9C=A8=20Source=20Flexport=20:=20Mig?= =?UTF-8?q?rate=20to=20Manifest-only=20(#46416)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Octavia Squidington III --- .../connectors/source-flexport/README.md | 80 +- .../connectors/source-flexport/__init__.py | 3 - .../acceptance-test-config.yml | 6 +- .../connectors/source-flexport/bootstrap.md | 14 - .../connectors/source-flexport/main.py | 8 - .../connectors/source-flexport/manifest.yaml | 2291 +++++++++++++++++ .../connectors/source-flexport/metadata.yaml | 8 +- .../connectors/source-flexport/poetry.lock | 1475 ----------- .../connectors/source-flexport/pyproject.toml | 28 - .../source_flexport/__init__.py | 8 - .../source_flexport/manifest.yaml | 157 -- .../source-flexport/source_flexport/run.py | 14 - .../source_flexport/schemas/companies.json | 3 - .../source_flexport/schemas/invoices.json | 3 - .../source_flexport/schemas/locations.json | 3 - .../source_flexport/schemas/products.json | 3 - .../schemas/shared/address.json | 51 - .../schemas/shared/air/shipment.json | 27 - .../schemas/shared/api/refs/collection.json | 19 - .../schemas/shared/api/refs/object.json | 23 - .../schemas/shared/company_entity.json | 41 - .../shared/company_entity/vat_number.json | 19 - .../schemas/shared/credit_memo.json | 34 - .../schemas/shared/hs_code.json | 23 - .../schemas/shared/invoice.json | 89 - .../schemas/shared/invoice/quantity.json | 19 - .../schemas/shared/invoice/rate.json | 19 - .../schemas/shared/invoice_item.json | 49 - .../source_flexport/schemas/shared/money.json | 19 - .../schemas/shared/network/company.json | 46 - .../schemas/shared/network/location.json | 43 - .../schemas/shared/ocean/shipment.json | 35 - .../schemas/shared/product.json | 72 - .../shared/product/classification.json | 22 - .../schemas/shared/product/property.json | 19 - .../schemas/shared/product/supplier.json | 20 - .../schemas/shared/quantity/volume.json | 20 - .../schemas/shared/quantity/weight.json | 20 - .../schemas/shared/shipment.json | 315 --- .../shared/shipment/dangerous_goods.json | 17 - .../schemas/shared/shipment_item.json | 35 - .../source_flexport/schemas/shipments.json | 3 - .../source-flexport/source_flexport/source.py | 18 - docs/integrations/sources/flexport.md | 1 + 44 files changed, 2326 insertions(+), 2896 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-flexport/__init__.py delete mode 100644 airbyte-integrations/connectors/source-flexport/bootstrap.md delete mode 100644 airbyte-integrations/connectors/source-flexport/main.py create mode 100644 airbyte-integrations/connectors/source-flexport/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-flexport/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-flexport/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/__init__.py delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/run.py delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/companies.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/invoices.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/locations.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/products.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/address.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/air/shipment.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/api/refs/collection.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/api/refs/object.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/company_entity.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/company_entity/vat_number.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/credit_memo.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/hs_code.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice/quantity.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice/rate.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice_item.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/money.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/network/company.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/network/location.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/ocean/shipment.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/classification.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/property.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/supplier.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/quantity/volume.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/quantity/weight.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment/dangerous_goods.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment_item.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shipments.json delete mode 100644 airbyte-integrations/connectors/source-flexport/source_flexport/source.py diff --git a/airbyte-integrations/connectors/source-flexport/README.md b/airbyte-integrations/connectors/source-flexport/README.md index 181234f4eb2b8..d887b5186b18c 100644 --- a/airbyte-integrations/connectors/source-flexport/README.md +++ b/airbyte-integrations/connectors/source-flexport/README.md @@ -1,89 +1,63 @@ # Flexport source connector +This directory contains the manifest-only connector for `source-flexport`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -This is the repository for the Flexport source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/flexport). +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/flexport). ## Local development -### Prerequisites -* Python (~=3.9) -* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! +If you prefer to develop locally, you can follow the instructions below. -### Installing the connector -From this connector directory, run: -```bash -poetry install --with dev -``` - - -### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/flexport) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_flexport/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - - -### Locally running the connector -``` -poetry run source-flexport spec -poetry run source-flexport check --config secrets/config.json -poetry run source-flexport discover --config secrets/config.json -poetry run source-flexport read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` +### Building the docker image -### Running unit tests -To run unit tests locally, from the connector directory run: -``` -poetry run pytest unit_tests -``` +You can build any manifest-only connector with `airbyte-ci`: -### Building the docker image 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: + ```bash airbyte-ci connectors --name=source-flexport build ``` An image will be available on your host with the tag `airbyte/source-flexport:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/flexport) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. ### Running as a docker container -Then run any of the connector commands as follows: -``` + +Then run any of the standard source connector commands: + +```bash docker run --rm airbyte/source-flexport:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-flexport:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-flexport:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-flexport:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite -You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -```bash -airbyte-ci connectors --name=source-flexport test -``` +### Running the CI test suite -### Customizing acceptance Tests -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. +You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -### Dependency Management -All of your dependencies should be managed via Poetry. -To add a new dependency, run: ```bash -poetry add +airbyte-ci connectors --name=source-flexport test ``` -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-flexport test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + +If you want to contribute changes to `source-flexport`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-flexport test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/flexport.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. diff --git a/airbyte-integrations/connectors/source-flexport/__init__.py b/airbyte-integrations/connectors/source-flexport/__init__.py deleted file mode 100644 index c941b30457953..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-flexport/acceptance-test-config.yml b/airbyte-integrations/connectors/source-flexport/acceptance-test-config.yml index 8f7488a768b71..2b932b577be5f 100644 --- a/airbyte-integrations/connectors/source-flexport/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-flexport/acceptance-test-config.yml @@ -3,9 +3,9 @@ connector_image: airbyte/source-flexport:dev test_strictness_level: low acceptance_tests: - # spec: - # tests: - # - spec_path: "source_flexport/manifest.yaml" + spec: + tests: + - spec_path: "manifest.yaml" # Airbyte doesn't have a test account to test against Flexport API connection: tests: diff --git a/airbyte-integrations/connectors/source-flexport/bootstrap.md b/airbyte-integrations/connectors/source-flexport/bootstrap.md deleted file mode 100644 index 148f5e83daff8..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/bootstrap.md +++ /dev/null @@ -1,14 +0,0 @@ -# Flexport - -Flexport is a straightforward CRUD REST [API](https://developers.flexport.com/s/api). It consists of some REST resources like Company, Location, Product, etc., each of which is uniformly paginated. Each resource has a link to a related resource or resource collection. All relations might be optionally embedded within the resource instance. The `id` property identifies each resource. - -API documentation is either outdated or incomplete. The issues are following: - -1. Some resources that get embedded by default are not documented at all. However, since the schema of all resources follows the same pattern, their schema can be easily deduced too. -2. The documentation doesn't specify which properties are nullable - trial and error is the only way to learn that. -3. Some properties' type is ambiguous, i.e., `create` action specifies a property as required while `read` returns a nullable value. -4. The type of some properties is mislabeled, e.g., `integer` instead of an actual `string` type. - -Authentication uses a pre-created API token which can be [created in the UI](https://apidocs.flexport.com/reference/authentication). - -Paginations uses page number and items per page strategy. diff --git a/airbyte-integrations/connectors/source-flexport/main.py b/airbyte-integrations/connectors/source-flexport/main.py deleted file mode 100644 index 2370e6f8868aa..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_flexport.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-flexport/manifest.yaml b/airbyte-integrations/connectors/source-flexport/manifest.yaml new file mode 100644 index 0000000000000..17d52de75aa99 --- /dev/null +++ b/airbyte-integrations/connectors/source-flexport/manifest.yaml @@ -0,0 +1,2291 @@ +version: 5.10.2 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - companies + +definitions: + streams: + companies: + type: DeclarativeStream + name: companies + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ parameters.path }}" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: per + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 100 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/companies" + invoices: + type: DeclarativeStream + name: invoices + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ parameters.path }}" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: per + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 100 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/invoices" + locations: + type: DeclarativeStream + name: locations + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ parameters.path }}" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: per + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 100 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/locations" + products: + type: DeclarativeStream + name: products + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ parameters.path }}" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: per + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 100 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/products" + shipments: + type: DeclarativeStream + name: shipments + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: shipments + http_method: GET + request_parameters: + sort: updated_at + direction: asc + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: per + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 100 + incremental_sync: + type: DatetimeBasedCursor + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + cursor_field: updated_at + start_time_option: + inject_into: request_parameter + field_name: f.updated_at.gt + type: RequestOption + end_time_option: + inject_into: request_parameter + field_name: f.updated_at.lt + type: RequestOption + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/shipments" + base_requester: + type: HttpRequester + url_base: https://api.flexport.com/ + authenticator: + type: BearerAuthenticator + api_token: "{{ config[\"api_key\"] }}" + +streams: + - $ref: "#/definitions/streams/companies" + - $ref: "#/definitions/streams/invoices" + - $ref: "#/definitions/streams/locations" + - $ref: "#/definitions/streams/products" + - $ref: "#/definitions/streams/shipments" + +spec: + type: Spec + connection_specification: + $schema: http://json-schema.org/draft-07/schema# + type: object + additionalProperties: true + required: + - api_key + - start_date + properties: + api_key: + type: string + title: API Key + airbyte_secret: true + order: 0 + start_date: + type: string + title: Start date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + order: 1 + +metadata: + autoImportSchema: + companies: false + invoices: false + locations: false + products: false + shipments: false + testedStreams: {} + assist: {} + +schemas: + companies: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + _object: + type: string + description: String representing the object's type. Always /network/company for + this object. + pattern: "^/network/company$" + id: + type: string + description: Unique identifier for the object. + name: + type: string + description: Name of the company. + ref: + type: string + description: Your ref for this company entity, as set in the Network tab. + editable: + type: boolean + description: Whether or not you manage this company and can edit its attributes. + entities: + type: array + description: Array of company entities that belong to this company. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity + for this object. + pattern: "^/company_entity$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the company entity. + ref: + type: string + description: Your reference for this company entity, as set in the Network + tab. + mailing_address: + description: Address of the company entity. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address + for this object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network + tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade + and Transport Locations). + vat_numbers: + type: array + description: Array of VAT numbers of the company entity. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity/vat_number + for this object. + pattern: "^/company_entity/vat_number$" + country_code: + type: string + description: ISO 3166 two-letter country code of the VAT number's + country + number: + type: string + description: Full VAT number, including the country code + locations: + "$schema": http://json-schema.org/draft-07/schema# + type: object + description: Array of company entities that belong to this company. + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list that + link points to. + contacts: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable link to the contacts of this company. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list that + link points to. + metadata: + type: object + description: User defined metadata attached to the company. + invoices: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + _object: + type: string + description: Type of the object. Always /invoice for this object. + pattern: "^/invoice$" + id: + type: string + description: Unique ID for the invoice + name: + type: string + description: Unique name for the invoice + issued_at: + type: string + description: When the invoice was issued. In ISO8601 UTC format with timezone + denoted by Z. + format: date-time + due_date: + type: string + description: Due date of the invoice. Calendar date only, no time. + format: date + total: + "$schema": http://json-schema.org/draft-07/schema# + description: Sum of charges on the invoice + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /money for this + object. + pattern: "^/money$" + amount: + type: string + description: A string representing the decimal amount + currency_code: + type: string + description: The currency of the amount + balance: + "$schema": http://json-schema.org/draft-07/schema# + description: Outstanding balance on the invoice + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /money for this + object. + pattern: "^/money$" + amount: + type: string + description: A string representing the decimal amount + currency_code: + type: string + description: The currency of the amount + status: + type: string + description: 'Status of the invoice. One of:' + enum: + - outstanding + - past_due + - void + - paid + - payment_pending + type: + type: + - 'null' + - string + description: What the invoice is being issued for. Shipment related charges are + type Shipment and non-shipment related charges are type Client + voided_at: + type: + - 'null' + - string + description: When the invoice was voided (if applicable). In ISO8601 UTC format + with timezone denoted by Z. + format: date-time + last_updated_at: + type: + - 'null' + - string + description: Time of the last adjustment to in invoice. In ISO8601 UTC format + with timezone denoted by Z. + format: date-time + recipient: + "$schema": http://json-schema.org/draft-07/schema# + description: Inlined CompanyEntity info for recipient + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity + for this object. + pattern: "^/company_entity$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the company entity. + ref: + type: string + description: Your reference for this company entity, as set in the Network + tab. + mailing_address: + description: Address of the company entity. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address + for this object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network + tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade + and Transport Locations). + vat_numbers: + type: array + description: Array of VAT numbers of the company entity. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity/vat_number + for this object. + pattern: "^/company_entity/vat_number$" + country_code: + type: string + description: ISO 3166 two-letter country code of the VAT number's country + number: + type: string + description: Full VAT number, including the country code + issuer: + "$schema": http://json-schema.org/draft-07/schema# + description: CompanyEntity receiving payment for this invoice + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity + for this object. + pattern: "^/company_entity$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the company entity. + ref: + type: string + description: Your reference for this company entity, as set in the Network + tab. + mailing_address: + description: Address of the company entity. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address + for this object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network + tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade + and Transport Locations). + vat_numbers: + type: array + description: Array of VAT numbers of the company entity. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity/vat_number + for this object. + pattern: "^/company_entity/vat_number$" + country_code: + type: string + description: ISO 3166 two-letter country code of the VAT number's country + number: + type: string + description: Full VAT number, including the country code + items: + type: array + description: Inlined list of InvoiceItems + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /invoice_item + for this object. + pattern: "^/invoice_item$" + name: + type: string + description: 'Line item name. Example: FCL 40'' HQ' + slug: + type: string + description: 'Line item code. Example: fcl_40_hq' + category: + type: string + description: Category of the charge. Example freight + amount: + "$schema": http://json-schema.org/draft-07/schema# + description: Price of the item + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /money for + this object. + pattern: "^/money$" + amount: + type: string + description: A string representing the decimal amount + currency_code: + type: string + description: The currency of the amount + rate: + description: Describes the rate per unit used to calculate the price of + a line item + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /invoice/rate + for this object. + pattern: "^/invoice/rate$" + value: + type: string + description: Numeric value described by qualifier + qualifier: + type: string + description: Describes what the value represents ('USD', '% Drayage + Base', etc) + quantity: + description: Describes the number of units used to calculate the price of + a line item + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /invoice/quantity + for this object. + pattern: "^/invoice/quantity$" + value: + type: string + description: Numeric value described by qualifier + qualifier: + type: string + description: Describes what the value represents ('kg', 'bill of lading', + 'USD') + credit_memos: + type: array + description: Inlined list of CreditMemos + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /credit_memo + for this object. + pattern: "^/credit_memo$" + amount: + "$schema": http://json-schema.org/draft-07/schema# + description: Amount of the credit + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /money for + this object. + pattern: "^/money$" + amount: + type: string + description: A string representing the decimal amount + currency_code: + type: string + description: The currency of the amount + credited_at: + type: string + description: When the credit was applied. In ISO8601 UTC format with timezone + denoted by Z. + format: date-time + categories: + type: array + description: Category of the credit memo + items: + type: string + reasons: + type: array + description: Why the credit was applied to the invoice + items: + type: + - 'null' + - string + notes: + type: array + description: Memoranda relevant to the invoice + items: + type: string + shipments: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable link to information on related shipments + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list that + link points to. + locations: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + _object: + type: string + description: String representing the object's type. Always /network/location for + this object. + pattern: "^/network/location$" + id: + type: string + description: Unique identifier for the location. + name: + type: + - 'null' + - string + description: Name of the location. + address: + "$schema": http://json-schema.org/draft-07/schema# + description: Address of the location. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address for this + object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade and Transport + Locations). + editable: + type: boolean + description: Whether or not you manage this location and can edit its attributes. + contacts: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable API link to the contacts at this location. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list that + link points to. + company: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable API link to the company that this location belongs to. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/object + for this object. + pattern: "^/api/refs/object$" + link: + type: string + description: API end point that points to a resource. + ref_type: + type: string + description: The _object value of the object that the link points to. + id: + type: + - integer + - string + description: The id value of the object that the link points to. + ref: + type: string + description: Your custom ref to this location. + metadata: + type: object + description: User defined metadata attached to the location. + products: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + _object: + type: string + description: String representing the object's type. Always /product for this object. + pattern: "^/product$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of product. + description: + type: + - 'null' + - string + description: Description of product. + sku: + type: + - 'null' + - string + description: SKU of product. + product_category: + type: + - 'null' + - string + description: The category of the product + country_of_origin: + type: + - 'null' + - string + description: Nation in which the product is manufactured + client_verified: + type: boolean + description: Indicates whether Client has verified this Product. + product_properties: + type: array + description: An array of product properties, represented by ProductProperty + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /product/property + for this object. + pattern: "^/product/property$" + type: + type: string + description: The property describing the product + value: + type: string + description: The value associated with the product + hs_codes: + type: array + description: DEPRECATED - HS codes can be found in the classifications array + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /hs_code for + this object. + pattern: "^/hs_code$" + description: + type: string + description: Description of HS or HTS code classification. + code: + type: string + description: 6 digit (international HS) or 10 digit (US HTS) code. + country_code: + type: string + description: The country code that the HS code belongs to. + classifications: + type: array + description: An array of product classifications, represented by Classification + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /product/classification + for this object. + pattern: "^/product/classification$" + region: + type: string + description: The two letter code for the region of the classification + codes: + type: array + description: Array of 6 digit (international HS) or 10 digit (US HTS) code. + items: + type: string + suppliers: + type: array + description: Array of suppliers. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /product/supplier + for this object. + pattern: "^/product/supplier$" + id: + type: integer + ref: + type: string + country_of_origin: + type: + - 'null' + - string + archived_at: + type: + - 'null' + - string + description: A date string representing when the product was archived. Will be + null if product is not archived. In ISO8601 UTC format with timezone denoted + by Z. + format: date-time + shipments: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + metadata: + type: object + description: Set of custom key-values specific to the object. The keys are strings + and values are arrays of strings. The set of valid keys is always the consignee's + list of keys, even if call was made by a different party. + _object: + type: string + description: String representing the object's type. Always /shipment for this + object. + pattern: "^/shipment$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the shipment. + booking: + description: The booking associated with this shipment + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/object + for this object. + pattern: "^/api/refs/object$" + link: + type: string + description: API end point that points to a resource. + ref_type: + type: string + description: The _object value of the object that the link points to. + id: + type: + - integer + - string + description: The id value of the object that the link points to. + transportation_mode: + type: string + description: Transportation mode of the main carriage of the shipment. + enum: + - ocean + - air + - truck + - rail + - unknown_transportation + - ocean_air + - truck_intl + - warehouse_storage + freight_type: + type: string + description: 'The type of freight service provided. One of:' + enum: + - port_to_door + - port_to_port + - door_to_door + - door_to_port + archived_at: + type: + - 'null' + - string + description: Date when the shipment was archived, if applicable. In ISO8601 UTC + format with timezone denoted by Z. + format: date-time + incoterm: + type: string + description: The Incoterm of your shipment. + enum: + - EXW + - FOB + - FAS + - FCA + - CPT + - CFR + - CIF + - CIP + - DAT + - DAP + - DDP + - DPU + calculated_weight: + "$schema": http://json-schema.org/draft-07/schema# + description: Total weight (kg or lbs) of the shipment, calculated from individual + pieces if package dimensions are known. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /quantity/weight + for this object. + pattern: "^/quantity/weight" + value: + type: number + description: Specifies the quantity of units as a float. + unit: + type: string + description: Specifies the unit of measure for this quantity. + enum: + - kg + - lbs + - t + calculated_volume: + "$schema": http://json-schema.org/draft-07/schema# + description: Total volume (cbm or cft) of the shipment, calculated from individual + pieces if package dimensions are known. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /quantity/volume + for this object. + pattern: "^/quantity/volume" + value: + type: number + description: Specifies the quantity of units as a float. + unit: + type: string + description: Specifies the unit of measure for this quantity. + enum: + - cbm + - cbft + pieces: + type: + - 'null' + - integer + description: Total number of pieces in the shipment. + it_number: + type: + - 'null' + - string + description: Inbond Transit number used for US Customs + created_date: + type: string + description: Date the user confirmed the Flexport quote for this Shipment. + format: date-time + status: + type: string + description: 'Status of the shipment. One of:' + enum: + - seller_location + - in_transit_to_departure_port + - departure_port + - in_transit_to_arrival_port + - arrival_port + - in_transit_to_final_destination + - final_destination + priority: + type: string + description: The level of attention Flexport should give to this shipment. + enum: + - standard + - high + updated_at: + type: string + description: Date when the shipment object was last updated. In ISO8601 UTC format + with timezone denoted by Z. + format: date-time + estimated_departure_date: + type: + - 'null' + - string + description: Estimated departure date from the first port of the main voyage. + In ISO8601 format with timezone denoted by +/-HH:MM. + format: date-time + actual_departure_date: + type: + - 'null' + - string + description: Actual departure date from the first port of the main voyage. In + ISO8601 format with timezone denoted by +/-HH:MM. + format: date-time + estimated_arrival_date: + type: + - 'null' + - string + description: Estimated arrival date to the last port of the main voyage. In ISO8601 + format with timezone denoted by +/-HH:MM. + format: date-time + actual_arrival_date: + type: + - 'null' + - string + description: Actual arrival date to the last port of the main voyage. In ISO8601 + format with timezone denoted by +/-HH:MM. + format: date-time + cargo_ready_date: + type: string + description: Date when cargo is ready for pickup at the origin location. Calendar + date only, no time. + format: date + wants_freight_management_bco: + type: boolean + description: Determines if a shipment bypasses a freight forwarder and is booked + directly with a steamship line. + wants_flexport_freight: + type: boolean + description: Determines if a shipment is using Flexport services for a combination + of import customs clearance or final leg delivery. + wants_commercial_invoice_transcription: + type: boolean + wants_flexport_insurance: + type: boolean + wants_pickup_service: + type: boolean + wants_trade_declaration_service: + type: + - 'null' + - boolean + visibility_only: + type: boolean + description: Indicates if a shipment was requested for tracking via the Flexport + visibility-only service. + wants_delivery_service: + type: boolean + description: Determines if Flexport is responsible for door delivery on a shipment. + estimated_picked_up_in_full_date: + type: + - 'null' + - string + description: Estimated pickup date from the origin location. For ocean shipments + with multiple containers, this is the date of last picked up container. In ISO8601 + format with timezone denoted by +/-HH:MM. + format: date-time + actual_picked_up_in_full_date: + type: + - 'null' + - string + description: Actual pickup date from the origin location. For ocean shipments + with multiple containers, this is the date of last picked up container. In ISO8601 + format with timezone denoted by +/-HH:MM. + format: date-time + target_delivery_date: + type: + - 'null' + - string + description: Target date for when the shipment will be fully delivered. This date + is set when the shipment''s booking is confirmed. This value may be different + from estimated_delivered_in_full_date, which is updated when there is new information + about the progress of a shipment. Date only. + format: date + estimated_delivered_in_full_date: + type: + - 'null' + - string + description: Estimated delivery date to the destination location. For ocean shipments + with multiple containers, this is the date of last delivered container. In ISO8601 + format with timezone denoted by +/-HH:MM. + format: date-time + actual_delivered_in_full_date: + type: + - 'null' + - string + description: Actual delivery date to the destination location. For ocean shipments + with multiple containers, this is the date of last delivered container. In ISO8601 + format with timezone denoted by +/-HH:MM. + format: date-time + wants_export_customs_service: + type: boolean + description: Determines if the shipment requires Flexport to provide export customs + service. + wants_import_customs_service: + type: boolean + description: Determines if the shipment requires Flexport to provide import customs + service. + ocean_shipment: + description: Ocean-specific Shipment information. Available only if this is an + ocean shipment. null otherwise. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /ocean/shipment + for this object. + pattern: "^/ocean/shipment$" + is_lcl: + type: boolean + description: Flag that indicates whether the object is a LCL shipment. + house_bill_number: + type: string + description: House bill of lading number. + master_bill_number: + type: + - 'null' + - string + description: Master bill of lading number. + carrier_booking_number: + type: + - 'null' + - string + description: Ocean carrier booking reference number. + confirmed_space_released_at: + type: + - 'null' + - string + format: date-time + containers: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable API link to the containers of the shipment, represented + by the Container object. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list + that link points to. + air_shipment: + description: Air-specific Shipment information. Available only if this is an air + shipment. null otherwise. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object`s type. Always /air/shipment + for this object. + pattern: "^/air/shipment$" + house_airway_bill: + type: string + description: House air waybill number + master_airway_bill: + type: string + description: Master air waybill number + chargeable_weight: + "$schema": http://json-schema.org/draft-07/schema# + description: Chargeable weight (kg or lbs) of the shipment. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /quantity/weight + for this object. + pattern: "^/quantity/weight" + value: + type: number + description: Specifies the quantity of units as a float. + unit: + type: string + description: Specifies the unit of measure for this quantity. + enum: + - kg + - lbs + - t + chargeable_volume: + "$schema": http://json-schema.org/draft-07/schema# + description: Chargeable volume (cbm or cft) of the shipment. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /quantity/volume + for this object. + pattern: "^/quantity/volume" + value: + type: number + description: Specifies the quantity of units as a float. + unit: + type: string + description: Specifies the unit of measure for this quantity. + enum: + - cbm + - cbft + dangerous_goods: + "$schema": http://json-schema.org/draft-07/schema# + description: '' + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /shipment/dangerous_goods + for this object. + pattern: "^/shipment/dangerous_goods" + review_status: + type: + - 'null' + - string + classifications: + type: array + shippers: + type: array + description: Array of shippers of the shipment, represented by the CompanyEntity + objects. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity + for this object. + pattern: "^/company_entity$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the company entity. + ref: + type: string + description: Your reference for this company entity, as set in the Network + tab. + mailing_address: + description: Address of the company entity. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address + for this object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network + tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade + and Transport Locations). + vat_numbers: + type: array + description: Array of VAT numbers of the company entity. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity/vat_number + for this object. + pattern: "^/company_entity/vat_number$" + country_code: + type: string + description: ISO 3166 two-letter country code of the VAT number's + country + number: + type: string + description: Full VAT number, including the country code + consignees: + type: array + description: Array of consignees of the shipment, represented by CompanyEntity + objects. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity + for this object. + pattern: "^/company_entity$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the company entity. + ref: + type: string + description: Your reference for this company entity, as set in the Network + tab. + mailing_address: + description: Address of the company entity. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address + for this object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network + tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade + and Transport Locations). + vat_numbers: + type: array + description: Array of VAT numbers of the company entity. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity/vat_number + for this object. + pattern: "^/company_entity/vat_number$" + country_code: + type: string + description: ISO 3166 two-letter country code of the VAT number's + country + number: + type: string + description: Full VAT number, including the country code + buyers: + type: array + description: Array of buyers of the shipment, represented by CompanyEntity objects. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity + for this object. + pattern: "^/company_entity$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the company entity. + ref: + type: string + description: Your reference for this company entity, as set in the Network + tab. + mailing_address: + description: Address of the company entity. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address + for this object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network + tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade + and Transport Locations). + vat_numbers: + type: array + description: Array of VAT numbers of the company entity. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity/vat_number + for this object. + pattern: "^/company_entity/vat_number$" + country_code: + type: string + description: ISO 3166 two-letter country code of the VAT number's + country + number: + type: string + description: Full VAT number, including the country code + sellers: + type: array + description: Array of sellers of the shipment, represented by CompanyEntity objects. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity + for this object. + pattern: "^/company_entity$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the company entity. + ref: + type: string + description: Your reference for this company entity, as set in the Network + tab. + mailing_address: + description: Address of the company entity. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address + for this object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network + tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade + and Transport Locations). + vat_numbers: + type: array + description: Array of VAT numbers of the company entity. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity/vat_number + for this object. + pattern: "^/company_entity/vat_number$" + country_code: + type: string + description: ISO 3166 two-letter country code of the VAT number's + country + number: + type: string + description: Full VAT number, including the country code + importers_of_record: + type: array + description: Array of importers of record of the shipment, represented by CompanyEntity + objects. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity + for this object. + pattern: "^/company_entity$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of the company entity. + ref: + type: string + description: Your reference for this company entity, as set in the Network + tab. + mailing_address: + description: Address of the company entity. + oneOf: + - type: 'null' + - "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /address + for this object. + pattern: "^/address$" + street_address: + type: string + description: Address line 1 (Street address/PO Box). + street_address2: + type: + - 'null' + - string + description: Address line 2 (Apartment/Suite/Unit/Building). + city: + type: string + description: City/Town. + state: + type: + - 'null' + - string + description: State/County/Province/Region. + country: + type: + - 'null' + - string + description: Country. + country_code: + type: + - 'null' + - string + description: Two-letter country code (ISO 3166-1 Alpha-2). + zip: + type: + - 'null' + - string + description: ZIP or postal code. + timezone: + type: + - 'null' + - string + description: Timezone for this address + ref: + type: + - 'null' + - string + description: Your reference for the address, as set in your network + tab + unlocode: + type: + - 'null' + - string + description: If port, then UN/LOCODE (United Nations Code for Trade + and Transport Locations). + vat_numbers: + type: array + description: Array of VAT numbers of the company entity. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /company_entity/vat_number + for this object. + pattern: "^/company_entity/vat_number$" + country_code: + type: string + description: ISO 3166 two-letter country code of the VAT number's + country + number: + type: string + description: Full VAT number, including the country code + items: + type: array + description: Array of products and SKUs in the shipment, represented by ShipmentItem + objects. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /shipment_item + for this object. + pattern: "^/shipment_item$" + id: + type: integer + description: Unique identifier for the object. + total_units: + type: string + description: Total quantity of specific SKU within shipment. + total_weight: + "$schema": http://json-schema.org/draft-07/schema# + description: Total weight of specific SKU within shipment. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /quantity/weight + for this object. + pattern: "^/quantity/weight" + value: + type: number + description: Specifies the quantity of units as a float. + unit: + type: string + description: Specifies the unit of measure for this quantity. + enum: + - kg + - lbs + - t + total_volume: + "$schema": http://json-schema.org/draft-07/schema# + description: Total volume of specific SKU within shipment. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /quantity/volume + for this object. + pattern: "^/quantity/volume" + value: + type: number + description: Specifies the quantity of units as a float. + unit: + type: string + description: Specifies the unit of measure for this quantity. + enum: + - cbm + - cbft + purchase_order_number: + type: string + description: Purchase order number associated with SKU within shipment. + product: + "$schema": http://json-schema.org/draft-07/schema# + description: Name and SKU of product, represented by the Product object. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /product + for this object. + pattern: "^/product$" + id: + type: integer + description: Unique identifier for the object. + name: + type: string + description: Name of product. + description: + type: + - 'null' + - string + description: Description of product. + sku: + type: + - 'null' + - string + description: SKU of product. + product_category: + type: + - 'null' + - string + description: The category of the product + country_of_origin: + type: + - 'null' + - string + description: Nation in which the product is manufactured + client_verified: + type: boolean + description: Indicates whether Client has verified this Product. + product_properties: + type: array + description: An array of product properties, represented by ProductProperty + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /product/property + for this object. + pattern: "^/product/property$" + type: + type: string + description: The property describing the product + value: + type: string + description: The value associated with the product + hs_codes: + type: array + description: DEPRECATED - HS codes can be found in the classifications + array + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /hs_code + for this object. + pattern: "^/hs_code$" + description: + type: string + description: Description of HS or HTS code classification. + code: + type: string + description: 6 digit (international HS) or 10 digit (US HTS) code. + country_code: + type: string + description: The country code that the HS code belongs to. + classifications: + type: array + description: An array of product classifications, represented by Classification + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /product/classification + for this object. + pattern: "^/product/classification$" + region: + type: string + description: The two letter code for the region of the classification + codes: + type: array + description: Array of 6 digit (international HS) or 10 digit (US + HTS) code. + items: + type: string + suppliers: + type: array + description: Array of suppliers. + items: + "$schema": http://json-schema.org/draft-07/schema# + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /product/supplier + for this object. + pattern: "^/product/supplier$" + id: + type: integer + ref: + type: string + country_of_origin: + type: + - 'null' + - string + archived_at: + type: + - 'null' + - string + description: A date string representing when the product was archived. + Will be null if product is not archived. In ISO8601 UTC format with + timezone denoted by Z. + format: date-time + legs: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable API link to the legs of the shipment, represented by ShipmentLeg + objects. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list that + link points to. + customs_entries: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable API link to the customs entries for this shipment, represented + by CustomsEntry objects. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list that + link points to. + commercial_invoices: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable API link to the customs entries for this shipment, represented + by CommercialInvoice objects. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list that + link points to. + documents: + "$schema": http://json-schema.org/draft-07/schema# + description: Expandable API link to the documents for this shipment, represented + by Document objects. + type: object + properties: + _object: + type: string + description: String representing the object's type. Always /api/refs/collection + for this object. + pattern: "^/api/refs/collection$" + link: + type: string + description: API end point that points to a list of resources + ref_type: + type: string + description: The _object value of each individual element of the list that + link points to. + departure_date: + "$comment": deprecated + type: + - 'null' + - string + description: Departure date from the first port of the main voyage. + format: date-time + arrival_date: + "$comment": deprecated + type: + - 'null' + - string + description: Arrival date to the last port of the main voyage. + format: date-time + picked_up_in_full_date: + "$comment": deprecated + type: + - 'null' + - string + description: Pickup date from the origin location. For ocean shipments with multiple + containers, this is the date of last picked up container. + format: date-time + delivered_in_full_date: + "$comment": deprecated + type: + - 'null' + - string + description: Delivery date to the destination location. For ocean shipments with + multiple containers, this is the date of last delivered container. + format: date-time diff --git a/airbyte-integrations/connectors/source-flexport/metadata.yaml b/airbyte-integrations/connectors/source-flexport/metadata.yaml index 41053ed9d3cba..1537cd31e7bef 100644 --- a/airbyte-integrations/connectors/source-flexport/metadata.yaml +++ b/airbyte-integrations/connectors/source-flexport/metadata.yaml @@ -5,7 +5,7 @@ data: - flexport.com remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-flexport registryOverrides: oss: @@ -15,7 +15,7 @@ data: connectorSubtype: api connectorType: source definitionId: f95337f1-2ad1-4baf-922f-2ca9152de630 - dockerImageTag: 0.2.20 + dockerImageTag: 0.3.0 dockerRepository: airbyte/source-flexport githubIssueLabel: source-flexport icon: flexport.svg @@ -25,12 +25,12 @@ data: releaseStage: alpha documentationUrl: https://docs.airbyte.com/integrations/sources/flexport tags: - - language:python - cdk:low-code + - language:manifest-only ab_internal: sl: 100 ql: 100 supportLevel: community connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-flexport/poetry.lock b/airbyte-integrations/connectors/source-flexport/poetry.lock deleted file mode 100644 index 1aa5b5c1ab01e..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/poetry.lock +++ /dev/null @@ -1,1475 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "1.0.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-1.0.0-py3-none-any.whl", hash = "sha256:74cd8d4f9790b9a164731c42236cb015166b5ab2b0754b6a1fd730f223eb4e7f"}, - {file = "airbyte_cdk-1.0.0.tar.gz", hash = "sha256:102b75ce589460be4f75dabd3402ac7aa633c90758558c81d140fd436b76371f"}, -] - -[package.dependencies] -airbyte-protocol-models = ">=0.9.0,<1.0" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.0.1,<2.1.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.13.0" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.13.0-py3-none-any.whl", hash = "sha256:fa8b7e1a85f9ae171c50b30d23b317da1740d051994fd3ed648f9dfba00250e2"}, - {file = "airbyte_protocol_models-0.13.0.tar.gz", hash = "sha256:09d8900ba8674a9315fa1799d17026f6b38d2187c08160449540ee93331ed2e7"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "anyio" -version = "4.6.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.8" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.0.8" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.6" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.131" -description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, - {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} -requests = ">=2,<3" -requests-toolbelt = ">=1.0.0,<2.0.0" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "orjson" -version = "3.10.7" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "6.2.5" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "7837a8e446313e068be6245532d7ddb3a63f70da7bc4c6613d26c3a1443db8e7" diff --git a/airbyte-integrations/connectors/source-flexport/pyproject.toml b/airbyte-integrations/connectors/source-flexport/pyproject.toml deleted file mode 100644 index d4ce98e8d2f06..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "0.2.20" -name = "source-flexport" -description = "Source implementation for Flexport." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/flexport" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_flexport" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "1.0.0" - -[tool.poetry.scripts] -source-flexport = "source_flexport.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "^1.9.3" -pytest = "^6.2" -pytest-mock = "^3.6.1" diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/__init__.py b/airbyte-integrations/connectors/source-flexport/source_flexport/__init__.py deleted file mode 100644 index d54bdab5923c1..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceFlexport - -__all__ = ["SourceFlexport"] diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/manifest.yaml b/airbyte-integrations/connectors/source-flexport/source_flexport/manifest.yaml deleted file mode 100644 index 279cda2ecb8dc..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/manifest.yaml +++ /dev/null @@ -1,157 +0,0 @@ -version: 0.50.2 -type: DeclarativeSource -check: - type: CheckStream - stream_names: - - companies - -definitions: - selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: - - data - - data - - paginator: - type: DefaultPaginator - page_token_option: - type: RequestOption - inject_into: request_parameter - field_name: page - page_size_option: - inject_into: request_parameter - field_name: per - type: RequestOption - pagination_strategy: - type: PageIncrement - start_from_page: 1 - page_size: 100 - - requester: - type: HttpRequester - url_base: https://api.flexport.com/ - path: "{{ parameters.path }}" - http_method: GET - request_parameters: {} - request_headers: {} - authenticator: - type: BearerAuthenticator - api_token: "{{ config['api_key'] }}" - request_body_json: {} - - retriever: - type: SimpleRetriever - record_selector: - $ref: "#/definitions/selector" - paginator: - $ref: "#/definitions/paginator" - requester: - $ref: "#/definitions/requester" - - base_stream: - type: DeclarativeStream - primary_key: - - id - retriever: - $ref: "#/definitions/retriever" - - companies_stream: - $ref: "#/definitions/base_stream" - name: "companies" - $parameters: - path: "network/companies" - - invoices_stream: - $ref: "#/definitions/base_stream" - name: "invoices" - $parameters: - path: "invoices" - - locations_stream: - $ref: "#/definitions/base_stream" - name: "locations" - $parameters: - path: "network/locations" - - products_stream: - $ref: "#/definitions/base_stream" - name: "products" - $parameters: - path: "products" - - shipments_stream: - type: DeclarativeStream - name: "shipments" - primary_key: - - id - retriever: - type: SimpleRetriever - record_selector: - $ref: "#/definitions/selector" - paginator: - $ref: "#/definitions/paginator" - requester: - type: HttpRequester - url_base: https://api.flexport.com/ - path: "shipments" - http_method: GET - request_parameters: - sort: updated_at - direction: asc - request_headers: {} - authenticator: - type: BearerAuthenticator - api_token: "{{ config['api_key'] }}" - request_body_json: {} - incremental_sync: - type: DatetimeBasedCursor - datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" - cursor_field: updated_at - start_time_option: - inject_into: request_parameter - field_name: f.updated_at.gt - type: RequestOption - end_time_option: - inject_into: request_parameter - field_name: f.updated_at.lt - type: RequestOption - start_datetime: - type: MinMaxDatetime - datetime: "{{ config['start_date'] }}" - datetime_format: "%Y-%m-%dT%H:%M:%SZ" - end_datetime: - type: MinMaxDatetime - datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" - datetime_format: "%Y-%m-%dT%H:%M:%SZ" - -streams: - - "#/definitions/companies_stream" - - "#/definitions/invoices_stream" - - "#/definitions/locations_stream" - - "#/definitions/products_stream" - - "#/definitions/shipments_stream" - -spec: - type: Spec - documentation_url: "https://docs.airbyte.com/integrations/sources/flexport" - connection_specification: - $schema: http://json-schema.org/draft-07/schema# - type: object - additionalProperties: true - required: - - api_key - - start_date - properties: - api_key: - type: string - title: API Key - airbyte_secret: true - order: 0 - start_date: - type: string - title: Start date - format: date-time - pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ - order: 1 diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/run.py b/airbyte-integrations/connectors/source-flexport/source_flexport/run.py deleted file mode 100644 index 9bba4b7e96a45..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_flexport import SourceFlexport - - -def run(): - source = SourceFlexport() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/companies.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/companies.json deleted file mode 100644 index 1804dac46ebd7..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/companies.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "$ref": "network/company.json" -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/invoices.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/invoices.json deleted file mode 100644 index 43c76ebf2d3ae..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/invoices.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "$ref": "invoice.json" -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/locations.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/locations.json deleted file mode 100644 index 2601c886e8381..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/locations.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "$ref": "network/location.json" -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/products.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/products.json deleted file mode 100644 index 8f7a7adb6586e..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/products.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "$ref": "product.json" -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/address.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/address.json deleted file mode 100644 index 52a01d4d1dc33..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/address.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /address for this object.", - "pattern": "^/address$" - }, - "street_address": { - "type": "string", - "description": "Address line 1 (Street address/PO Box)." - }, - "street_address2": { - "type": ["null", "string"], - "description": "Address line 2 (Apartment/Suite/Unit/Building)." - }, - "city": { - "type": "string", - "description": "City/Town." - }, - "state": { - "type": ["null", "string"], - "description": "State/County/Province/Region." - }, - "country": { - "type": ["null", "string"], - "description": "Country." - }, - "country_code": { - "type": ["null", "string"], - "description": "Two-letter country code (ISO 3166-1 Alpha-2)." - }, - "zip": { - "type": ["null", "string"], - "description": "ZIP or postal code." - }, - "timezone": { - "type": ["null", "string"], - "description": "Timezone for this address" - }, - "ref": { - "type": ["null", "string"], - "description": "Your reference for the address, as set in your network tab" - }, - "unlocode": { - "type": ["null", "string"], - "description": "If port, then UN/LOCODE (United Nations Code for Trade and Transport Locations)." - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/air/shipment.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/air/shipment.json deleted file mode 100644 index 9ddf5f73905bd..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/air/shipment.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object`s type. Always /air/shipment for this object.", - "pattern": "^/air/shipment$" - }, - "house_airway_bill": { - "type": "string", - "description": "House air waybill number" - }, - "master_airway_bill": { - "type": "string", - "description": "Master air waybill number" - }, - "chargeable_weight": { - "description": "Chargeable weight (kg or lbs) of the shipment.", - "$ref": "../quantity/weight.json" - }, - "chargeable_volume": { - "description": "Chargeable volume (cbm or cft) of the shipment.", - "$ref": "../quantity/volume.json" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/api/refs/collection.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/api/refs/collection.json deleted file mode 100644 index 026450e08e9f6..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/api/refs/collection.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /api/refs/collection for this object.", - "pattern": "^/api/refs/collection$" - }, - "link": { - "type": "string", - "description": "API end point that points to a list of resources" - }, - "ref_type": { - "type": "string", - "description": "The _object value of each individual element of the list that link points to." - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/api/refs/object.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/api/refs/object.json deleted file mode 100644 index dd80e51ba5775..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/api/refs/object.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /api/refs/object for this object.", - "pattern": "^/api/refs/object$" - }, - "link": { - "type": "string", - "description": "API end point that points to a resource." - }, - "ref_type": { - "type": "string", - "description": "The _object value of the object that the link points to." - }, - "id": { - "type": ["integer", "string"], - "description": "The id value of the object that the link points to." - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/company_entity.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/company_entity.json deleted file mode 100644 index 2f84330047d49..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/company_entity.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /company_entity for this object.", - "pattern": "^/company_entity$" - }, - "id": { - "type": "integer", - "description": "Unique identifier for the object." - }, - "name": { - "type": "string", - "description": "Name of the company entity." - }, - "ref": { - "type": "string", - "description": "Your reference for this company entity, as set in the Network tab." - }, - "mailing_address": { - "description": "Address of the company entity.", - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "address.json" - } - ] - }, - "vat_numbers": { - "type": "array", - "description": "Array of VAT numbers of the company entity.", - "items": { - "$ref": "company_entity/vat_number.json" - } - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/company_entity/vat_number.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/company_entity/vat_number.json deleted file mode 100644 index f787e43b1357f..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/company_entity/vat_number.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /company_entity/vat_number for this object.", - "pattern": "^/company_entity/vat_number$" - }, - "country_code": { - "type": "string", - "description": "ISO 3166 two-letter country code of the VAT number's country" - }, - "number": { - "type": "string", - "description": "Full VAT number, including the country code" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/credit_memo.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/credit_memo.json deleted file mode 100644 index 9f2a051bed373..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/credit_memo.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /credit_memo for this object.", - "pattern": "^/credit_memo$" - }, - "amount": { - "description": "Amount of the credit", - "$ref": "money.json" - }, - "credited_at": { - "type": "string", - "description": "When the credit was applied. In ISO8601 UTC format with timezone denoted by Z.", - "format": "date-time" - }, - "categories": { - "type": "array", - "description": "Category of the credit memo", - "items": { - "type": "string" - } - }, - "reasons": { - "type": "array", - "description": "Why the credit was applied to the invoice", - "items": { - "type": ["null", "string"] - } - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/hs_code.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/hs_code.json deleted file mode 100644 index f96137267e334..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/hs_code.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /hs_code for this object.", - "pattern": "^/hs_code$" - }, - "description": { - "type": "string", - "description": "Description of HS or HTS code classification." - }, - "code": { - "type": "string", - "description": "6 digit (international HS) or 10 digit (US HTS) code." - }, - "country_code": { - "type": "string", - "description": "The country code that the HS code belongs to." - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice.json deleted file mode 100644 index eafa29f1cf5e9..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "Type of the object. Always /invoice for this object.", - "pattern": "^/invoice$" - }, - "id": { - "type": "string", - "description": "Unique ID for the invoice" - }, - "name": { - "type": "string", - "description": "Unique name for the invoice" - }, - "issued_at": { - "type": "string", - "description": "When the invoice was issued. In ISO8601 UTC format with timezone denoted by Z.", - "format": "date-time" - }, - "due_date": { - "type": "string", - "description": "Due date of the invoice. Calendar date only, no time.", - "format": "date" - }, - "total": { - "description": "Sum of charges on the invoice", - "$ref": "money.json" - }, - "balance": { - "description": "Outstanding balance on the invoice", - "$ref": "money.json" - }, - "status": { - "type": "string", - "description": "Status of the invoice. One of:", - "enum": ["outstanding", "past_due", "void", "paid", "payment_pending"] - }, - "type": { - "type": ["null", "string"], - "description": "What the invoice is being issued for. Shipment related charges are type Shipment and non-shipment related charges are type Client" - }, - "voided_at": { - "type": ["null", "string"], - "description": "When the invoice was voided (if applicable). In ISO8601 UTC format with timezone denoted by Z.", - "format": "date-time" - }, - "last_updated_at": { - "type": ["null", "string"], - "description": "Time of the last adjustment to in invoice. In ISO8601 UTC format with timezone denoted by Z.", - "format": "date-time" - }, - "recipient": { - "description": "Inlined CompanyEntity info for recipient", - "$ref": "company_entity.json" - }, - "issuer": { - "description": "CompanyEntity receiving payment for this invoice", - "$ref": "company_entity.json" - }, - "items": { - "type": "array", - "description": "Inlined list of InvoiceItems", - "items": { - "$ref": "invoice_item.json" - } - }, - "credit_memos": { - "type": "array", - "description": "Inlined list of CreditMemos", - "items": { - "$ref": "credit_memo.json" - } - }, - "notes": { - "type": "array", - "description": "Memoranda relevant to the invoice", - "items": { - "type": "string" - } - }, - "shipments": { - "description": "Expandable link to information on related shipments", - "$ref": "api/refs/collection.json" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice/quantity.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice/quantity.json deleted file mode 100644 index d93a87a171cbc..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice/quantity.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /invoice/quantity for this object.", - "pattern": "^/invoice/quantity$" - }, - "value": { - "type": "string", - "description": "Numeric value described by qualifier" - }, - "qualifier": { - "type": "string", - "description": "Describes what the value represents ('kg', 'bill of lading', 'USD')" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice/rate.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice/rate.json deleted file mode 100644 index 4065655ec6867..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice/rate.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /invoice/rate for this object.", - "pattern": "^/invoice/rate$" - }, - "value": { - "type": "string", - "description": "Numeric value described by qualifier" - }, - "qualifier": { - "type": "string", - "description": "Describes what the value represents ('USD', '% Drayage Base', etc)" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice_item.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice_item.json deleted file mode 100644 index 30764295ac7d6..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/invoice_item.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /invoice_item for this object.", - "pattern": "^/invoice_item$" - }, - "name": { - "type": "string", - "description": "Line item name. Example: FCL 40' HQ" - }, - "slug": { - "type": "string", - "description": "Line item code. Example: fcl_40_hq" - }, - "category": { - "type": "string", - "description": "Category of the charge. Example freight" - }, - "amount": { - "description": "Price of the item", - "$ref": "money.json" - }, - "rate": { - "description": "Describes the rate per unit used to calculate the price of a line item", - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "invoice/rate.json" - } - ] - }, - "quantity": { - "description": "Describes the number of units used to calculate the price of a line item", - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "invoice/quantity.json" - } - ] - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/money.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/money.json deleted file mode 100644 index 0461a9a8a2fce..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/money.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /money for this object.", - "pattern": "^/money$" - }, - "amount": { - "type": "string", - "description": "A string representing the decimal amount" - }, - "currency_code": { - "type": "string", - "description": "The currency of the amount" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/network/company.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/network/company.json deleted file mode 100644 index 8b76a486072fd..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/network/company.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /network/company for this object.", - "pattern": "^/network/company$" - }, - "id": { - "type": "string", - "description": "Unique identifier for the object." - }, - "name": { - "type": "string", - "description": "Name of the company." - }, - "ref": { - "type": "string", - "description": "Your ref for this company entity, as set in the Network tab." - }, - "editable": { - "type": "boolean", - "description": "Whether or not you manage this company and can edit its attributes." - }, - "entities": { - "type": "array", - "description": "Array of company entities that belong to this company.", - "items": { - "$ref": "../company_entity.json" - } - }, - "locations": { - "description": "Array of company entities that belong to this company.", - "$ref": "../api/refs/collection.json" - }, - "contacts": { - "description": "Expandable link to the contacts of this company.", - "$ref": "../api/refs/collection.json" - }, - "metadata": { - "type": "object", - "description": "User defined metadata attached to the company." - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/network/location.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/network/location.json deleted file mode 100644 index 08c7345ae687e..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/network/location.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /network/location for this object.", - "pattern": "^/network/location$" - }, - "id": { - "type": "string", - "description": "Unique identifier for the location." - }, - "name": { - "type": ["null", "string"], - "description": "Name of the location." - }, - "address": { - "description": "Address of the location.", - "$ref": "../address.json" - }, - "editable": { - "type": "boolean", - "description": "Whether or not you manage this location and can edit its attributes." - }, - "contacts": { - "description": "Expandable API link to the contacts at this location.", - "$ref": "../api/refs/collection.json" - }, - "company": { - "description": "Expandable API link to the company that this location belongs to.", - "$ref": "../api/refs/object.json" - }, - "ref": { - "type": "string", - "description": "Your custom ref to this location." - }, - "metadata": { - "type": "object", - "description": "User defined metadata attached to the location." - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/ocean/shipment.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/ocean/shipment.json deleted file mode 100644 index 4088cff0662d0..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/ocean/shipment.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /ocean/shipment for this object.", - "pattern": "^/ocean/shipment$" - }, - "is_lcl": { - "type": "boolean", - "description": "Flag that indicates whether the object is a LCL shipment." - }, - "house_bill_number": { - "type": "string", - "description": "House bill of lading number." - }, - "master_bill_number": { - "type": ["null", "string"], - "description": "Master bill of lading number." - }, - "carrier_booking_number": { - "type": ["null", "string"], - "description": "Ocean carrier booking reference number." - }, - "confirmed_space_released_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "containers": { - "description": "Expandable API link to the containers of the shipment, represented by the Container object.", - "$ref": "../api/refs/collection.json" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product.json deleted file mode 100644 index 47c0effead9fd..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /product for this object.", - "pattern": "^/product$" - }, - "id": { - "type": "integer", - "description": "Unique identifier for the object." - }, - "name": { - "type": "string", - "description": "Name of product." - }, - "description": { - "type": ["null", "string"], - "description": "Description of product." - }, - "sku": { - "type": ["null", "string"], - "description": "SKU of product." - }, - "product_category": { - "type": ["null", "string"], - "description": "The category of the product" - }, - "country_of_origin": { - "type": ["null", "string"], - "description": "Nation in which the product is manufactured" - }, - "client_verified": { - "type": "boolean", - "description": "Indicates whether Client has verified this Product." - }, - "product_properties": { - "type": "array", - "description": "An array of product properties, represented by ProductProperty", - "items": { - "$ref": "product/property.json" - } - }, - "hs_codes": { - "type": "array", - "description": "DEPRECATED - HS codes can be found in the classifications array", - "items": { - "$ref": "hs_code.json" - } - }, - "classifications": { - "type": "array", - "description": "An array of product classifications, represented by Classification", - "items": { - "$ref": "product/classification.json" - } - }, - "suppliers": { - "type": "array", - "description": "Array of suppliers.", - "items": { - "$ref": "product/supplier.json" - } - }, - "archived_at": { - "type": ["null", "string"], - "description": "A date string representing when the product was archived. Will be null if product is not archived. In ISO8601 UTC format with timezone denoted by Z.", - "format": "date-time" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/classification.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/classification.json deleted file mode 100644 index 8da4d4f8b7918..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/classification.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /product/classification for this object.", - "pattern": "^/product/classification$" - }, - "region": { - "type": "string", - "description": "The two letter code for the region of the classification" - }, - "codes": { - "type": "array", - "description": "Array of 6 digit (international HS) or 10 digit (US HTS) code.", - "items": { - "type": "string" - } - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/property.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/property.json deleted file mode 100644 index 576e05b14d3f3..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/property.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /product/property for this object.", - "pattern": "^/product/property$" - }, - "type": { - "type": "string", - "description": "The property describing the product" - }, - "value": { - "type": "string", - "description": "The value associated with the product" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/supplier.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/supplier.json deleted file mode 100644 index 327c56fd9d6cb..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/product/supplier.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /product/supplier for this object.", - "pattern": "^/product/supplier$" - }, - "id": { - "type": "integer" - }, - "ref": { - "type": "string" - }, - "country_of_origin": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/quantity/volume.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/quantity/volume.json deleted file mode 100644 index 64c05a8beab4d..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/quantity/volume.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /quantity/volume for this object.", - "pattern": "^/quantity/volume" - }, - "value": { - "type": "number", - "description": "Specifies the quantity of units as a float." - }, - "unit": { - "type": "string", - "description": "Specifies the unit of measure for this quantity.", - "enum": ["cbm", "cbft"] - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/quantity/weight.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/quantity/weight.json deleted file mode 100644 index acfe75b2e2f77..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/quantity/weight.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /quantity/weight for this object.", - "pattern": "^/quantity/weight" - }, - "value": { - "type": "number", - "description": "Specifies the quantity of units as a float." - }, - "unit": { - "type": "string", - "description": "Specifies the unit of measure for this quantity.", - "enum": ["kg", "lbs", "t"] - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment.json deleted file mode 100644 index 2ad39411d1615..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment.json +++ /dev/null @@ -1,315 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": false, - "properties": { - "metadata": { - "type": "object", - "description": "Set of custom key-values specific to the object. The keys are strings and values are arrays of strings. The set of valid keys is always the consignee's list of keys, even if call was made by a different party." - }, - "_object": { - "type": "string", - "description": "String representing the object's type. Always /shipment for this object.", - "pattern": "^/shipment$" - }, - "id": { - "type": "integer", - "description": "Unique identifier for the object." - }, - "name": { - "type": "string", - "description": "Name of the shipment." - }, - "booking": { - "description": "The booking associated with this shipment", - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "api/refs/object.json" - } - ] - }, - "transportation_mode": { - "type": "string", - "description": "Transportation mode of the main carriage of the shipment.", - "enum": [ - "ocean", - "air", - "truck", - "rail", - "unknown_transportation", - "ocean_air", - "truck_intl", - "warehouse_storage" - ] - }, - "freight_type": { - "type": "string", - "description": "The type of freight service provided. One of:", - "enum": ["port_to_door", "port_to_port", "door_to_door", "door_to_port"] - }, - "archived_at": { - "type": ["null", "string"], - "description": "Date when the shipment was archived, if applicable. In ISO8601 UTC format with timezone denoted by Z.", - "format": "date-time" - }, - "incoterm": { - "type": "string", - "description": "The Incoterm of your shipment.", - "enum": [ - "EXW", - "FOB", - "FAS", - "FCA", - "CPT", - "CFR", - "CIF", - "CIP", - "DAT", - "DAP", - "DDP", - "DPU" - ] - }, - "calculated_weight": { - "description": "Total weight (kg or lbs) of the shipment, calculated from individual pieces if package dimensions are known.", - "$ref": "quantity/weight.json" - }, - "calculated_volume": { - "description": "Total volume (cbm or cft) of the shipment, calculated from individual pieces if package dimensions are known.", - "$ref": "quantity/volume.json" - }, - "pieces": { - "type": ["null", "integer"], - "description": "Total number of pieces in the shipment." - }, - "it_number": { - "type": ["null", "string"], - "description": "Inbond Transit number used for US Customs" - }, - "created_date": { - "type": "string", - "description": "Date the user confirmed the Flexport quote for this Shipment.", - "format": "date-time" - }, - "status": { - "type": "string", - "description": "Status of the shipment. One of:", - "enum": [ - "seller_location", - "in_transit_to_departure_port", - "departure_port", - "in_transit_to_arrival_port", - "arrival_port", - "in_transit_to_final_destination", - "final_destination" - ] - }, - "priority": { - "type": "string", - "description": "The level of attention Flexport should give to this shipment.", - "enum": ["standard", "high"] - }, - "updated_at": { - "type": "string", - "description": "Date when the shipment object was last updated. In ISO8601 UTC format with timezone denoted by Z.", - "format": "date-time" - }, - "estimated_departure_date": { - "type": ["null", "string"], - "description": "Estimated departure date from the first port of the main voyage. In ISO8601 format with timezone denoted by +/-HH:MM.", - "format": "date-time" - }, - "actual_departure_date": { - "type": ["null", "string"], - "description": "Actual departure date from the first port of the main voyage. In ISO8601 format with timezone denoted by +/-HH:MM.", - "format": "date-time" - }, - "estimated_arrival_date": { - "type": ["null", "string"], - "description": "Estimated arrival date to the last port of the main voyage. In ISO8601 format with timezone denoted by +/-HH:MM.", - "format": "date-time" - }, - "actual_arrival_date": { - "type": ["null", "string"], - "description": "Actual arrival date to the last port of the main voyage. In ISO8601 format with timezone denoted by +/-HH:MM.", - "format": "date-time" - }, - "cargo_ready_date": { - "type": "string", - "description": "Date when cargo is ready for pickup at the origin location. Calendar date only, no time.", - "format": "date" - }, - "wants_freight_management_bco": { - "type": "boolean", - "description": "Determines if a shipment bypasses a freight forwarder and is booked directly with a steamship line." - }, - "wants_flexport_freight": { - "type": "boolean", - "description": "Determines if a shipment is using Flexport services for a combination of import customs clearance or final leg delivery." - }, - "wants_commercial_invoice_transcription": { - "type": "boolean" - }, - "wants_flexport_insurance": { - "type": "boolean" - }, - "wants_pickup_service": { - "type": "boolean" - }, - "wants_trade_declaration_service": { - "type": ["null", "boolean"] - }, - "visibility_only": { - "type": "boolean", - "description": "Indicates if a shipment was requested for tracking via the Flexport visibility-only service." - }, - "wants_delivery_service": { - "type": "boolean", - "description": "Determines if Flexport is responsible for door delivery on a shipment." - }, - "estimated_picked_up_in_full_date": { - "type": ["null", "string"], - "description": "Estimated pickup date from the origin location. For ocean shipments with multiple containers, this is the date of last picked up container. In ISO8601 format with timezone denoted by +/-HH:MM.", - "format": "date-time" - }, - "actual_picked_up_in_full_date": { - "type": ["null", "string"], - "description": "Actual pickup date from the origin location. For ocean shipments with multiple containers, this is the date of last picked up container. In ISO8601 format with timezone denoted by +/-HH:MM.", - "format": "date-time" - }, - "target_delivery_date": { - "type": ["null", "string"], - "description": "Target date for when the shipment will be fully delivered. This date is set when the shipment''s booking is confirmed. This value may be different from estimated_delivered_in_full_date, which is updated when there is new information about the progress of a shipment. Date only.", - "format": "date" - }, - "estimated_delivered_in_full_date": { - "type": ["null", "string"], - "description": "Estimated delivery date to the destination location. For ocean shipments with multiple containers, this is the date of last delivered container. In ISO8601 format with timezone denoted by +/-HH:MM.", - "format": "date-time" - }, - "actual_delivered_in_full_date": { - "type": ["null", "string"], - "description": "Actual delivery date to the destination location. For ocean shipments with multiple containers, this is the date of last delivered container. In ISO8601 format with timezone denoted by +/-HH:MM.", - "format": "date-time" - }, - "wants_export_customs_service": { - "type": "boolean", - "description": "Determines if the shipment requires Flexport to provide export customs service." - }, - "wants_import_customs_service": { - "type": "boolean", - "description": "Determines if the shipment requires Flexport to provide import customs service." - }, - "ocean_shipment": { - "description": "Ocean-specific Shipment information. Available only if this is an ocean shipment. null otherwise.", - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "ocean/shipment.json" - } - ] - }, - "air_shipment": { - "description": "Air-specific Shipment information. Available only if this is an air shipment. null otherwise.", - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "air/shipment.json" - } - ] - }, - "dangerous_goods": { - "description": "", - "$ref": "shipment/dangerous_goods.json" - }, - "shippers": { - "type": "array", - "description": "Array of shippers of the shipment, represented by the CompanyEntity objects.", - "items": { - "$ref": "company_entity.json" - } - }, - "consignees": { - "type": "array", - "description": "Array of consignees of the shipment, represented by CompanyEntity objects.", - "items": { - "$ref": "company_entity.json" - } - }, - "buyers": { - "type": "array", - "description": "Array of buyers of the shipment, represented by CompanyEntity objects.", - "items": { - "$ref": "company_entity.json" - } - }, - "sellers": { - "type": "array", - "description": "Array of sellers of the shipment, represented by CompanyEntity objects.", - "items": { - "$ref": "company_entity.json" - } - }, - "importers_of_record": { - "type": "array", - "description": "Array of importers of record of the shipment, represented by CompanyEntity objects.", - "items": { - "$ref": "company_entity.json" - } - }, - "items": { - "type": "array", - "description": "Array of products and SKUs in the shipment, represented by ShipmentItem objects.", - "items": { - "$ref": "shipment_item.json" - } - }, - "legs": { - "description": "Expandable API link to the legs of the shipment, represented by ShipmentLeg objects.", - "$ref": "api/refs/collection.json" - }, - "customs_entries": { - "description": "Expandable API link to the customs entries for this shipment, represented by CustomsEntry objects.", - "$ref": "api/refs/collection.json" - }, - "commercial_invoices": { - "description": "Expandable API link to the customs entries for this shipment, represented by CommercialInvoice objects.", - "$ref": "api/refs/collection.json" - }, - "documents": { - "description": "Expandable API link to the documents for this shipment, represented by Document objects.", - "$ref": "api/refs/collection.json" - }, - "departure_date": { - "$comment": "deprecated", - "type": ["null", "string"], - "description": "Departure date from the first port of the main voyage.", - "format": "date-time" - }, - "arrival_date": { - "$comment": "deprecated", - "type": ["null", "string"], - "description": "Arrival date to the last port of the main voyage.", - "format": "date-time" - }, - "picked_up_in_full_date": { - "$comment": "deprecated", - "type": ["null", "string"], - "description": "Pickup date from the origin location. For ocean shipments with multiple containers, this is the date of last picked up container.", - "format": "date-time" - }, - "delivered_in_full_date": { - "$comment": "deprecated", - "type": ["null", "string"], - "description": "Delivery date to the destination location. For ocean shipments with multiple containers, this is the date of last delivered container.", - "format": "date-time" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment/dangerous_goods.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment/dangerous_goods.json deleted file mode 100644 index 231e81137e662..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment/dangerous_goods.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /shipment/dangerous_goods for this object.", - "pattern": "^/shipment/dangerous_goods" - }, - "review_status": { - "type": ["null", "string"] - }, - "classifications": { - "type": "array" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment_item.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment_item.json deleted file mode 100644 index 8ea0c96632f91..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shared/shipment_item.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "_object": { - "type": "string", - "description": "String representing the object's type. Always /shipment_item for this object.", - "pattern": "^/shipment_item$" - }, - "id": { - "type": "integer", - "description": "Unique identifier for the object." - }, - "total_units": { - "type": "string", - "description": "Total quantity of specific SKU within shipment." - }, - "total_weight": { - "description": "Total weight of specific SKU within shipment.", - "$ref": "quantity/weight.json" - }, - "total_volume": { - "description": "Total volume of specific SKU within shipment.", - "$ref": "quantity/volume.json" - }, - "purchase_order_number": { - "type": "string", - "description": "Purchase order number associated with SKU within shipment." - }, - "product": { - "description": "Name and SKU of product, represented by the Product object.", - "$ref": "product.json" - } - } -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shipments.json b/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shipments.json deleted file mode 100644 index 731f7330b00ca..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/schemas/shipments.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "$ref": "shipment.json" -} diff --git a/airbyte-integrations/connectors/source-flexport/source_flexport/source.py b/airbyte-integrations/connectors/source-flexport/source_flexport/source.py deleted file mode 100644 index 4a9b88b0ed3a7..0000000000000 --- a/airbyte-integrations/connectors/source-flexport/source_flexport/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceFlexport(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/docs/integrations/sources/flexport.md b/docs/integrations/sources/flexport.md index 4283275235306..4896240b70c7a 100644 --- a/docs/integrations/sources/flexport.md +++ b/docs/integrations/sources/flexport.md @@ -49,6 +49,7 @@ Authentication uses a pre-created API token which can be [created in the UI](htt | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------ | +| 0.3.0 | 2024-10-05 | [46416](https://github.com/airbytehq/airbyte/pull/46416) | Migrate to Manifest-only CDK | | 0.2.20 | 2024-10-05 | [46455](https://github.com/airbytehq/airbyte/pull/46455) | Update dependencies | | 0.2.19 | 2024-09-28 | [46199](https://github.com/airbytehq/airbyte/pull/46199) | Update dependencies | | 0.2.18 | 2024-09-21 | [45735](https://github.com/airbytehq/airbyte/pull/45735) | Update dependencies | From ec09c4dc231bd071f16f8c1cc9e4fa5875d6c58f Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Mon, 7 Oct 2024 04:00:37 +0100 Subject: [PATCH 156/379] =?UTF-8?q?=E2=9C=A8=20Source=20Postmarkapp=20:=20?= =?UTF-8?q?Migrate=20to=20Manifest-only=20(#46522)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Octavia Squidington III --- .../connectors/source-postmarkapp/README.md | 89 +- .../connectors/source-postmarkapp/__init__.py | 3 - .../acceptance-test-config.yml | 2 +- .../connectors/source-postmarkapp/main.py | 8 - .../source-postmarkapp/manifest.yaml | 593 ++++++++++ .../source-postmarkapp/metadata.yaml | 8 +- .../connectors/source-postmarkapp/poetry.lock | 1049 ----------------- .../source-postmarkapp/pyproject.toml | 28 - .../source_postmarkapp/__init__.py | 8 - .../source_postmarkapp/manifest.yaml | 446 ------- .../source_postmarkapp/run.py | 14 - .../schemas/outbound-stats.json | 74 -- .../source_postmarkapp/schemas/server.json | 97 -- .../source_postmarkapp/schemas/templates.json | 40 - .../source_postmarkapp/source.py | 18 - .../source_postmarkapp/spec.yaml | 20 - docs/integrations/sources/postmarkapp.md | 1 + 17 files changed, 624 insertions(+), 1874 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/__init__.py delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/main.py create mode 100644 airbyte-integrations/connectors/source-postmarkapp/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/__init__.py delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/run.py delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/outbound-stats.json delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/server.json delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/templates.json delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/source.py delete mode 100644 airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/spec.yaml diff --git a/airbyte-integrations/connectors/source-postmarkapp/README.md b/airbyte-integrations/connectors/source-postmarkapp/README.md index 8e3cc593ad882..36d690358ce8c 100644 --- a/airbyte-integrations/connectors/source-postmarkapp/README.md +++ b/airbyte-integrations/connectors/source-postmarkapp/README.md @@ -1,49 +1,22 @@ # Postmarkapp source connector -This is the repository for the Postmarkapp source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/postmarkapp). +This directory contains the manifest-only connector for `source-postmarkapp`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. -## Local development - -### Prerequisites - -- Python (~=3.9) -- Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) - -### Installing the connector - -From this connector directory, run: - -```bash -poetry install --with dev -``` - -### Create credentials +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/postmarkapp). -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/postmarkapp) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_postmarkapp/spec.yaml` file. -Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - -### Locally running the connector - -``` -poetry run source-postmarkapp spec -poetry run source-postmarkapp check --config secrets/config.json -poetry run source-postmarkapp discover --config secrets/config.json -poetry run source-postmarkapp read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` +## Local development -### Running unit tests +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! -To run unit tests locally, from the connector directory run: - -``` -poetry run pytest unit_tests -``` +If you prefer to develop locally, you can follow the instructions below. ### Building the docker image +You can build any manifest-only connector with `airbyte-ci`: + 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md) 2. Run the following command to build the docker image: @@ -53,18 +26,24 @@ airbyte-ci connectors --name=source-postmarkapp build An image will be available on your host with the tag `airbyte/source-postmarkapp:dev`. +### Creating credentials + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/postmarkapp) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. +Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. + ### Running as a docker container -Then run any of the connector commands as follows: +Then run any of the standard source connector commands: -``` +```bash docker run --rm airbyte/source-postmarkapp:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-postmarkapp:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-postmarkapp:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-postmarkapp:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite +### Running the CI test suite You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): @@ -72,33 +51,15 @@ You can run our full test suite locally using [`airbyte-ci`](https://github.com/ airbyte-ci connectors --name=source-postmarkapp test ``` -### Customizing acceptance Tests - -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. - -### Dependency Management - -All of your dependencies should be managed via Poetry. -To add a new dependency, run: - -```bash -poetry add -``` - -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? - -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-postmarkapp test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. +If you want to contribute changes to `source-postmarkapp`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-postmarkapp test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): + - bump the `dockerImageTag` value in in `metadata.yaml` 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/postmarkapp.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. 7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master. -8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry. +8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry. \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-postmarkapp/__init__.py b/airbyte-integrations/connectors/source-postmarkapp/__init__.py deleted file mode 100644 index c941b30457953..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-postmarkapp/acceptance-test-config.yml b/airbyte-integrations/connectors/source-postmarkapp/acceptance-test-config.yml index 1f707c1dc9d74..003f3f4160371 100644 --- a/airbyte-integrations/connectors/source-postmarkapp/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-postmarkapp/acceptance-test-config.yml @@ -4,7 +4,7 @@ connector_image: airbyte/source-postmarkapp:dev acceptance_tests: spec: tests: - - spec_path: "source_postmarkapp/spec.yaml" + - spec_path: "manifest.yaml" connection: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-postmarkapp/main.py b/airbyte-integrations/connectors/source-postmarkapp/main.py deleted file mode 100644 index c6b256d74b3af..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_postmarkapp.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-postmarkapp/manifest.yaml b/airbyte-integrations/connectors/source-postmarkapp/manifest.yaml new file mode 100644 index 0000000000000..07ce39942a94c --- /dev/null +++ b/airbyte-integrations/connectors/source-postmarkapp/manifest.yaml @@ -0,0 +1,593 @@ +version: 5.10.2 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - message-streams + +definitions: + streams: + deliverystats: + type: DeclarativeStream + name: deliverystats + primary_key: + - Name + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /deliverystats + http_method: GET + request_parameters: + count: "500" + request_body_json: + Accept: application/json + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - Bounces + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: offset + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 500 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/deliverystats" + message-streams: + type: DeclarativeStream + name: message-streams + primary_key: + - ID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /message-streams + http_method: GET + request_parameters: + count: "500" + request_body_json: + Accept: application/json + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - MessageStreams + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: offset + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 500 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/message-streams" + domains: + type: DeclarativeStream + name: domains + primary_key: + - ID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/account_base_requester" + path: /domains + http_method: GET + request_parameters: + count: "500" + request_body_json: + Accept: application/json + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - Domains + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: offset + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 500 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/domains" + messages: + type: DeclarativeStream + name: messages + primary_key: + - MessageID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /messages/outbound + http_method: GET + request_parameters: + count: "500" + request_body_json: + Accept: application/json + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - Messages + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: offset + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 500 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/messages" + bounces: + type: DeclarativeStream + name: bounces + primary_key: + - ID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /bounces + http_method: GET + request_parameters: + count: "500" + request_body_json: + Accept: application/json + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - Bounces + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: offset + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 500 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/bounces" + servers: + type: DeclarativeStream + name: servers + primary_key: + - ID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/account_base_requester" + path: /servers + http_method: GET + request_parameters: + count: "500" + request_body_json: + Accept: application/json + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - Servers + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + page_size_option: + type: RequestOption + field_name: offset + inject_into: request_parameter + pagination_strategy: + type: OffsetIncrement + page_size: 500 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/servers" + base_requester: + type: HttpRequester + url_base: https://api.postmarkapp.com + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"X-Postmark-Server-Token\"] }}" + inject_into: + type: RequestOption + field_name: X-Postmark-Server-Token + inject_into: header + account_base_requester: + type: HttpRequester + url_base: https://api.postmarkapp.com + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"X-Postmark-Account-Token\"] }}" + inject_into: + type: RequestOption + field_name: X-Postmark-Account-Token + inject_into: header + +streams: + - $ref: "#/definitions/streams/deliverystats" + - $ref: "#/definitions/streams/message-streams" + - $ref: "#/definitions/streams/domains" + - $ref: "#/definitions/streams/messages" + - $ref: "#/definitions/streams/bounces" + - $ref: "#/definitions/streams/servers" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - X-Postmark-Server-Token + - X-Postmark-Account-Token + properties: + X-Postmark-Server-Token: + type: string + description: API Key for server + order: 0 + title: X-Postmark-Server-Token + airbyte_secret: true + X-Postmark-Account-Token: + type: string + description: API Key for account + order: 1 + title: X-Postmark-Account-Token + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + deliverystats: false + message-streams: false + domains: false + messages: false + bounces: false + servers: false + testedStreams: + deliverystats: + streamHash: ee3d7bf2e220be4d2334fa38e790b592378d8264 + message-streams: + streamHash: 1444b29438f64709e7d115982e04a862a034ee58 + domains: + streamHash: fb745329025819d5cdaaeaf3c56e037f3f95178d + messages: + streamHash: 004802781c5fffa13856f532caa5fd2ca971a5bb + bounces: + streamHash: 453a72e42168ce858cee393707b11e567c6a0f77 + servers: + streamHash: 858c5a5c878e5e4f90bd09e85f6955cbed0a3278 + assist: {} + +schemas: + deliverystats: + type: object + $schema: http://json-schema.org/draft-04/schema# + additionalProperties: true + properties: + Count: + type: integer + description: The total count of delivered items for the specified time period. + Name: + type: string + description: The name of the delivery status type corresponding to the count. + message-streams: + type: object + $schema: http://json-schema.org/draft-04/schema# + additionalProperties: true + properties: + ArchivedAt: + type: "null" + description: Timestamp when the message stream was archived. + CreatedAt: + type: string + description: Timestamp when the message stream was created. + Description: + type: string + description: Description of the message stream. + ExpectedPurgeDate: + type: "null" + description: Expected date for purging the message stream data. + ID: + type: string + description: Unique identifier for the message stream. + MessageStreamType: + type: string + description: Type of the message stream (e.g., transactional, marketing). + Name: + type: string + description: Name of the message stream. + ServerID: + type: integer + description: Unique identifier of the server associated with the message stream. + SubscriptionManagementConfiguration: + type: object + description: Configuration settings related to managing subscriptions. + properties: + UnsubscribeHandlingType: + type: string + description: >- + Type of unsubscribe handling for the message stream (e.g., manual, + automatic). + UpdatedAt: + type: "null" + description: Timestamp when the message stream was last updated. + domains: + type: object + $schema: http://json-schema.org/draft-04/schema# + additionalProperties: true + properties: + DKIMVerified: + type: boolean + description: Indicates if DKIM for the domain is verified or not. + ID: + type: integer + description: The unique identifier assigned to the domain. + Name: + type: string + description: The name of the domain. + ReturnPathDomainVerified: + type: boolean + description: Indicates if the return path domain is verified or not. + SPFVerified: + type: boolean + description: Indicates if SPF for the domain is verified or not. + WeakDKIM: + type: boolean + description: Indicates if the DKIM for the domain is weak or not. + messages: + type: object + $schema: http://json-schema.org/draft-04/schema# + additionalProperties: true + properties: + Attachments: + type: array + description: List of attachments included in the message. + items: {} + Bcc: + type: array + description: List of email addresses in the BCC field. + items: {} + Cc: + type: array + description: List of email addresses in the CC field. + items: {} + From: + type: string + description: Email address of the sender. + MessageID: + type: string + description: Unique identifier for the message. + MessageStream: + type: string + description: Stream identifier for the message. + Metadata: + type: object + description: Additional metadata associated with the message. + properties: + client-id: + type: string + description: Client identifier associated with the message. + color: + type: string + description: Color tag associated with the message. + ReceivedAt: + type: string + description: Timestamp indicating when the message was received. + Recipients: + type: array + description: List of recipient email addresses. + items: + type: string + Sandboxed: + type: boolean + description: Indicates if the message was sent in sandbox mode. + Status: + type: string + description: Current status of the message (e.g., delivered, failed). + Subject: + type: string + description: Subject line of the message. + Tag: + type: string + description: Tag associated with the message for categorization. + To: + type: array + description: List of recipients with their email addresses and names if available. + items: + type: object + properties: + Email: + type: string + description: Recipient's email address. + Name: + type: "null" + description: Recipient's name. + TrackLinks: + type: string + description: Indicates if links in the message are being tracked. + TrackOpens: + type: boolean + description: Indicates if message opens are being tracked. + bounces: + type: object + $schema: http://json-schema.org/draft-04/schema# + additionalProperties: true + properties: + BouncedAt: + type: string + description: Timestamp indicating when the email bounced + CanActivate: + type: boolean + description: Whether the recipient can manually reactivate the email address + Description: + type: string + description: Description or reason for the bounce + Details: + type: string + description: Additional details or error message related to the bounce + DumpAvailable: + type: boolean + description: Whether detailed dump of the bounce is available + Email: + type: string + description: Email address that bounced + From: + type: string + description: Sender's email address + ID: + type: integer + description: Unique identifier for the bounce entry + Inactive: + type: boolean + description: Whether the recipient's email address is inactive + MessageID: + type: string + description: Unique identifier for the original message + MessageStream: + type: string + description: Identifier for the message stream where the bounce occurred + Name: + type: string + description: Recipient's name if available + ServerID: + type: integer + description: Identifier for the server that handled the message + Subject: + type: string + description: Subject of the original email + Tag: + type: string + description: Tag associated with the original message + Type: + type: string + description: Type of bounce (hard, soft, etc.) + TypeCode: + type: integer + description: Numeric code representing the bounce type + servers: + type: object + $schema: http://json-schema.org/draft-04/schema# + additionalProperties: true + properties: + ApiTokens: + type: array + description: List of API tokens associated with the server + items: + type: string + BounceHookUrl: + type: string + description: URL to which bounce notifications are sent + ClickHookUrl: + type: string + description: URL to which click event notifications are sent + Color: + type: string + description: Color associated with the server for identification purposes + DeliveryHookUrl: + type: string + description: URL to which delivery event notifications are sent + DeliveryType: + type: string + description: Type of delivery mechanism used by the server + EnableSmtpApiErrorHooks: + type: boolean + description: Flag indicating if SMTP API error hooks are enabled + ID: + type: integer + description: Unique identifier of the server + InboundAddress: + type: string + description: Email address for inbound messages + InboundDomain: + type: string + description: Domain for inbound message processing + InboundHash: + type: string + description: Hash code associated with inbound messages + InboundHookUrl: + type: string + description: URL to which inbound message notifications are sent + InboundSpamThreshold: + type: integer + description: Spam threshold value for inbound messages + IncludeBounceContentInHook: + type: boolean + description: Flag indicating if bounce content is included in notifications + Name: + type: string + description: Name of the server + OpenHookUrl: + type: string + description: URL to which open event notifications are sent + PostFirstOpenOnly: + type: boolean + description: Flag indicating if only the first open event should be tracked + RawEmailEnabled: + type: boolean + description: Flag indicating if raw email content is enabled + ServerLink: + type: string + description: Link to the server's details or dashboard + SmtpApiActivated: + type: boolean + description: Flag indicating if SMTP API is activated + TrackLinks: + type: string + description: Flag indicating if link tracking is enabled + TrackOpens: + type: boolean + description: Flag indicating if open tracking is enabled diff --git a/airbyte-integrations/connectors/source-postmarkapp/metadata.yaml b/airbyte-integrations/connectors/source-postmarkapp/metadata.yaml index b4d5666799261..8d5b549cce718 100644 --- a/airbyte-integrations/connectors/source-postmarkapp/metadata.yaml +++ b/airbyte-integrations/connectors/source-postmarkapp/metadata.yaml @@ -3,11 +3,11 @@ data: ql: 100 sl: 100 connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a connectorSubtype: api connectorType: source definitionId: cde75ca1-1e28-4a0f-85bb-90c546de9f1f - dockerImageTag: 0.1.21 + dockerImageTag: 0.2.0 dockerRepository: airbyte/source-postmarkapp documentationUrl: https://docs.airbyte.com/integrations/sources/postmarkapp githubIssueLabel: source-postmarkapp @@ -22,12 +22,12 @@ data: releaseStage: alpha remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-postmarkapp supportLevel: community tags: - - language:python - cdk:low-code + - language:manifest-only connectorTestSuitesOptions: - suite: liveTests testConnections: diff --git a/airbyte-integrations/connectors/source-postmarkapp/poetry.lock b/airbyte-integrations/connectors/source-postmarkapp/poetry.lock deleted file mode 100644 index ce10b819fdf7e..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/poetry.lock +++ /dev/null @@ -1,1049 +0,0 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "0.80.0" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.9" -files = [ - {file = "airbyte_cdk-0.80.0-py3-none-any.whl", hash = "sha256:060e92323a73674fa4e9e2e4a1eb312b9b9d072c9bbe5fa28f54ef21cb4974f3"}, - {file = "airbyte_cdk-0.80.0.tar.gz", hash = "sha256:1383512a83917fecca5b24cea4c72aa5c561cf96dd464485fbcefda48fe574c5"}, -] - -[package.dependencies] -airbyte-protocol-models = "0.5.1" -backoff = "*" -cachetools = "*" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.0.1,<2.1.0" -genson = "1.2.2" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -pendulum = "<3.0.0" -pydantic = ">=1.10.8,<2.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -wcmatch = "8.4" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.0.271)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] - -[[package]] -name = "airbyte-protocol-models" -version = "0.5.1" -description = "Declares the Airbyte Protocol." -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models-0.5.1-py3-none-any.whl", hash = "sha256:dfe84e130e51ce2ae81a06d5aa36f6c5ce3152b9e36e6f0195fad6c3dab0927e"}, - {file = "airbyte_protocol_models-0.5.1.tar.gz", hash = "sha256:7c8b16c7c1c7956b1996052e40585a3a93b1e44cb509c4e97c1ee4fe507ea086"}, -] - -[package.dependencies] -pydantic = ">=1.9.2,<2.0.0" - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - -[[package]] -name = "dpath" -version = "2.0.8" -description = "Filesystem-like pathing and searching for dictionaries" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "packaging" -version = "24.1" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, -] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "pydantic" -version = "1.10.18" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"}, - {file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"}, - {file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"}, - {file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"}, - {file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"}, - {file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"}, - {file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"}, - {file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"}, - {file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"}, - {file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"}, - {file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"}, - {file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"}, - {file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"}, - {file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"}, - {file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"}, - {file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"}, - {file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"}, - {file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"}, - {file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"}, - {file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"}, - {file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"}, - {file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"}, - {file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"}, - {file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"}, - {file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"}, - {file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"}, - {file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "6.2.5" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "url-normalize" -version = "1.4.3" -description = "URL normalization for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "url-normalize-1.4.3.tar.gz", hash = "sha256:d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2"}, - {file = "url_normalize-1.4.3-py2.py3-none-any.whl", hash = "sha256:ec3c301f04e5bb676d333a7fa162fa977ad2ca04b7e652bfc9fac4e405728eed"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcmatch" -version = "8.4" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.7" -files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "37d9328207246cff2380b5a6089be80320f542b13d3923dc797a01b85d08502f" diff --git a/airbyte-integrations/connectors/source-postmarkapp/pyproject.toml b/airbyte-integrations/connectors/source-postmarkapp/pyproject.toml deleted file mode 100644 index f68072ee819db..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "0.1.21" -name = "source-postmarkapp" -description = "Source implementation for Postmarkapp." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/postmarkapp" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_postmarkapp" - -[tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "0.80.0" - -[tool.poetry.scripts] -source-postmarkapp = "source_postmarkapp.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "^1.9.3" -pytest = "^6.1" -pytest-mock = "^3.6.1" diff --git a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/__init__.py b/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/__init__.py deleted file mode 100644 index 1ba17c598dbb0..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -from .source import SourcePostmarkapp - -__all__ = ["SourcePostmarkapp"] diff --git a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/manifest.yaml b/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/manifest.yaml deleted file mode 100644 index 0ab981c4cdf5f..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/manifest.yaml +++ /dev/null @@ -1,446 +0,0 @@ -version: "0.29.0" - -definitions: - selector: - extractor: - field_path: [] - selector_bounces: - extractor: - field_path: ["Bounces"] - selector_domains: - extractor: - field_path: ["Domains"] - selector_servers: - extractor: - field_path: ["Servers"] - selector_message_streams: - extractor: - field_path: ["MessageStreams"] - selector_messages: - extractor: - field_path: ["Messages"] - requester: - url_base: "https://api.postmarkapp.com" - http_method: "GET" - request_body_json: - Accept: "application/json" - request_parameters: - count: "500" - authenticator: - type: "ApiKeyAuthenticator" - header: "X-Postmark-Server-Token" - api_token: "{{ config['X-Postmark-Server-Token'] }}" - requester_account: - url_base: "https://api.postmarkapp.com" - http_method: "GET" - request_body_json: - Accept: "application/json" - request_parameters: - count: "500" - authenticator: - type: "ApiKeyAuthenticator" - header: "X-Postmark-Account-Token" - api_token: "{{ config['X-Postmark-Account-Token'] }}" - retriever_account: - record_selector: - $ref: "#/definitions/selector" - paginator: - type: DefaultPaginator - pagination_strategy: - type: "OffsetIncrement" - page_size: 500 - page_token_option: - type: RequestOption - inject_into: "request_parameter" - field_name: "offset" - page_size_option: - inject_into: "request_parameter" - field_name: "offset" - requester: - $ref: "#/definitions/requester_account" - retriever: - record_selector: - $ref: "#/definitions/selector" - paginator: - type: DefaultPaginator - pagination_strategy: - type: "OffsetIncrement" - page_size: 500 - page_token_option: - type: RequestOption - inject_into: "request_parameter" - field_name: "offset" - page_size_option: - inject_into: "request_parameter" - field_name: "offset" - requester: - $ref: "#/definitions/requester" - base_stream: - retriever: - $ref: "#/definitions/retriever" - base_stream_account: - retriever: - $ref: "#/definitions/retriever_account" - deliverystats: - retriever: - $ref: "#/definitions/retriever" - record_selector: - $ref: "#/definitions/selector_bounces" - $parameters: - name: "deliverystats" - primary_key: "Name" - path: "/deliverystats" - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-04/schema# - type: object - properties: - Name: - description: - The name of the delivery status type corresponding to the - count. - type: string - Count: - description: - The total count of delivered items for the specified time - period. - type: integer - message-streams: - $ref: "#/definitions/base_stream" - retriever: - $ref: "#/definitions/retriever" - record_selector: - $ref: "#/definitions/selector_message_streams" - $parameters: - name: "message-streams" - primary_key: "ID" - path: "/message-streams" - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-04/schema# - type: object - properties: - ID: - description: Unique identifier for the message stream. - type: string - ServerID: - description: - Unique identifier of the server associated with the message - stream. - type: integer - Name: - description: Name of the message stream. - type: string - Description: - description: Description of the message stream. - type: string - MessageStreamType: - description: Type of the message stream (e.g., transactional, marketing). - type: string - CreatedAt: - description: Timestamp when the message stream was created. - type: string - UpdatedAt: - description: Timestamp when the message stream was last updated. - type: "null" - ArchivedAt: - description: Timestamp when the message stream was archived. - type: "null" - ExpectedPurgeDate: - description: Expected date for purging the message stream data. - type: "null" - SubscriptionManagementConfiguration: - description: Configuration settings related to managing subscriptions. - type: object - properties: - UnsubscribeHandlingType: - description: - Type of unsubscribe handling for the message stream (e.g., - manual, automatic). - type: string - bounces: - $ref: "#/definitions/base_stream" - retriever: - $ref: "#/definitions/retriever" - record_selector: - $ref: "#/definitions/selector_bounces" - $parameters: - name: "bounces" - primary_key: "ID" - path: "/bounces" - - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-04/schema# - type: object - properties: - ID: - description: Unique identifier for the bounce entry - type: integer - Type: - description: Type of bounce (hard, soft, etc.) - type: string - TypeCode: - description: Numeric code representing the bounce type - type: integer - Name: - description: Recipient's name if available - type: string - Tag: - description: Tag associated with the original message - type: string - MessageID: - description: Unique identifier for the original message - type: string - ServerID: - description: Identifier for the server that handled the message - type: integer - MessageStream: - description: Identifier for the message stream where the bounce occurred - type: string - Description: - description: Description or reason for the bounce - type: string - Details: - description: Additional details or error message related to the bounce - type: string - Email: - description: Email address that bounced - type: string - From: - description: Sender's email address - type: string - BouncedAt: - description: Timestamp indicating when the email bounced - type: string - DumpAvailable: - description: Whether detailed dump of the bounce is available - type: boolean - Inactive: - description: Whether the recipient's email address is inactive - type: boolean - CanActivate: - description: Whether the recipient can manually reactivate the email address - type: boolean - Subject: - description: Subject of the original email - type: string - servers: - $ref: "#/definitions/base_stream_account" - retriever: - $ref: "#/definitions/retriever_account" - record_selector: - $ref: "#/definitions/selector_servers" - $parameters: - name: "servers" - primary_key: "ID" - path: "/servers" - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-04/schema# - type: object - properties: - ID: - description: Unique identifier of the server - type: integer - Name: - description: Name of the server - type: string - ApiTokens: - description: List of API tokens associated with the server - type: array - items: - type: string - Color: - description: Color associated with the server for identification purposes - type: string - SmtpApiActivated: - description: Flag indicating if SMTP API is activated - type: boolean - RawEmailEnabled: - description: Flag indicating if raw email content is enabled - type: boolean - DeliveryType: - description: Type of delivery mechanism used by the server - type: string - ServerLink: - description: Link to the server's details or dashboard - type: string - InboundAddress: - description: Email address for inbound messages - type: string - InboundHookUrl: - description: URL to which inbound message notifications are sent - type: string - BounceHookUrl: - description: URL to which bounce notifications are sent - type: string - OpenHookUrl: - description: URL to which open event notifications are sent - type: string - DeliveryHookUrl: - description: URL to which delivery event notifications are sent - type: string - PostFirstOpenOnly: - description: Flag indicating if only the first open event should be tracked - type: boolean - InboundDomain: - description: Domain for inbound message processing - type: string - InboundHash: - description: Hash code associated with inbound messages - type: string - InboundSpamThreshold: - description: Spam threshold value for inbound messages - type: integer - TrackOpens: - description: Flag indicating if open tracking is enabled - type: boolean - TrackLinks: - description: Flag indicating if link tracking is enabled - type: string - IncludeBounceContentInHook: - description: Flag indicating if bounce content is included in notifications - type: boolean - ClickHookUrl: - description: URL to which click event notifications are sent - type: string - EnableSmtpApiErrorHooks: - description: Flag indicating if SMTP API error hooks are enabled - type: boolean - messages: - $ref: "#/definitions/base_stream" - retriever: - $ref: "#/definitions/retriever" - record_selector: - $ref: "#/definitions/selector_messages" - $parameters: - name: "messages" - primary_key: "MessageID" - path: "/messages/outbound" - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-04/schema# - type: object - properties: - Tag: - description: Tag associated with the message for categorization. - type: string - MessageID: - description: Unique identifier for the message. - type: string - MessageStream: - description: Stream identifier for the message. - type: string - To: - description: - List of recipients with their email addresses and names if - available. - type: array - items: - type: object - properties: - Email: - description: Recipient's email address. - type: string - Name: - description: Recipient's name. - type: "null" - Cc: - description: List of email addresses in the CC field. - type: array - items: {} - Bcc: - description: List of email addresses in the BCC field. - type: array - items: {} - Recipients: - description: List of recipient email addresses. - type: array - items: - type: string - ReceivedAt: - description: Timestamp indicating when the message was received. - type: string - From: - description: Email address of the sender. - type: string - Subject: - description: Subject line of the message. - type: string - Attachments: - description: List of attachments included in the message. - type: array - items: {} - Status: - description: Current status of the message (e.g., delivered, failed). - type: string - TrackOpens: - description: Indicates if message opens are being tracked. - type: boolean - TrackLinks: - description: Indicates if links in the message are being tracked. - type: string - Metadata: - description: Additional metadata associated with the message. - type: object - properties: - color: - description: Color tag associated with the message. - type: string - client-id: - description: Client identifier associated with the message. - type: string - Sandboxed: - description: Indicates if the message was sent in sandbox mode. - type: boolean - domains: - $ref: "#/definitions/base_stream_account" - $parameters: - name: "domains" - primary_key: "ID" - path: "/domains" - retriever: - $ref: "#/definitions/retriever_account" - record_selector: - $ref: "#/definitions/selector_domains" - schema_loader: - type: InlineSchemaLoader - schema: - $schema: http://json-schema.org/draft-04/schema# - type: object - properties: - Name: - description: The name of the domain. - type: string - SPFVerified: - description: Indicates if SPF for the domain is verified or not. - type: boolean - DKIMVerified: - description: Indicates if DKIM for the domain is verified or not. - type: boolean - WeakDKIM: - description: Indicates if the DKIM for the domain is weak or not. - type: boolean - ReturnPathDomainVerified: - description: Indicates if the return path domain is verified or not. - type: boolean - ID: - description: The unique identifier assigned to the domain. - type: integer -streams: - - "#/definitions/deliverystats" - - "#/definitions/message-streams" - - "#/definitions/domains" - - "#/definitions/messages" - - "#/definitions/bounces" - - "#/definitions/servers" - -check: - stream_names: - - "message-streams" diff --git a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/run.py b/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/run.py deleted file mode 100644 index b3308b251000d..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_postmarkapp import SourcePostmarkapp - - -def run(): - source = SourcePostmarkapp() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/outbound-stats.json b/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/outbound-stats.json deleted file mode 100644 index bc3d4c34ebd70..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/outbound-stats.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "properties": { - "Sent": { - "description": "The total number of emails sent.", - "type": "integer" - }, - "Bounced": { - "description": "The total number of emails that bounced.", - "type": "integer" - }, - "SMTPApiErrors": { - "description": "The total number of emails that encountered SMTP API errors.", - "type": "integer" - }, - "BounceRate": { - "description": "The percentage of emails that bounced compared to the total sent.", - "type": "number" - }, - "SpamComplaints": { - "description": "The total number of emails marked as spam by recipients.", - "type": "integer" - }, - "SpamComplaintsRate": { - "description": "The percentage of emails marked as spam compared to the total sent.", - "type": "number" - }, - "Tracked": { - "description": "The total number of emails with tracking enabled.", - "type": "integer" - }, - "Opens": { - "description": "The total number of emails that were opened by recipients.", - "type": "integer" - }, - "UniqueOpens": { - "description": "The total number of unique email opens.", - "type": "integer" - }, - "TotalClicks": { - "description": "The total number of clicks on links within emails.", - "type": "integer" - }, - "UniqueLinksClicked": { - "description": "The total number of unique links clicked by recipients.", - "type": "integer" - }, - "WithClientRecorded": { - "description": "The total number of emails with client information recorded.", - "type": "integer" - }, - "WithPlatformRecorded": { - "description": "The total number of emails with platform information recorded.", - "type": "integer" - }, - "WithReadTimeRecorded": { - "description": "The total number of emails with read time information recorded.", - "type": "integer" - }, - "WithLinkTracking": { - "description": "The total number of emails with link tracking enabled.", - "type": "integer" - }, - "WithOpenTracking": { - "description": "The total number of emails with open tracking enabled.", - "type": "integer" - }, - "TotalTrackedLinksSent": { - "description": "The total number of emails with tracked links sent.", - "type": "integer" - } - } -} diff --git a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/server.json b/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/server.json deleted file mode 100644 index 99ead0353c957..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/server.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "properties": { - "ID": { - "description": "Unique identifier for the server", - "type": "integer" - }, - "Name": { - "description": "Name of the server", - "type": "string" - }, - "ApiTokens": { - "description": "Array of API tokens associated with the server", - "type": "array", - "items": { - "type": "string" - } - }, - "Color": { - "description": "Color code associated with the server for visualization purposes", - "type": "string" - }, - "SmtpApiActivated": { - "description": "Flag to indicate if SMTP API is activated for the server", - "type": "boolean" - }, - "RawEmailEnabled": { - "description": "Flag to enable/disable raw email processing", - "type": "boolean" - }, - "DeliveryType": { - "description": "Type of delivery mechanism used by the server", - "type": "string" - }, - "ServerLink": { - "description": "Link to access server details or dashboard", - "type": "string" - }, - "InboundAddress": { - "description": "Email address for inbound processing", - "type": "string" - }, - "InboundHookUrl": { - "description": "URL to which inbound events are sent for processing", - "type": "string" - }, - "BounceHookUrl": { - "description": "URL to which bounce events are sent for processing", - "type": "string" - }, - "OpenHookUrl": { - "description": "URL to which open events are sent for processing", - "type": "string" - }, - "DeliveryHookUrl": { - "description": "URL to which delivery events are sent for processing", - "type": "string" - }, - "PostFirstOpenOnly": { - "description": "Flag to track opens only after the first open event", - "type": "boolean" - }, - "InboundDomain": { - "description": "Domain for inbound email processing", - "type": "string" - }, - "InboundHash": { - "description": "Hash value associated with inbound processing", - "type": "string" - }, - "InboundSpamThreshold": { - "description": "Spam threshold limit for inbound emails", - "type": "integer" - }, - "TrackOpens": { - "description": "Flag to enable/disable open tracking", - "type": "boolean" - }, - "TrackLinks": { - "description": "Flag to enable/disable link tracking", - "type": "string" - }, - "IncludeBounceContentInHook": { - "description": "Flag to include bounce content in the hook data", - "type": "boolean" - }, - "ClickHookUrl": { - "description": "URL to which click events are sent for processing", - "type": "string" - }, - "EnableSmtpApiErrorHooks": { - "description": "Flag to enable/disable SMTP API error hooks", - "type": "boolean" - } - } -} diff --git a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/templates.json b/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/templates.json deleted file mode 100644 index 43d99f409eb7f..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/schemas/templates.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "properties": { - "TotalCount": { - "description": "Total number of templates available.", - "type": "integer" - }, - "Templates": { - "description": "Details of each template.", - "type": "object", - "properties": { - "Active": { - "description": "Flag indicating if the template is active.", - "type": "boolean" - }, - "TemplateId": { - "description": "Unique identifier for the template.", - "type": "integer" - }, - "Name": { - "description": "Name of the template.", - "type": "string" - }, - "Alias": { - "description": "Alias or nickname for the template.", - "type": "string" - }, - "TemplateType": { - "description": "Type or category of the template.", - "type": "string" - }, - "LayoutTemplate": { - "description": "Content layout template used for the template.", - "type": "string" - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/source.py b/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/source.py deleted file mode 100644 index 82dc3fe9565a2..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourcePostmarkapp(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/spec.yaml b/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/spec.yaml deleted file mode 100644 index 969662f1e1442..0000000000000 --- a/airbyte-integrations/connectors/source-postmarkapp/source_postmarkapp/spec.yaml +++ /dev/null @@ -1,20 +0,0 @@ -documentationUrl: https://docsurl.com -connectionSpecification: - $schema: http://json-schema.org/draft-07/schema# - title: Postmarkapp Spec - type: object - required: - - X-Postmark-Server-Token - - X-Postmark-Account-Token - additionalProperties: true - properties: - X-Postmark-Server-Token: - title: X-Postmark-Server-Token - type: string - description: API Key for server - airbyte_secret: true - X-Postmark-Account-Token: - title: X-Postmark-Account-Token - type: string - description: API Key for account - airbyte_secret: true diff --git a/docs/integrations/sources/postmarkapp.md b/docs/integrations/sources/postmarkapp.md index 5104a00f6cc5e..dcde3b522a390 100644 --- a/docs/integrations/sources/postmarkapp.md +++ b/docs/integrations/sources/postmarkapp.md @@ -58,6 +58,7 @@ The Postmarkapp source connector supports the following [sync modes](https://doc | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.2.0 | 2024-10-06 | [46522](https://github.com/airbytehq/airbyte/pull/46522) | Migrate to Manifest-only | | 0.1.21 | 2024-10-05 | [46509](https://github.com/airbytehq/airbyte/pull/46509) | Update dependencies | | 0.1.20 | 2024-09-28 | [45793](https://github.com/airbytehq/airbyte/pull/45793) | Update dependencies | | 0.1.19 | 2024-09-14 | [45535](https://github.com/airbytehq/airbyte/pull/45535) | Update dependencies | From 357767de09e4a2449492bce4263dfc7c6a4b3f3f Mon Sep 17 00:00:00 2001 From: Christo Grabowski <108154848+ChristoGrab@users.noreply.github.com> Date: Sun, 6 Oct 2024 23:48:08 -0400 Subject: [PATCH 157/379] airbyte-ci: handle custom components file in manifest-only migration (#46380) --- airbyte-ci/connectors/pipelines/README.md | 1 + .../manifest_component_transformer.py | 9 ++++-- .../migrate_to_manifest_only/pipeline.py | 32 ++++++++++++++++--- .../connectors/pipelines/pyproject.toml | 2 +- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/airbyte-ci/connectors/pipelines/README.md b/airbyte-ci/connectors/pipelines/README.md index 404bebfff36d1..2f003cd81b437 100644 --- a/airbyte-ci/connectors/pipelines/README.md +++ b/airbyte-ci/connectors/pipelines/README.md @@ -851,6 +851,7 @@ airbyte-ci connectors --language=low-code migrate-to-manifest-only | Version | PR | Description | | ------- | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| 4.37.0 | [#46380](https://github.com/airbytehq/airbyte/pull/46380) | Include custom components file handling in manifest-only migrations | | 4.36.2 | [#46278](https://github.com/airbytehq/airbyte/pull/46278) | Fixed a bug in RC rollout and promote not taking `semaphore` | | 4.36.1 | [#46274](https://github.com/airbytehq/airbyte/pull/46274) | `airbyte-ci format js` respects `.prettierc` and `.prettierignore` | | 4.36.0 | [#44877](https://github.com/airbytehq/airbyte/pull/44877) | Implement `--promote/rollback-release-candidate` in `connectors publish`. | diff --git a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/migrate_to_manifest_only/manifest_component_transformer.py b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/migrate_to_manifest_only/manifest_component_transformer.py index 0c35f8ced463c..377523879078b 100644 --- a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/migrate_to_manifest_only/manifest_component_transformer.py +++ b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/migrate_to_manifest_only/manifest_component_transformer.py @@ -5,7 +5,7 @@ import copy import logging import typing -from typing import Any, Mapping, Set, Type +from typing import Any, Mapping, Optional, Set, Type from pydantic import BaseModel @@ -189,7 +189,6 @@ def propagate_types_and_parameters( # both exist for parameter_key, parameter_value in current_parameters.items(): if parameter_key in valid_fields: - logger.info(f"Adding parameter {parameter_key} to {component_type}") propagated_component[parameter_key] = propagated_component.get(parameter_key) or parameter_value for field_name, field_value in propagated_component.items(): @@ -216,4 +215,8 @@ def propagate_types_and_parameters( @staticmethod def _is_json_schema_object(propagated_component: Mapping[str, Any]) -> bool: - return propagated_component.get("type") == "object" + component_type = propagated_component.get("type") + if isinstance(component_type, list): + # Handle nullable types, ie ["null", "object"] + return "object" in component_type + return component_type == "object" diff --git a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/migrate_to_manifest_only/pipeline.py b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/migrate_to_manifest_only/pipeline.py index f85ed87c4eff9..383e7638fe82b 100644 --- a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/migrate_to_manifest_only/pipeline.py +++ b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/migrate_to_manifest_only/pipeline.py @@ -28,8 +28,25 @@ ## GLOBAL VARIABLES ## # spec.yaml and spec.json will be removed as part of the conversion. But if they are present, it's fine to convert still. -MANIFEST_ONLY_COMPATIBLE_FILES = ["manifest.yaml", "run.py", "__init__.py", "source.py", "spec.json", "spec.yaml"] -MANIFEST_ONLY_KEEP_FILES = ["manifest.yaml", "metadata.yaml", "icon.svg", "integration_tests", "acceptance-test-config.yml", "secrets"] +MANIFEST_ONLY_COMPATIBLE_FILES = [ + "manifest.yaml", + "components.py", + "run.py", + "__init__.py", + "source.py", + "spec.json", + "spec.yaml", + "__pycache__", +] +MANIFEST_ONLY_FILES_TO_KEEP = [ + "manifest.yaml", + "components.py", + "metadata.yaml", + "icon.svg", + "integration_tests", + "acceptance-test-config.yml", + "secrets", +] ## STEPS ## @@ -151,11 +168,18 @@ def _read_spec_from_file(self, spec_file: Path) -> dict: async def _run(self) -> StepResult: connector = self.context.connector - ## 1. Move manifest.yaml to the root level of the directory + ## 1a. Move manifest.yaml to the root level of the directory self.logger.info("Moving manifest to the root level of the directory") root_manifest_path = connector.code_directory / "manifest.yaml" connector.manifest_path.rename(root_manifest_path) + ## 1b. Move components.py to the root level of the directory if it exists + components_path = connector.python_source_dir_path / "components.py" + if components_path.exists(): + self.logger.info("Custom components file found. Moving to the root level of the directory") + root_components_path = connector.manifest_only_components_path + components_path.rename(root_components_path) + ## 2. Update the version in manifest.yaml try: manifest = read_yaml(root_manifest_path) @@ -195,7 +219,7 @@ async def _run(self) -> StepResult: ## 4. Delete all non-essential files try: for item in connector.code_directory.iterdir(): - if item.name in MANIFEST_ONLY_KEEP_FILES: + if item.name in MANIFEST_ONLY_FILES_TO_KEEP: continue # Preserve the allowed files else: self._delete_directory_item(item) diff --git a/airbyte-ci/connectors/pipelines/pyproject.toml b/airbyte-ci/connectors/pipelines/pyproject.toml index 9882225de11a6..290dbde664a33 100644 --- a/airbyte-ci/connectors/pipelines/pyproject.toml +++ b/airbyte-ci/connectors/pipelines/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "pipelines" -version = "4.36.2" +version = "4.37.0" description = "Packaged maintained by the connector operations team to perform CI for connectors' pipelines" authors = ["Airbyte "] From 7514e231df61291886fb4d1d8f0b2f3ef97aeba1 Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants <36314070+artem1205@users.noreply.github.com> Date: Mon, 7 Oct 2024 14:23:10 +0200 Subject: [PATCH 158/379] feat(Airbyte-cdk): do not raise exception on missing stream by default (#46310) Signed-off-by: Artem Inzhyyants --- airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py b/airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py index 90a481e919184..3656a88c31579 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/abstract_source.py @@ -188,7 +188,7 @@ def _serialize_exception( @property def raise_exception_on_missing_stream(self) -> bool: - return True + return False def _read_stream( self, From 72152867f70d7f79ea678c2d0d3781899c8498d2 Mon Sep 17 00:00:00 2001 From: artem1205 Date: Mon, 7 Oct 2024 12:26:39 +0000 Subject: [PATCH 159/379] =?UTF-8?q?=F0=9F=A4=96=20patch=20bump=20Python=20?= =?UTF-8?q?CDK=20to=20version=205.10.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-cdk/python/CHANGELOG.md | 3 +++ airbyte-cdk/python/pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/airbyte-cdk/python/CHANGELOG.md b/airbyte-cdk/python/CHANGELOG.md index f0630c87ef83a..4e2f4f112ad68 100644 --- a/airbyte-cdk/python/CHANGELOG.md +++ b/airbyte-cdk/python/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 5.10.3 +do not raise exception on missing stream by default + ## 5.10.2 Remove PrintBuffer optimization due to dropped records diff --git a/airbyte-cdk/python/pyproject.toml b/airbyte-cdk/python/pyproject.toml index 283d15520076c..ad724192f4d57 100644 --- a/airbyte-cdk/python/pyproject.toml +++ b/airbyte-cdk/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-cdk" -version = "5.10.2" +version = "5.10.3" description = "A framework for writing Airbyte Connectors." authors = ["Airbyte "] license = "MIT" From a818f85a17691a91c2519d56ed36024ea9a4d673 Mon Sep 17 00:00:00 2001 From: artem1205 Date: Mon, 7 Oct 2024 12:32:55 +0000 Subject: [PATCH 160/379] =?UTF-8?q?=F0=9F=A4=96=20Cut=20version=205.10.3?= =?UTF-8?q?=20of=20source-declarative-manifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-declarative-manifest/metadata.yaml | 2 +- .../connectors/source-declarative-manifest/poetry.lock | 8 ++++---- .../connectors/source-declarative-manifest/pyproject.toml | 4 ++-- docs/integrations/sources/low-code.md | 1 + 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml index c41437921fd83..f1ba5f13b08ff 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml +++ b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml @@ -8,7 +8,7 @@ data: connectorType: source definitionId: 64a2f99c-542f-4af8-9a6f-355f1217b436 # This version should not be updated manually - it is updated by the CDK release workflow. - dockerImageTag: 5.10.2 + dockerImageTag: 5.10.3 dockerRepository: airbyte/source-declarative-manifest # This page is hidden from the docs for now, since the connector is not in any Airbyte registries. documentationUrl: https://docs.airbyte.com/integrations/sources/low-code diff --git a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock index 49cfbaa553d7b..746f806b1e9a8 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock +++ b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.10.2" +version = "5.10.3" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, - {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, + {file = "airbyte_cdk-5.10.3-py3-none-any.whl", hash = "sha256:af0c7974357c787a5e7c51f66788b594b5a5b60c43fad8f5ce16288c6ba16f08"}, + {file = "airbyte_cdk-5.10.3.tar.gz", hash = "sha256:ddf7fdc73786f36530da2ae68197abc590ac2e4d41293e82ac965f0bf5fb55e4"}, ] [package.dependencies] @@ -1734,4 +1734,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10,<3.12" -content-hash = "824ade154b723f64bd20a3081128a6bf77663c414b17dfafeb5360c06a54d0bf" +content-hash = "8c355582a10a4c2569e126ac51972f7c7e5fbc95d9b83549c4ec677959d3a977" diff --git a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml index 7973361588f3f..e1ecc78981b33 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml +++ b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.10.2" +version = "5.10.3" name = "source-declarative-manifest" description = "Base source implementation for low-code sources." authors = ["Airbyte "] @@ -17,7 +17,7 @@ include = "source_declarative_manifest" [tool.poetry.dependencies] python = "^3.10,<3.12" -airbyte-cdk = "5.10.2" +airbyte-cdk = "5.10.3" [tool.poetry.scripts] source-declarative-manifest = "source_declarative_manifest.run:run" diff --git a/docs/integrations/sources/low-code.md b/docs/integrations/sources/low-code.md index 16839e821238e..0ab1500933da4 100644 --- a/docs/integrations/sources/low-code.md +++ b/docs/integrations/sources/low-code.md @@ -9,6 +9,7 @@ The changelog below is automatically updated by the `bump_version` command as pa | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------- | +| 5.10.3 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.3 | | 5.10.2 | 2024-10-03 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.2 | | 5.10.1 | 2024-10-02 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.1 | | 5.10.0 | 2024-10-02 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.0 | From f88374352064f2e9803bb0964c4ed8998a09c0c4 Mon Sep 17 00:00:00 2001 From: Balaji Seetharaman Date: Mon, 7 Oct 2024 22:56:47 +0530 Subject: [PATCH 161/379] source-google-calendar (#46306) --- .../source-google-calendar/README.md | 43 + .../acceptance-test-config.yml | 17 + .../source-google-calendar/icon.svg | 3 + .../source-google-calendar/manifest.yaml | 1422 +++++++++++++++++ .../source-google-calendar/metadata.yaml | 35 + docs/integrations/sources/google-calendar.md | 31 + 6 files changed, 1551 insertions(+) create mode 100644 airbyte-integrations/connectors/source-google-calendar/README.md create mode 100644 airbyte-integrations/connectors/source-google-calendar/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-google-calendar/icon.svg create mode 100644 airbyte-integrations/connectors/source-google-calendar/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-google-calendar/metadata.yaml create mode 100644 docs/integrations/sources/google-calendar.md diff --git a/airbyte-integrations/connectors/source-google-calendar/README.md b/airbyte-integrations/connectors/source-google-calendar/README.md new file mode 100644 index 0000000000000..62fee5f006b77 --- /dev/null +++ b/airbyte-integrations/connectors/source-google-calendar/README.md @@ -0,0 +1,43 @@ +# Google Calendar +[Google Calendar Connector](https://developers.google.com/calendar/api/v3/reference) source connector will syncs data between your Google Calendar and airbyte destination connector. +This directory contains the manifest-only connector for `source-google-calendar`. + +Solves https://github.com/airbytehq/airbyte/issues/45995 + +# Create Credentials +Follow the steps mentioned in the link [here](https://developers.google.com/workspace/guides/create-credentials#oauth-client-id) and get the below required credentials to connect with your Google calendar connector + +- Client ID +- Client secret +- Refresh token +- Calendar Id (Gmail address of the calendar you want to connect to) + + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-google-calendar:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-google-calendar build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-google-calendar test +``` + diff --git a/airbyte-integrations/connectors/source-google-calendar/acceptance-test-config.yml b/airbyte-integrations/connectors/source-google-calendar/acceptance-test-config.yml new file mode 100644 index 0000000000000..f367678413c32 --- /dev/null +++ b/airbyte-integrations/connectors/source-google-calendar/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-google-calendar:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-google-calendar/icon.svg b/airbyte-integrations/connectors/source-google-calendar/icon.svg new file mode 100644 index 0000000000000..cf5618012c9ae --- /dev/null +++ b/airbyte-integrations/connectors/source-google-calendar/icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-google-calendar/manifest.yaml b/airbyte-integrations/connectors/source-google-calendar/manifest.yaml new file mode 100644 index 0000000000000..4595cfe714048 --- /dev/null +++ b/airbyte-integrations/connectors/source-google-calendar/manifest.yaml @@ -0,0 +1,1422 @@ +version: 5.10.2 + +type: DeclarativeSource + +description: Solves https://github.com/airbytehq/airbyte/issues/45995 + +check: + type: CheckStream + stream_names: + - colors + +definitions: + streams: + colors: + type: DeclarativeStream + name: colors + primary_key: + - calendar + - event + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: colors + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/colors" + settings: + type: DeclarativeStream + name: settings + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: users/me/settings + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: pageToken + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get('nextPageToken') }}" + stop_condition: "{{ response.get('nextPageToken') is not defined }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/settings" + calendarlist: + type: DeclarativeStream + name: calendarlist + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: users/me/calendarList + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: pageToken + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get('nextPageToken') }}" + stop_condition: "{{ response.get('nextPageToken') is not defined }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/calendarlist" + calendars: + type: DeclarativeStream + name: calendars + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: users/me/calendarList + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: pageToken + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get('nextPageToken') }}" + stop_condition: "{{ response.get('nextPageToken') is not defined }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/calendars" + events: + type: DeclarativeStream + name: events + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: calendars/{{ config['calendarid'] }}/events + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: pageToken + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get('nextPageToken') }}" + stop_condition: "{{ response.get('nextPageToken') is not defined }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/events" + base_requester: + type: HttpRequester + url_base: https://www.googleapis.com/calendar/v3/ + authenticator: + type: OAuthAuthenticator + client_id: "{{ config[\"client_id\"] }}" + grant_type: refresh_token + client_secret: "{{ config[\"client_secret\"] }}" + refresh_token: "{{ config[\"client_refresh_token_2\"] }}" + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + +streams: + - $ref: "#/definitions/streams/colors" + - $ref: "#/definitions/streams/settings" + - $ref: "#/definitions/streams/calendarlist" + - $ref: "#/definitions/streams/calendars" + - $ref: "#/definitions/streams/events" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - client_id + - client_secret + - client_refresh_token_2 + - calendarid + properties: + client_id: + type: string + order: 0 + title: Client ID + airbyte_secret: true + client_secret: + type: string + order: 1 + title: Client secret + airbyte_secret: true + client_refresh_token_2: + type: string + order: 2 + title: Refresh token + airbyte_secret: true + calendarid: + type: string + order: 3 + title: Calendar Id + additionalProperties: true + +metadata: + autoImportSchema: + colors: true + settings: true + calendarlist: true + calendars: true + events: true + testedStreams: + colors: + streamHash: 861414b167a55e3fbe46e2f2cee347da33929c29 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + settings: + streamHash: 9e301eaba02ae69af80f85e3c417a8fd7f9ab9ed + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + calendarlist: + streamHash: 20ff8ac9291587fb2bf1f7b427f9134d0ed613ee + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + calendars: + streamHash: 9b3b805b81a4eefc192703ef94d4de0026a419be + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + events: + streamHash: b4e1338b1dad31efc8d7d131ca7ada091f3ca225 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://developers.google.com/calendar/api/v3/reference + +schemas: + colors: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + calendar: + type: object + properties: + "1": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "2": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "3": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "4": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "5": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "6": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "7": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "8": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "9": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "10": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "11": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "12": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "13": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "14": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "15": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "16": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "17": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "18": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "19": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "20": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "21": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "22": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "23": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "24": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + event: + type: object + properties: + "1": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "2": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "3": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "4": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "5": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "6": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "7": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "8": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "9": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "10": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + "11": + type: + - object + - "null" + properties: + background: + type: + - string + - "null" + foreground: + type: + - string + - "null" + kind: + type: + - string + - "null" + updated: + type: + - string + - "null" + required: + - calendar + - event + settings: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + etag: + type: + - string + - "null" + id: + type: string + kind: + type: + - string + - "null" + value: + type: + - string + - "null" + required: + - id + calendarlist: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + accessRole: + type: + - string + - "null" + backgroundColor: + type: + - string + - "null" + colorId: + type: + - string + - "null" + conferenceProperties: + type: + - object + - "null" + properties: + allowedConferenceSolutionTypes: + type: + - array + - "null" + items: + type: + - string + - "null" + defaultReminders: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + method: + type: + - string + - "null" + minutes: + type: + - number + - "null" + etag: + type: + - string + - "null" + foregroundColor: + type: + - string + - "null" + id: + type: string + kind: + type: + - string + - "null" + notificationSettings: + type: + - object + - "null" + properties: + notifications: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + method: + type: + - string + - "null" + primary: + type: + - boolean + - "null" + selected: + type: + - boolean + - "null" + summary: + type: + - string + - "null" + timeZone: + type: + - string + - "null" + required: + - id + calendars: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + accessRole: + type: + - string + - "null" + backgroundColor: + type: + - string + - "null" + colorId: + type: + - string + - "null" + conferenceProperties: + type: + - object + - "null" + properties: + allowedConferenceSolutionTypes: + type: + - array + - "null" + items: + type: + - string + - "null" + defaultReminders: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + method: + type: + - string + - "null" + minutes: + type: + - number + - "null" + etag: + type: + - string + - "null" + foregroundColor: + type: + - string + - "null" + id: + type: string + kind: + type: + - string + - "null" + notificationSettings: + type: + - object + - "null" + properties: + notifications: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + method: + type: + - string + - "null" + primary: + type: + - boolean + - "null" + selected: + type: + - boolean + - "null" + summary: + type: + - string + - "null" + timeZone: + type: + - string + - "null" + required: + - id + events: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + anyoneCanAddSelf: + type: + - boolean + - "null" + attachments: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + fileId: + type: + - string + - "null" + fileUrl: + type: + - string + - "null" + iconLink: + type: + - string + - "null" + mimeType: + type: + - string + - "null" + title: + type: + - string + - "null" + attendees: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + comment: + type: + - string + - "null" + displayName: + type: + - string + - "null" + email: + type: + - string + - "null" + optional: + type: + - boolean + - "null" + organizer: + type: + - boolean + - "null" + resource: + type: + - boolean + - "null" + responseStatus: + type: + - string + - "null" + self: + type: + - boolean + - "null" + conferenceData: + type: + - object + - "null" + properties: + conferenceId: + type: + - string + - "null" + conferenceSolution: + type: + - object + - "null" + properties: + iconUri: + type: + - string + - "null" + key: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name: + type: + - string + - "null" + createRequest: + type: + - object + - "null" + properties: + conferenceSolutionKey: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + requestId: + type: + - string + - "null" + status: + type: + - object + - "null" + properties: + statusCode: + type: + - string + - "null" + entryPoints: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + accessCode: + type: + - string + - "null" + entryPointFeatures: + type: + - array + - "null" + items: + type: + - string + - "null" + entryPointType: + type: + - string + - "null" + label: + type: + - string + - "null" + meetingCode: + type: + - string + - "null" + passcode: + type: + - string + - "null" + password: + type: + - string + - "null" + pin: + type: + - string + - "null" + regionCode: + type: + - string + - "null" + uri: + type: + - string + - "null" + notes: + type: + - string + - "null" + parameters: + type: + - object + - "null" + properties: + addOnParameters: + type: + - object + - "null" + properties: + parameters: + type: + - object + - "null" + properties: + creatorUserId: + type: + - string + - "null" + meetingCreatedBy: + type: + - string + - "null" + meetingType: + type: + - string + - "null" + meetingUuid: + type: + - string + - "null" + originalEventId: + type: + - string + - "null" + realMeetingId: + type: + - string + - "null" + scriptId: + type: + - string + - "null" + created: + type: + - string + - "null" + creator: + type: + - object + - "null" + properties: + displayName: + type: + - string + - "null" + email: + type: + - string + - "null" + self: + type: + - boolean + - "null" + end: + type: + - object + - "null" + properties: + date: + type: + - string + - "null" + dateTime: + type: + - string + - "null" + timeZone: + type: + - string + - "null" + endTimeUnspecified: + type: + - boolean + - "null" + etag: + type: + - string + - "null" + eventType: + type: + - string + - "null" + extendedProperties: + type: + - object + - "null" + properties: + shared: + type: + - object + - "null" + properties: + meetingId: + type: + - string + - "null" + meetingParams: + type: + - string + - "null" + zmMeetingNum: + type: + - string + - "null" + guestsCanInviteOthers: + type: + - boolean + - "null" + guestsCanModify: + type: + - boolean + - "null" + guestsCanSeeOtherGuests: + type: + - boolean + - "null" + hangoutLink: + type: + - string + - "null" + htmlLink: + type: + - string + - "null" + iCalUID: + type: + - string + - "null" + id: + type: string + kind: + type: + - string + - "null" + location: + type: + - string + - "null" + organizer: + type: + - object + - "null" + properties: + displayName: + type: + - string + - "null" + email: + type: + - string + - "null" + self: + type: + - boolean + - "null" + originalStartTime: + type: + - object + - "null" + properties: + dateTime: + type: + - string + - "null" + timeZone: + type: + - string + - "null" + privateCopy: + type: + - boolean + - "null" + recurrence: + type: + - array + - "null" + items: + type: + - string + - "null" + recurringEventId: + type: + - string + - "null" + reminders: + type: + - object + - "null" + properties: + useDefault: + type: + - boolean + - "null" + sequence: + type: + - number + - "null" + source: + type: + - object + - "null" + properties: + title: + type: + - string + - "null" + url: + type: + - string + - "null" + start: + type: + - object + - "null" + properties: + date: + type: + - string + - "null" + dateTime: + type: + - string + - "null" + timeZone: + type: + - string + - "null" + status: + type: + - string + - "null" + summary: + type: + - string + - "null" + transparency: + type: + - string + - "null" + updated: + type: + - string + - "null" + visibility: + type: + - string + - "null" + required: + - id diff --git a/airbyte-integrations/connectors/source-google-calendar/metadata.yaml b/airbyte-integrations/connectors/source-google-calendar/metadata.yaml new file mode 100644 index 0000000000000..96f6ec4c6aa01 --- /dev/null +++ b/airbyte-integrations/connectors/source-google-calendar/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "googleapis.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-google-calendar + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: c01b6259-bdf4-45ff-bcd5-66424cd2f18b + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-google-calendar + githubIssueLabel: source-google-calendar + icon: icon.svg + license: MIT + name: Google Calendar + releaseDate: 2024-10-06 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/google-calendar + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/google-calendar.md b/docs/integrations/sources/google-calendar.md new file mode 100644 index 0000000000000..0e7a7912181af --- /dev/null +++ b/docs/integrations/sources/google-calendar.md @@ -0,0 +1,31 @@ +# Google Calendar +Solves https://github.com/airbytehq/airbyte/issues/45995 + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `client_id` | `string` | Client ID. | | +| `client_secret` | `string` | Client secret. | | +| `client_refresh_token_2` | `string` | Refresh token. | | +| `calendarid` | `string` | Calendar Id. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| colors | calendar.event | No pagination | ✅ | ❌ | +| settings | id | DefaultPaginator | ✅ | ❌ | +| calendarlist | id | DefaultPaginator | ✅ | ❌ | +| calendars | id | DefaultPaginator | ✅ | ❌ | +| events | id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-06 | | Initial release by [@bala-ceg](https://github.com/bala-ceg) via Connector Builder | + +
From 584a2891fe39f30f128c98a68f0ad731c1dd1f03 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Mon, 7 Oct 2024 10:48:59 -0700 Subject: [PATCH 162/379] =?UTF-8?q?Bulk=20Load=20CDK=20Stream=20Incomplete?= =?UTF-8?q?=20Prefactor=202:=20Drop=20Queue=20Reader=20and=20Si=E2=80=A6?= =?UTF-8?q?=20(#46516)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cdk/message/DestinationMessageQueue.kt | 68 +++----- .../io/airbyte/cdk/message/MessageQueue.kt | 78 ++-------- .../airbyte/cdk/message/MessageQueueReader.kt | 47 ------ .../airbyte/cdk/message/MessageQueueWriter.kt | 28 +++- .../io/airbyte/cdk/state/MemoryManager.kt | 55 +++---- .../io/airbyte/cdk/task/SpillToDiskTask.kt | 60 ++++--- .../io/airbyte/cdk/util/CoroutineUtils.kt | 3 +- .../command/MockDestinationConfiguration.kt | 2 + .../DestinationMessageQueueWriterTest.kt | 146 +++++++----------- .../io/airbyte/cdk/state/MemoryManagerTest.kt | 26 +++- .../airbyte/cdk/task/SpillToDiskTaskTest.kt | 69 +++++---- 11 files changed, 239 insertions(+), 343 deletions(-) delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueReader.kt diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt index 1ee527b257953..7d5d3d8b57c6e 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt @@ -5,15 +5,16 @@ package io.airbyte.cdk.message import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.state.MemoryManager -import io.github.oshai.kotlinlogging.KotlinLogging +import io.airbyte.cdk.state.Reserved +import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.atomic.AtomicLong -import java.util.concurrent.locks.ReentrantLock -import kotlinx.coroutines.runBlocking + +interface Sized { + val sizeBytes: Long +} /** * Wrapper for record messages published to the message queue, containing metadata like index and @@ -37,56 +38,25 @@ data class StreamCompleteWrapped( override val sizeBytes: Long = 0L } +class DestinationRecordQueue : ChannelMessageQueue>() + /** - * Message queue to which @[DestinationRecordWrapped] messages can be published on a @ - * [DestinationStream] key. - * - * It maintains a map of @[QueueChannel]s by stream, and tracks the memory usage across all - * channels, blocking when the maximum is reached. - * - * This maximum is expected to be low, as the assumption is that data will be spooled to disk as - * quickly as possible. + * A supplier of message queues to which ([MemoryManager.reserveBlocking]'d) @ + * [DestinationRecordWrapped] messages can be published on a @ [DestinationStream] key. The queues + * themselves do not manage memory. */ @Singleton -class DestinationMessageQueue( - catalog: DestinationCatalog, - config: DestinationConfiguration, - private val memoryManager: MemoryManager, - private val queueChannelFactory: QueueChannelFactory -) : MessageQueue { - private val channels: - ConcurrentHashMap> = - ConcurrentHashMap() - - private val totalQueueSizeBytes = AtomicLong(0L) - private val reservedMemory: MemoryManager.Reservation - private val reservedMemoryManager: MemoryManager - private val memoryLock = ReentrantLock() - private val memoryLockCondition = memoryLock.newCondition() +@Secondary +class DestinationRecordQueueSupplier(catalog: DestinationCatalog) : + MessageQueueSupplier> { + private val queues = ConcurrentHashMap() init { - catalog.streams.forEach { channels[it.descriptor] = queueChannelFactory.make(this) } - val adjustedRatio = - config.maxMessageQueueMemoryUsageRatio / - (1.0 + config.estimatedRecordMemoryOverheadRatio) - reservedMemory = runBlocking { memoryManager.reserveRatio(adjustedRatio) } - reservedMemoryManager = reservedMemory.getReservationManager() + catalog.streams.forEach { queues[it.descriptor] = DestinationRecordQueue() } } - override suspend fun acquireQueueBytesBlocking(bytes: Long) { - reservedMemoryManager.reserveBlocking(bytes) + override fun get(key: DestinationStream.Descriptor): DestinationRecordQueue { + return queues[key] + ?: throw IllegalArgumentException("Reading from non-existent record stream: $key") } - - override suspend fun releaseQueueBytes(bytes: Long) { - reservedMemoryManager.release(bytes) - } - - override suspend fun getChannel( - key: DestinationStream.Descriptor, - ): QueueChannel { - return channels[key] - ?: throw IllegalArgumentException("Reading from non-existent QueueChannel: ${key}") - } - - private val log = KotlinLogging.logger {} } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt index 8d392f8afa3d5..e511266c1c34e 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt @@ -4,80 +4,26 @@ package io.airbyte.cdk.message -import jakarta.inject.Singleton -import java.util.concurrent.atomic.AtomicBoolean import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.receiveAsFlow -interface Sized { - val sizeBytes: Long -} - -interface MessageQueue { - suspend fun acquireQueueBytesBlocking(bytes: Long) - suspend fun releaseQueueBytes(bytes: Long) - suspend fun getChannel(key: K): QueueChannel -} - -interface QueueChannel { +interface MessageQueue { + suspend fun publish(message: T) + suspend fun consume(): Flow suspend fun close() - suspend fun isClosed(): Boolean - suspend fun send(message: T) - suspend fun receive(): T -} - -/** A channel that blocks when its parent queue has no available memory. */ -interface BlockingQueueChannel : QueueChannel { - val messageQueue: MessageQueue<*, T> - val channel: Channel - - override suspend fun send(message: T) { - if (isClosed()) { - throw IllegalStateException("Send to closed QueueChannel") - } - val estimatedSize = message.sizeBytes - messageQueue.acquireQueueBytesBlocking(estimatedSize) - channel.send(message) - } - - override suspend fun receive(): T { - if (isClosed()) { - throw IllegalStateException("Receive from closed QueueChannel") - } - val message = channel.receive() - val estimatedSize = message.sizeBytes - messageQueue.releaseQueueBytes(estimatedSize) - return message - } } -interface QueueChannelFactory { - fun make(messageQueue: MessageQueue<*, T>): QueueChannel -} - -/** - * The default queue channel is just a dumb wrapper around an unlimited kotlin channel of wrapped - * records. - * - * Note: we wrap channel closedness in an atomic boolean because the @[Channel.isClosedForSend] and - * @[Channel.isClosedForReceive] apis are marked as delicate/experimental. - */ -class DefaultQueueChannel(override val messageQueue: MessageQueue<*, DestinationRecordWrapped>) : - BlockingQueueChannel { - override val channel = Channel(Channel.UNLIMITED) - private val closed = AtomicBoolean(false) +abstract class ChannelMessageQueue : MessageQueue { + val channel = Channel(Channel.UNLIMITED) + override suspend fun publish(message: T) = channel.send(message) + override suspend fun consume(): Flow = channel.receiveAsFlow() override suspend fun close() { - if (closed.compareAndSet(false, true)) { - channel.close() - } + channel.close() } - - override suspend fun isClosed(): Boolean = closed.get() } -@Singleton -class DefaultQueueChannelFactory : QueueChannelFactory { - override fun make( - messageQueue: MessageQueue<*, DestinationRecordWrapped> - ): QueueChannel = DefaultQueueChannel(messageQueue) +interface MessageQueueSupplier { + fun get(key: K): MessageQueue } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueReader.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueReader.kt deleted file mode 100644 index 29cff71a47951..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueReader.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.message - -import io.airbyte.cdk.command.DestinationStream -import io.github.oshai.kotlinlogging.KotlinLogging -import io.micronaut.context.annotation.Secondary -import jakarta.inject.Singleton -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flow - -/** - * A reader should provide a byte-limited flow of messages of the underlying type. The flow should - * terminate when maxBytes has been read, or when the stream is complete. - */ -interface MessageQueueReader { - suspend fun read(key: K): Flow -} - -@Singleton -@Secondary -class DestinationMessageQueueReader( - private val messageQueue: DestinationMessageQueue, -) : MessageQueueReader { - private val log = KotlinLogging.logger {} - - override suspend fun read(key: DestinationStream.Descriptor): Flow = - flow { - log.info { "Reading from stream $key" } - - while (true) { - when (val wrapped = messageQueue.getChannel(key).receive()) { - is StreamRecordWrapped -> { - emit(wrapped) - } - is StreamCompleteWrapped -> { - messageQueue.getChannel(key).close() - emit(wrapped) - log.info { "Read end-of-stream for $key" } - return@flow - } - } - } - } -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt index c80072c88518b..bcdb77cb88614 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt @@ -6,10 +6,14 @@ package io.airbyte.cdk.message import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import io.airbyte.cdk.command.DestinationCatalog +import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.state.CheckpointManager +import io.airbyte.cdk.state.MemoryManager +import io.airbyte.cdk.state.Reserved import io.airbyte.cdk.state.SyncManager import jakarta.inject.Singleton +import kotlinx.coroutines.runBlocking /** A publishing interface for writing messages to a message queue. */ interface MessageQueueWriter { @@ -28,12 +32,26 @@ interface MessageQueueWriter { ) @Singleton class DestinationMessageQueueWriter( + private val config: DestinationConfiguration, private val catalog: DestinationCatalog, - private val messageQueue: MessageQueue, + private val queueSupplier: + MessageQueueSupplier>, private val syncManager: SyncManager, private val checkpointManager: - CheckpointManager + CheckpointManager, + systemMemoryManager: MemoryManager ) : MessageQueueWriter { + private val queueReservation = runBlocking { + systemMemoryManager.reserveRatio(config.maxMessageQueueMemoryUsageRatio, this) + } + private val memoryManager = queueReservation.getReservationManager() + + private suspend fun reserve(sized: DestinationRecordWrapped) = + memoryManager.reserveBlocking( + (sized.sizeBytes * config.estimatedRecordMemoryOverheadRatio).toLong(), + sized + ) + /** * Deserialize and route the message to the appropriate channel. * @@ -53,14 +71,16 @@ class DestinationMessageQueueWriter( sizeBytes = sizeBytes, record = message ) - messageQueue.getChannel(message.stream).send(wrapped) + queueSupplier.get(message.stream).publish(reserve(wrapped)) } /* If an end-of-stream marker. */ is DestinationStreamComplete, is DestinationStreamIncomplete -> { val wrapped = StreamCompleteWrapped(index = manager.markEndOfStream()) - messageQueue.getChannel(message.stream).send(wrapped) + val queue = queueSupplier.get(message.stream) + queue.publish(memoryManager.reserveBlocking(0L, wrapped)) + queue.close() } } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt index 1babd2c449b30..558f2b04d74e8 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt @@ -13,6 +13,31 @@ import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock +/** + * Releasable reservation of memory. For large blocks (ie, from [MemoryManager.reserveRatio], + * provides a submanager that can be used to manage allocating the reservation). + */ +class Reserved( + private val memoryManager: MemoryManager, + val bytesReserved: Long, + val value: T, +) : CloseableCoroutine { + private var released = AtomicBoolean(false) + + suspend fun release() { + if (!released.compareAndSet(false, true)) { + return + } + memoryManager.release(bytesReserved) + } + + fun getReservationManager(): MemoryManager = MemoryManager(bytesReserved) + + override suspend fun close() { + release() + } +} + /** * Manages memory usage for the destination. * @@ -36,32 +61,11 @@ class MemoryManager(availableMemoryProvider: AvailableMemoryProvider) { private val mutex = Mutex() private val syncChannel = Channel(Channel.UNLIMITED) - /** - * Releasable reservation of memory. For large blocks (ie, from [reserveRatio], provides a - * submanager that can be used to manage allocating the reservation). - */ - inner class Reservation(val bytes: Long) : CloseableCoroutine { - private var released = AtomicBoolean(false) - - suspend fun release() { - if (!released.compareAndSet(false, true)) { - return - } - release(bytes) - } - - fun getReservationManager(): MemoryManager = MemoryManager(bytes) - - override suspend fun close() { - release() - } - } - val remainingMemoryBytes: Long get() = totalMemoryBytes - usedMemoryBytes.get() /* Attempt to reserve memory. If enough memory is not available, waits until it is, then reserves. */ - suspend fun reserveBlocking(memoryBytes: Long): Reservation { + suspend fun reserveBlocking(memoryBytes: Long, reservedFor: T): Reserved { if (memoryBytes > totalMemoryBytes) { throw IllegalArgumentException( "Requested ${memoryBytes}b memory exceeds ${totalMemoryBytes}b total" @@ -74,14 +78,13 @@ class MemoryManager(availableMemoryProvider: AvailableMemoryProvider) { } usedMemoryBytes.addAndGet(memoryBytes) - return Reservation(memoryBytes) + return Reserved(this, memoryBytes, reservedFor) } } - suspend fun reserveRatio(ratio: Double): Reservation { + suspend fun reserveRatio(ratio: Double, reservedFor: T): Reserved { val estimatedSize = (totalMemoryBytes.toDouble() * ratio).toLong() - reserveBlocking(estimatedSize) - return Reservation(estimatedSize) + return reserveBlocking(estimatedSize, reservedFor) } suspend fun release(memoryBytes: Long) { diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt index 48a7a8e82fa99..52e08c7a8de0f 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt @@ -10,12 +10,15 @@ import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.file.TempFileProvider import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.DestinationRecordWrapped -import io.airbyte.cdk.message.MessageQueueReader +import io.airbyte.cdk.message.MessageQueue +import io.airbyte.cdk.message.MessageQueueSupplier import io.airbyte.cdk.message.SpilledRawMessagesLocalFile import io.airbyte.cdk.message.StreamCompleteWrapped import io.airbyte.cdk.message.StreamRecordWrapped import io.airbyte.cdk.state.FlushStrategy +import io.airbyte.cdk.state.Reserved import io.airbyte.cdk.util.takeUntilInclusive +import io.airbyte.cdk.util.use import io.airbyte.cdk.util.withNextAdjacentValue import io.github.oshai.kotlinlogging.KotlinLogging import jakarta.inject.Singleton @@ -36,8 +39,7 @@ interface SpillToDiskTask : StreamTask class DefaultSpillToDiskTask( private val config: DestinationConfiguration, private val tmpFileProvider: TempFileProvider, - private val queueReader: - MessageQueueReader, + private val queue: MessageQueue>, private val flushStrategy: FlushStrategy, override val stream: DestinationStream, private val launcher: DestinationTaskLauncher, @@ -61,23 +63,35 @@ class DefaultSpillToDiskTask( config.firstStageTmpFileSuffix ) val result = - tmpFile.toFileWriter().use { - queueReader - .read(stream.descriptor) - .runningFold(ReadResult()) { (range, sizeBytes, _), wrapped -> - when (wrapped) { - is StreamRecordWrapped -> { - it.write(wrapped.record.serialized) - it.write("\n") - val nextRange = range.withNextAdjacentValue(wrapped.index) - val nextSize = sizeBytes + wrapped.sizeBytes - val forceFlush = - flushStrategy.shouldFlush(stream, nextRange, nextSize) - ReadResult(nextRange, nextSize, forceFlush = forceFlush) - } - is StreamCompleteWrapped -> { - val nextRange = range.withNextAdjacentValue(wrapped.index) - ReadResult(nextRange, sizeBytes, hasReadEndOfStream = true) + tmpFile.toFileWriter().use { writer -> + queue + .consume() + .runningFold(ReadResult()) { (range, sizeBytes, _), reserved -> + reserved.use { + when (val wrapped = it.value) { + is StreamRecordWrapped -> { + writer.write(wrapped.record.serialized) + writer.write("\n") + val nextRange = + range.withNextAdjacentValue(wrapped.index) + val nextSize = sizeBytes + wrapped.sizeBytes + val forceFlush = + flushStrategy.shouldFlush( + stream, + nextRange, + nextSize + ) + ReadResult(nextRange, nextSize, forceFlush = forceFlush) + } + is StreamCompleteWrapped -> { + val nextRange = + range.withNextAdjacentValue(wrapped.index) + ReadResult( + nextRange, + sizeBytes, + hasReadEndOfStream = true + ) + } } } } @@ -113,8 +127,8 @@ interface SpillToDiskTaskFactory { class DefaultSpillToDiskTaskFactory( private val config: DestinationConfiguration, private val tmpFileProvider: TempFileProvider, - private val queueReader: - MessageQueueReader, + private val queueSupplier: + MessageQueueSupplier>, private val flushStrategy: FlushStrategy, ) : SpillToDiskTaskFactory { override fun make( @@ -124,7 +138,7 @@ class DefaultSpillToDiskTaskFactory( return DefaultSpillToDiskTask( config, tmpFileProvider, - queueReader, + queueSupplier.get(stream.descriptor), flushStrategy, stream, taskLauncher, diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt index 522efcf9eed2c..266acd938c054 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt @@ -16,10 +16,9 @@ interface CloseableCoroutine { suspend fun close() } -suspend fun T.use(block: suspend (T) -> Unit) { +suspend fun T.use(block: suspend (T) -> R) = try { block(this) } finally { close() } -} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt index fa0704b49503a..8a7efd13bf588 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt @@ -19,4 +19,6 @@ class MockDestinationConfiguration : DestinationConfiguration() { override val firstStageTmpFileSuffix: String = ".jsonl" override val maxCheckpointFlushTimeMs: Long = 1000L + override val maxMessageQueueMemoryUsageRatio: Double = 0.1 + override val estimatedRecordMemoryOverheadRatio: Double = 1.1 } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt index e620d4a534ded..407a6e6b48289 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt @@ -5,18 +5,18 @@ package io.airbyte.cdk.message import com.fasterxml.jackson.databind.node.JsonNodeFactory -import io.airbyte.cdk.command.DestinationCatalog +import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 import io.airbyte.cdk.data.NullValue import io.airbyte.cdk.state.MockCheckpointManager +import io.airbyte.cdk.state.Reserved import io.airbyte.cdk.state.SyncManager -import io.micronaut.context.annotation.Prototype -import io.micronaut.context.annotation.Requires +import io.airbyte.cdk.util.takeUntilInclusive import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject -import jakarta.inject.Singleton +import kotlinx.coroutines.flow.toList import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test @@ -26,72 +26,19 @@ import org.junit.jupiter.api.Test environments = [ "DestinationMessageQueueWriterTest", + "MockDestinationConfiguration", "MockDestinationCatalog", "MockCheckpointManager", ] ) class DestinationMessageQueueWriterTest { - @Inject lateinit var queueWriterFactory: TestDestinationMessageQueueWriterFactory - - @Singleton - @Requires(env = ["DestinationMessageQueueWriterTest"]) - class TestDestinationMessageQueueWriterFactory( - private val catalog: DestinationCatalog, - val messageQueue: MockMessageQueue, - val streamsManager: SyncManager, - val checkpointManager: MockCheckpointManager - ) { - fun make(): DestinationMessageQueueWriter { - return DestinationMessageQueueWriter( - catalog, - messageQueue, - streamsManager, - checkpointManager - ) - } - } - - class MockQueueChannel : QueueChannel { - val messages = mutableListOf() - var closed = false - - override suspend fun close() { - closed = true - } - - override suspend fun isClosed(): Boolean { - return closed - } - - override suspend fun send(message: DestinationRecordWrapped) { - messages.add(message) - } - - override suspend fun receive(): DestinationRecordWrapped { - return messages.removeAt(0) - } - } - - @Prototype - @Requires(env = ["DestinationMessageQueueWriterTest"]) - class MockMessageQueue : MessageQueue { - private val channels = - mutableMapOf>() - - override suspend fun getChannel( - key: DestinationStream.Descriptor - ): QueueChannel { - return channels.getOrPut(key) { MockQueueChannel() } - } - - override suspend fun acquireQueueBytesBlocking(bytes: Long) { - TODO("Not yet implemented") - } - - override suspend fun releaseQueueBytes(bytes: Long) { - TODO("Not yet implemented") - } - } + @Inject lateinit var config: DestinationConfiguration + @Inject lateinit var checkpointManager: MockCheckpointManager + @Inject lateinit var writer: DestinationMessageQueueWriter + @Inject + lateinit var queueSupplier: + MessageQueueSupplier> + @Inject lateinit var syncManager: SyncManager private fun makeRecord(stream: DestinationStream, record: String): DestinationRecord { return DestinationRecord( @@ -127,50 +74,78 @@ class DestinationMessageQueueWriterTest { ) } + private fun Sized.bytesReserved(): Long { + return (sizeBytes * config.estimatedRecordMemoryOverheadRatio).toLong() + } + @Test fun testSendRecords() = runTest { - val writer = queueWriterFactory.make() + val queue1 = queueSupplier.get(stream1.descriptor) + val queue2 = queueSupplier.get(stream2.descriptor) - val channel1 = - queueWriterFactory.messageQueue.getChannel(stream1.descriptor) as MockQueueChannel - val channel2 = - queueWriterFactory.messageQueue.getChannel(stream2.descriptor) as MockQueueChannel - - val manager1 = queueWriterFactory.streamsManager.getStreamManager(stream1.descriptor) - val manager2 = queueWriterFactory.streamsManager.getStreamManager(stream2.descriptor) + val manager1 = syncManager.getStreamManager(stream1.descriptor) + val manager2 = syncManager.getStreamManager(stream2.descriptor) (0 until 10).forEach { writer.publish(makeRecord(stream1, "test${it}"), it * 2L) } - Assertions.assertEquals(10, channel1.messages.size) + + val messages1 = + queue1 + .consume() + .takeUntilInclusive { + (it.value as StreamRecordWrapped).record.serialized == "test9" + } + .toList() + + Assertions.assertEquals(10, messages1.size) val expectedRecords = (0 until 10).map { StreamRecordWrapped(it.toLong(), it * 2L, makeRecord(stream1, "test${it}")) } - Assertions.assertEquals(expectedRecords, channel1.messages) + Assertions.assertEquals(expectedRecords, messages1.map { it.value }) + Assertions.assertEquals( + expectedRecords.map { it.bytesReserved() }, + messages1.map { it.bytesReserved } + ) Assertions.assertEquals(10L, manager1.recordCount()) + queue1.close() + Assertions.assertEquals(emptyList(), queue1.consume().toList()) - Assertions.assertEquals(emptyList(), channel2.messages) + queue2.close() + Assertions.assertEquals(emptyList(), queue2.consume().toList()) Assertions.assertEquals(0L, manager2.recordCount()) + } + + @Test + fun testSendEndOfStream() = runTest { + val queue1 = queueSupplier.get(stream1.descriptor) + val queue2 = queueSupplier.get(stream2.descriptor) + + val manager1 = syncManager.getStreamManager(stream1.descriptor) + val manager2 = syncManager.getStreamManager(stream2.descriptor) + + (0 until 10).forEach { _ -> writer.publish(makeRecord(stream1, "whatever"), 0L) } writer.publish(makeRecord(stream2, "test"), 1L) writer.publish(makeStreamComplete(stream1), 0L) + queue2.close() Assertions.assertEquals( listOf(StreamRecordWrapped(0, 1L, makeRecord(stream2, "test"))), - channel2.messages + queue2.consume().toList().map { it.value } ) Assertions.assertEquals(1L, manager2.recordCount()) Assertions.assertEquals(manager2.endOfStreamRead(), false) Assertions.assertEquals(manager1.endOfStreamRead(), true) - Assertions.assertEquals(11, channel1.messages.size) - Assertions.assertEquals(channel1.messages[10], StreamCompleteWrapped(10)) + queue1.close() + val messages1 = queue1.consume().toList() + Assertions.assertEquals(11, messages1.size) + Assertions.assertEquals(messages1[10].value, StreamCompleteWrapped(10)) } @Test fun testSendStreamState() = runTest { - val writer = queueWriterFactory.make() - data class TestEvent( val stream: DestinationStream, val count: Int, @@ -189,9 +164,7 @@ class DestinationMessageQueueWriterTest { batches.forEach { (stream, count, stateLookupIndex, expectedCount) -> repeat(count) { writer.publish(makeRecord(stream, "test"), 1L) } writer.publish(makeStreamState(stream, count.toLong()), 0L) - val state = - queueWriterFactory.checkpointManager.streamStates[stream.descriptor]!![ - stateLookupIndex] + val state = checkpointManager.streamStates[stream.descriptor]!![stateLookupIndex] Assertions.assertEquals(expectedCount, state.first) Assertions.assertEquals(count.toLong(), state.second.destinationStats?.recordCount) } @@ -199,8 +172,6 @@ class DestinationMessageQueueWriterTest { @Test fun testSendGlobalState() = runTest { - val writer = queueWriterFactory.make() - open class TestEvent data class AddRecords(val stream: DestinationStream, val count: Int) : TestEvent() data class SendState( @@ -229,8 +200,7 @@ class DestinationMessageQueueWriterTest { } is SendState -> { writer.publish(makeGlobalState(event.expectedStream1Count), 0L) - val state = - queueWriterFactory.checkpointManager.globalStates[event.stateLookupIndex] + val state = checkpointManager.globalStates[event.stateLookupIndex] val stream1State = state.first.find { it.first == stream1.descriptor }!! val stream2State = state.first.find { it.first == stream2.descriptor }!! Assertions.assertEquals(event.expectedStream1Count, stream1State.second) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt index 556301830abde..cf53c478df3df 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt @@ -32,7 +32,7 @@ class MemoryManagerTest { val reserved = AtomicBoolean(false) try { - withTimeout(5000) { memoryManager.reserveBlocking(900) } + withTimeout(5000) { memoryManager.reserveBlocking(900, this) } } catch (e: Exception) { Assertions.fail("Failed to reserve memory") } @@ -40,20 +40,20 @@ class MemoryManagerTest { Assertions.assertEquals(100, memoryManager.remainingMemoryBytes) val job = launch { - memoryManager.reserveBlocking(200) + memoryManager.reserveBlocking(200, this) reserved.set(true) } - memoryManager.reserveBlocking(0) + memoryManager.reserveBlocking(0, this) Assertions.assertFalse(reserved.get()) memoryManager.release(50) - memoryManager.reserveBlocking(0) + memoryManager.reserveBlocking(0, this) Assertions.assertEquals(150, memoryManager.remainingMemoryBytes) Assertions.assertFalse(reserved.get()) memoryManager.release(25) - memoryManager.reserveBlocking(0) + memoryManager.reserveBlocking(0, this) Assertions.assertEquals(175, memoryManager.remainingMemoryBytes) Assertions.assertFalse(reserved.get()) @@ -71,11 +71,12 @@ class MemoryManagerTest { fun testReserveBlockingMultithreaded() = runTest { val memoryManager = MemoryManager(MockAvailableMemoryProvider()) withContext(Dispatchers.IO) { - memoryManager.reserveBlocking(1000) + memoryManager.reserveBlocking(1000, this) Assertions.assertEquals(0, memoryManager.remainingMemoryBytes) val nIterations = 100000 - val jobs = (0 until nIterations).map { launch { memoryManager.reserveBlocking(10) } } + val jobs = + (0 until nIterations).map { launch { memoryManager.reserveBlocking(10, this) } } repeat(nIterations) { memoryManager.release(10) @@ -93,10 +94,19 @@ class MemoryManagerTest { fun testRequestingMoreThanAvailableThrows() = runTest { val memoryManager = MemoryManager(MockAvailableMemoryProvider()) try { - memoryManager.reserveBlocking(1001) + memoryManager.reserveBlocking(1001, this) } catch (e: IllegalArgumentException) { return@runTest } Assertions.fail("Requesting more memory than available should throw an exception") } + + @Test + fun testReservations() = runTest { + val memoryManager = MemoryManager(MockAvailableMemoryProvider()) + val reservation = memoryManager.reserveBlocking(100, this) + Assertions.assertEquals(900, memoryManager.remainingMemoryBytes) + reservation.release() + Assertions.assertEquals(1000, memoryManager.remainingMemoryBytes) + } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt index ccf8cd784dee3..9e44846ac023f 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt @@ -11,18 +11,17 @@ import io.airbyte.cdk.data.NullValue import io.airbyte.cdk.file.MockTempFileProvider import io.airbyte.cdk.message.DestinationRecord import io.airbyte.cdk.message.DestinationRecordWrapped -import io.airbyte.cdk.message.MessageQueueReader +import io.airbyte.cdk.message.MessageQueueSupplier import io.airbyte.cdk.message.StreamCompleteWrapped import io.airbyte.cdk.message.StreamRecordWrapped import io.airbyte.cdk.state.FlushStrategy +import io.airbyte.cdk.state.MemoryManager +import io.airbyte.cdk.state.Reserved import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import jakarta.inject.Singleton -import java.util.concurrent.atomic.AtomicLong -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flow import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test @@ -32,28 +31,44 @@ import org.junit.jupiter.api.Test [ "SpillToDiskTaskTest", "MockDestinationConfiguration", + "MockDestinationCatalog", "MockTempFileProvider", "MockTaskLauncher", ] ) class SpillToDiskTaskTest { @Inject lateinit var taskRunner: TaskRunner + @Inject lateinit var memoryManager: MemoryManager @Inject lateinit var spillToDiskTaskFactory: DefaultSpillToDiskTaskFactory @Inject lateinit var mockTempFileProvider: MockTempFileProvider + @Inject + lateinit var queueSupplier: + MessageQueueSupplier> @Singleton + @Primary @Requires(env = ["SpillToDiskTaskTest"]) - class MockQueueReader : - MessageQueueReader { - // Make enough records for a full batch + half a batch - private val maxRecords = ((1024 * 1.5) / 8).toLong() - private val recordsWritten = AtomicLong(0) - override suspend fun read( - key: DestinationStream.Descriptor - ): Flow = flow { - while (recordsWritten.get() < maxRecords) { - val index = recordsWritten.getAndIncrement() - emit( + class MockFlushStrategy : FlushStrategy { + override suspend fun shouldFlush( + stream: DestinationStream, + rangeRead: Range, + bytesProcessed: Long + ): Boolean { + return bytesProcessed >= 1024 + } + } + + private suspend fun primeMessageQueue(): Long { + val queue = queueSupplier.get(stream1.descriptor) + val maxRecords = ((1024 * 1.5) / 8).toLong() + var recordsWritten = 0L + var bytesReserved = 0L + while (recordsWritten < maxRecords) { + val index = recordsWritten++ + bytesReserved++ + queue.publish( + memoryManager.reserveBlocking( + 1L, StreamRecordWrapped( index = index, sizeBytes = 8, @@ -67,26 +82,18 @@ class SpillToDiskTaskTest { ) ) ) - } - emit(StreamCompleteWrapped(index = maxRecords)) - } - } - - @Singleton - @Primary - @Requires(env = ["SpillToDiskTaskTest"]) - class MockFlushStrategy : FlushStrategy { - override suspend fun shouldFlush( - stream: DestinationStream, - rangeRead: Range, - bytesProcessed: Long - ): Boolean { - return bytesProcessed >= 1024 + ) } + queue.publish(memoryManager.reserveBlocking(0L, StreamCompleteWrapped(index = maxRecords))) + return bytesReserved } @Test fun testSpillToDiskTask() = runTest { + val availableMemory = memoryManager.remainingMemoryBytes + val bytesReserved = primeMessageQueue() + Assertions.assertEquals(availableMemory - bytesReserved, memoryManager.remainingMemoryBytes) + val mockTaskLauncher = MockTaskLauncher(taskRunner) spillToDiskTaskFactory.make(mockTaskLauncher, stream1).execute() Assertions.assertEquals(1, mockTaskLauncher.spilledFiles.size) @@ -111,5 +118,7 @@ class SpillToDiskTaskTest { Assertions.assertEquals(expectedLinesFirst, file1.writtenLines) Assertions.assertEquals(expectedLinesSecond, file2.writtenLines) + + Assertions.assertEquals(availableMemory, memoryManager.remainingMemoryBytes) } } From 251b6b236844239151e3984efc938cc309381df1 Mon Sep 17 00:00:00 2001 From: Edward Gao Date: Mon, 7 Oct 2024 11:08:09 -0700 Subject: [PATCH 163/379] Bulk CDK: gradle tweaks (#46548) --- .github/workflows/publish-bulk-cdk.yml | 1 + airbyte-cdk/bulk/build.gradle | 4 +--- airbyte-cdk/bulk/core/load/build.gradle | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-bulk-cdk.yml b/.github/workflows/publish-bulk-cdk.yml index d0f0e4c91c33c..b56bb2e48a023 100644 --- a/.github/workflows/publish-bulk-cdk.yml +++ b/.github/workflows/publish-bulk-cdk.yml @@ -81,6 +81,7 @@ jobs: env: CI: true with: + read-only: true job-id: bulk-cdk-publish concurrent: true gradle-distribution-sha-256-sum-warning: false diff --git a/airbyte-cdk/bulk/build.gradle b/airbyte-cdk/bulk/build.gradle index 6f5cb2ee9a2ac..7e32b531c339d 100644 --- a/airbyte-cdk/bulk/build.gradle +++ b/airbyte-cdk/bulk/build.gradle @@ -62,9 +62,7 @@ allprojects { } tasks.register('bulkCdkIntegrationTest').configure { - // findByName returns the task, or null if no such task exists. - // we need this because not all submodules have an integrationTest task. - dependsOn allprojects.collect {it.tasks.findByName('integrationTest')}.findAll {it != null} + dependsOn allprojects.collect {it.tasks.matching { it.name == 'integrationTest' }} } if (buildNumberFile.exists()) { diff --git a/airbyte-cdk/bulk/core/load/build.gradle b/airbyte-cdk/bulk/core/load/build.gradle index c593e6e9446ba..276b063f4d812 100644 --- a/airbyte-cdk/bulk/core/load/build.gradle +++ b/airbyte-cdk/bulk/core/load/build.gradle @@ -30,7 +30,6 @@ task integrationTest(type: Test) { testClassesDirs = sourceSets.integrationTest.output.classesDirs classpath = sourceSets.integrationTest.runtimeClasspath useJUnitPlatform() - mustRunAfter tasks.check } configurations { integrationTestImplementation.extendsFrom testImplementation From 225427d49083da37b7bfed32df3cb24fdfd4e92d Mon Sep 17 00:00:00 2001 From: Parthiv Makwana <75653580+parthiv11@users.noreply.github.com> Date: Mon, 7 Oct 2024 23:48:32 +0530 Subject: [PATCH 164/379] source-persona contribution from parthiv11 (#46352) Co-authored-by: Marcos Marx --- .../connectors/source-persona/README.md | 33 + .../source-persona/acceptance-test-config.yml | 17 + .../connectors/source-persona/icon.svg | 1 + .../connectors/source-persona/manifest.yaml | 2471 +++++++++++++++++ .../connectors/source-persona/metadata.yaml | 35 + docs/integrations/sources/persona.md | 33 + 6 files changed, 2590 insertions(+) create mode 100644 airbyte-integrations/connectors/source-persona/README.md create mode 100644 airbyte-integrations/connectors/source-persona/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-persona/icon.svg create mode 100644 airbyte-integrations/connectors/source-persona/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-persona/metadata.yaml create mode 100644 docs/integrations/sources/persona.md diff --git a/airbyte-integrations/connectors/source-persona/README.md b/airbyte-integrations/connectors/source-persona/README.md new file mode 100644 index 0000000000000..aa11da416b5d1 --- /dev/null +++ b/airbyte-integrations/connectors/source-persona/README.md @@ -0,0 +1,33 @@ +# Persona +This directory contains the manifest-only connector for `source-persona`. + +Airbyte connector for Persona that makes it easy to move and manage your identity verification data between platforms. This connector helps you seamlessly sync your data from Persona, simplifying workflows and ensuring your identity-related tasks are more efficient. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-persona:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-persona build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-persona test +``` + diff --git a/airbyte-integrations/connectors/source-persona/acceptance-test-config.yml b/airbyte-integrations/connectors/source-persona/acceptance-test-config.yml new file mode 100644 index 0000000000000..78fb74b6c972b --- /dev/null +++ b/airbyte-integrations/connectors/source-persona/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-persona:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-persona/icon.svg b/airbyte-integrations/connectors/source-persona/icon.svg new file mode 100644 index 0000000000000..1c755f3ae2a39 --- /dev/null +++ b/airbyte-integrations/connectors/source-persona/icon.svg @@ -0,0 +1 @@ + diff --git a/airbyte-integrations/connectors/source-persona/manifest.yaml b/airbyte-integrations/connectors/source-persona/manifest.yaml new file mode 100644 index 0000000000000..2e2cdacba4a77 --- /dev/null +++ b/airbyte-integrations/connectors/source-persona/manifest.yaml @@ -0,0 +1,2471 @@ +version: 5.8.1 + +type: DeclarativeSource + +description: >- + Airbyte connector for Persona that makes it easy to move and manage your + identity verification data between platforms. This connector helps you + seamlessly sync your data from Persona, simplifying workflows and ensuring + your identity-related tasks are more efficient. + +check: + type: CheckStream + stream_names: + - accounts + +definitions: + streams: + accounts: + type: DeclarativeStream + name: accounts + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /accounts + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/accounts" + cases: + type: DeclarativeStream + name: cases + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /cases + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/cases" + api-keys: + type: DeclarativeStream + name: api-keys + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api-keys + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/api-keys" + api-logs: + type: DeclarativeStream + name: api-logs + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api-logs + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/api-logs" + events: + type: DeclarativeStream + name: events + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /events + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/events" + inquiries: + type: DeclarativeStream + name: inquiries + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /inquiries + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/inquiries" + inquiry-sessions: + type: DeclarativeStream + name: inquiry-sessions + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /inquiry-sessions + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/inquiry-sessions" + workflows-run: + type: DeclarativeStream + name: workflows-run + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /workflow-runs + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/workflows-run" + webhooks: + type: DeclarativeStream + name: webhooks + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /webhooks + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/webhooks" + workflow-runs: + type: DeclarativeStream + name: workflow-runs + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /workflow-runs + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[after] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: >- + {{ response.get('data', [])[-1].get('id') if response.get('data') + else None }} + stop_condition: "{{ response.get('data')|length == 0 }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/workflow-runs" + base_requester: + type: HttpRequester + url_base: https://withpersona.com/api/v1 + authenticator: + type: BearerAuthenticator + api_token: "{{ config[\"api_key\"] }}" + +streams: + - $ref: "#/definitions/streams/accounts" + - $ref: "#/definitions/streams/cases" + - $ref: "#/definitions/streams/api-keys" + - $ref: "#/definitions/streams/api-logs" + - $ref: "#/definitions/streams/events" + - $ref: "#/definitions/streams/inquiries" + - $ref: "#/definitions/streams/inquiry-sessions" + - $ref: "#/definitions/streams/workflows-run" + - $ref: "#/definitions/streams/webhooks" + - $ref: "#/definitions/streams/workflow-runs" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + description: API key or access token + name: api_key + order: 0 + title: API Key + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + accounts: true + cases: true + api-keys: false + api-logs: false + events: false + inquiries: false + inquiry-sessions: false + workflows-run: true + webhooks: false + workflow-runs: true + testedStreams: + accounts: + hasRecords: true + streamHash: 883643098191c5303d59c55fbad5568e95d6cd47 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + cases: + hasRecords: true + streamHash: 28c1344fb57dcff3c6ccd9392944dd352e06b3ef + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + api-keys: + hasRecords: true + streamHash: 8413a98ff095712851764af296dd1fa2e3e905f1 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + api-logs: + hasRecords: true + streamHash: 256aa51cc5b27cb4a7edf149e15db937aea9c59a + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + events: + streamHash: 0729d08389c5d409937cbaecc80b45087b103c9b + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + inquiries: + hasRecords: true + streamHash: 83886b1e0c8a78440c238bd87b9d09cb787e8e58 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + inquiry-sessions: + hasRecords: true + streamHash: 0c12079b94849def3c8eec88c9c5e80afacb6d28 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + workflows-run: + streamHash: 927936cb02204d1aa9c2dd28e55d1cf44abfa553 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + webhooks: + streamHash: 63d5ed95c64932ade3cca91171154169e28bb745 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + workflow-runs: + streamHash: dc945b22c1fec25429adab887152e19b62a9c24f + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://docs.withpersona.com/reference/list-all-accounts + openapiSpecUrl: >- + https://raw.githubusercontent.com/persona-id/persona-openapi/refs/heads/main/openapi-bundled.json + +schemas: + accounts: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created-at: + type: + - string + - "null" + fields: + type: + - object + - "null" + properties: + address: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - object + - "null" + properties: + city: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + country_code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + postal_code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + street_1: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + street_2: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + subdivision: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + birthdate: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + email_address: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + identification_numbers: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - array + - "null" + name: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - object + - "null" + properties: + first: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + last: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + middle: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + phone_number: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + selfie_photo: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + identification-numbers: + type: + - object + - "null" + reference-id: + type: + - string + - "null" + tags: + type: + - array + - "null" + updated-at: + type: + - string + - "null" + id: + type: string + required: + - id + cases: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + attachments: + type: + - array + - "null" + created-at: + type: + - string + - "null" + creator-id: + type: + - string + - "null" + creator-type: + type: + - string + - "null" + fields: + type: + - object + - "null" + name: + type: + - string + - "null" + status: + type: + - string + - "null" + tags: + type: + - array + - "null" + updated-at: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + accounts: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + case-comments: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + case-queue: + type: + - object + - "null" + properties: {} + case-template: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + inquiries: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + reports: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + txns: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + verifications: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + required: + - id + api-keys: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + api-attributes-blocklist: + type: + - array + - "null" + api-key-inflection: + type: + - string + - "null" + api-version: + type: + - string + - "null" + created-at: + type: + - string + - "null" + file-access-token-expires-in: + type: + - number + - "null" + ip-address-allowlist: + type: + - array + - "null" + items: + type: + - string + - "null" + last-used-at: + type: + - string + - "null" + name: + type: + - string + - "null" + permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + id: + type: string + required: + - id + api-logs: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created-at: + type: + - string + - "null" + request: + type: + - object + - "null" + properties: + get-params: + type: + - object + - "null" + properties: + page: + type: + - object + - "null" + properties: + after: + type: + - string + - "null" + size: + type: + - string + - "null" + headers: + type: + - object + - "null" + properties: + Accept: + type: + - string + - "null" + Host: + type: + - string + - "null" + Persona-Version: + type: + - string + - "null" + User-Agent: + type: + - string + - "null" + ip-address: + type: + - string + - "null" + method: + type: + - string + - "null" + path: + type: + - string + - "null" + post-params: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + attributes: + type: + - object + - "null" + properties: + inquiry-id: + type: + - string + - "null" + response: + type: + - object + - "null" + properties: + headers: + type: + - object + - "null" + properties: + Cache-Control: + type: + - string + - "null" + Content-Type: + type: + - string + - "null" + Expires: + type: + - string + - "null" + Persona-Host: + type: + - string + - "null" + Pragma: + type: + - string + - "null" + RateLimit-Limit: + type: + - number + - "null" + RateLimit-Remaining: + type: + - number + - "null" + RateLimit-Reset: + type: + - number + - "null" + Request-Id: + type: + - string + - "null" + Vary: + type: + - string + - "null" + status: + type: + - number + - "null" + id: + type: string + required: + - id + events: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created-at: + type: + - string + - "null" + name: + type: + - string + - "null" + payload: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + attachments: + type: + - array + - "null" + behaviors: + type: + - object + - "null" + properties: {} + completed-at: + type: + - string + - "null" + created-at: + type: + - string + - "null" + creator: + type: + - string + - "null" + creator-id: + type: + - string + - "null" + creator-type: + type: + - string + - "null" + enabled-locales: + type: + - array + - "null" + items: + type: + - string + - "null" + expired-at: + type: + - string + - "null" + fields: + type: + - object + - "null" + properties: + address: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - object + - "null" + properties: + city: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + country_code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + postal_code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + street_1: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + street_2: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + subdivision: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-city: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-country-code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-postal-code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-street-1: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-street-2: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-subdivision: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + birthdate: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + current-government-id: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + current-selfie: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + email-address: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + email_address: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + expiration-date: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + government-identification-number-map: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + identification-class: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + identification-number: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + identification_numbers: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - array + - "null" + issue-date: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + issuing-authority: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - object + - "null" + properties: + first: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + last: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + middle: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name-first: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name-last: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name-middle: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + phone-number: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + phone_number: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + selected-country-code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - string + - "null" + selected-id-class: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + selfie_photo: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + identification-numbers: + type: + - object + - "null" + name: + type: + - string + - "null" + next-step-name: + type: + - string + - "null" + published-at: + type: + - string + - "null" + reference-id: + type: + - string + - "null" + status: + type: + - string + - "null" + tags: + type: + - array + - "null" + theme: + type: + - object + - "null" + properties: {} + updated-at: + type: + - string + - "null" + id: + type: + - string + - "null" + meta: + type: + - object + - "null" + properties: + processing-time-seconds: + type: + - number + - "null" + relationships: + type: + - object + - "null" + properties: + account: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + accounts: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + case-comments: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + case-queue: + type: + - object + - "null" + properties: {} + case-template: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + creator: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + documents: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + inquiries: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + inquiry-template: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + inquiry-template-version: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + reports: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + reviewer: + type: + - object + - "null" + properties: {} + selfies: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + sessions: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + template: + type: + - object + - "null" + properties: {} + transaction: + type: + - object + - "null" + properties: {} + txns: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + verifications: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + workflow: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + workflow-version: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + id: + type: string + required: + - id + inquiries: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + behaviors: + type: + - object + - "null" + properties: {} + created-at: + type: + - string + - "null" + creator: + type: + - string + - "null" + fields: + type: + - object + - "null" + properties: + address-city: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-country-code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-postal-code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-street-1: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-street-2: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + address-subdivision: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + birthdate: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + current-government-id: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + current-selfie: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + email-address: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + expiration-date: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + government-identification-number-map: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + identification-class: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + identification-number: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + issue-date: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + issuing-authority: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name-first: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name-last: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name-middle: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + phone-number: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + selected-country-code: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - string + - "null" + selected-id-class: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + next-step-name: + type: + - string + - "null" + reference-id: + type: + - string + - "null" + status: + type: + - string + - "null" + tags: + type: + - array + - "null" + updated-at: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + account: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + documents: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + inquiry-template: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + inquiry-template-version: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + reports: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + reviewer: + type: + - object + - "null" + properties: {} + selfies: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + sessions: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + template: + type: + - object + - "null" + properties: {} + transaction: + type: + - object + - "null" + properties: {} + verifications: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + required: + - id + inquiry-sessions: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} + workflows-run: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + completed-at: + type: + - string + - "null" + created-at: + type: + - string + - "null" + status: + type: + - string + - "null" + id: + type: string + meta: + type: + - object + - "null" + properties: + processing-time-seconds: + type: + - number + - "null" + relationships: + type: + - object + - "null" + properties: + creator: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + workflow: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + workflow-version: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + required: + - id + webhooks: + type: object + $schema: http://json-schema.org/schema# + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + api-attributes-blocklist: + type: + - array + - "null" + api-key-inflection: + type: + - string + - "null" + api-version: + type: + - string + - "null" + created-at: + type: + - string + - "null" + enabled-events: + type: + - array + - "null" + items: + type: + - string + - "null" + file-access-token-expires-in: + type: + - number + - "null" + payload-filter: + type: + - object + - "null" + status: + type: + - string + - "null" + url: + type: + - string + - "null" + id: + type: string + required: + - id + additionalProperties: true + workflow-runs: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + completed-at: + type: + - string + - "null" + created-at: + type: + - string + - "null" + status: + type: + - string + - "null" + id: + type: string + meta: + type: + - object + - "null" + properties: + processing-time-seconds: + type: + - number + - "null" + relationships: + type: + - object + - "null" + properties: + creator: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + workflow: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + workflow-version: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + required: + - id diff --git a/airbyte-integrations/connectors/source-persona/metadata.yaml b/airbyte-integrations/connectors/source-persona/metadata.yaml new file mode 100644 index 0000000000000..cc9152559052e --- /dev/null +++ b/airbyte-integrations/connectors/source-persona/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "withpersona.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-persona + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: 7e55429a-a1ea-43c2-81c2-4fc3cf88f81f + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-persona + githubIssueLabel: source-persona + icon: icon.svg + license: MIT + name: Persona + releaseDate: 2024-10-03 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/persona + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/persona.md b/docs/integrations/sources/persona.md new file mode 100644 index 0000000000000..a84be8b036b71 --- /dev/null +++ b/docs/integrations/sources/persona.md @@ -0,0 +1,33 @@ +# Persona +Airbyte connector for [Persona](https://withpersona.com) that makes it easy to move and manage your identity verification data between platforms. This connector helps you seamlessly sync your data from Persona, simplifying workflows and ensuring your identity-related tasks are more efficient. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. API key or access token | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| accounts | id | DefaultPaginator | ✅ | ❌ | +| cases | id | DefaultPaginator | ✅ | ❌ | +| api-keys | id | DefaultPaginator | ✅ | ❌ | +| api-logs | id | DefaultPaginator | ✅ | ❌ | +| events | id | DefaultPaginator | ✅ | ❌ | +| inquiries | id | DefaultPaginator | ✅ | ❌ | +| inquiry-sessions | id | DefaultPaginator | ✅ | ❌ | +| workflows-run | id | DefaultPaginator | ✅ | ❌ | +| webhooks | id | DefaultPaginator | ✅ | ❌ | +| workflow-runs | id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-03 | | Initial release by [@parthiv11](https://github.com/parthiv11) via Connector Builder | + +
From 67e9a8c4287468aabab996b9d0cede3d85562c4f Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Mon, 7 Oct 2024 11:59:59 -0700 Subject: [PATCH 165/379] Bulk Load CDK StreamIncomplete Prefactor 3: Checkpoints processed async (#46517) --- ...geQueue.kt => DestinationMessageQueues.kt} | 23 +++++ .../airbyte/cdk/message/MessageConverter.kt | 94 ------------------- .../airbyte/cdk/message/MessageQueueWriter.kt | 38 +++++--- .../io/airbyte/cdk/state/CheckpointManager.kt | 32 +++++-- .../io/airbyte/cdk/state/MemoryManager.kt | 2 + .../cdk/task/DestinationTaskLauncher.kt | 7 ++ .../airbyte/cdk/task/UpdateCheckpointsTask.kt | 45 +++++++++ .../DestinationMessageQueueWriterTest.kt | 52 +++++----- .../cdk/state/CheckpointManagerTest.kt | 58 ++++-------- .../cdk/task/DestinationTaskLauncherTest.kt | 16 ++++ 10 files changed, 187 insertions(+), 180 deletions(-) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/{DestinationMessageQueue.kt => DestinationMessageQueues.kt} (73%) delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageConverter.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueues.kt similarity index 73% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueues.kt index 7d5d3d8b57c6e..8043d199c702d 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueue.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueues.kt @@ -60,3 +60,26 @@ class DestinationRecordQueueSupplier(catalog: DestinationCatalog) : ?: throw IllegalArgumentException("Reading from non-existent record stream: $key") } } + +sealed interface CheckpointMessageWrapped : Sized + +data class StreamCheckpointWrapped( + override val sizeBytes: Long, + val stream: DestinationStream.Descriptor, + val index: Long, + val checkpoint: CheckpointMessage +) : CheckpointMessageWrapped + +data class GlobalCheckpointWrapped( + override val sizeBytes: Long, + val streamIndexes: List>, + val checkpoint: CheckpointMessage +) : CheckpointMessageWrapped + +/** + * A single-channel queue for checkpoint messages. This is so updating the checkpoint manager never + * blocks reading from stdin. + */ +@Singleton +@Secondary +class CheckpointMessageQueue : ChannelMessageQueue>() diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageConverter.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageConverter.kt deleted file mode 100644 index 5ba878606ea30..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageConverter.kt +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.message - -import io.airbyte.protocol.models.v0.AirbyteGlobalState -import io.airbyte.protocol.models.v0.AirbyteMessage -import io.airbyte.protocol.models.v0.AirbyteStateMessage -import io.airbyte.protocol.models.v0.AirbyteStateStats -import io.airbyte.protocol.models.v0.AirbyteStreamState -import io.airbyte.protocol.models.v0.StreamDescriptor -import jakarta.inject.Singleton - -/** - * Converts the internal @[CheckpointMessage] case class to the Protocol state messages required by - * @[io.airbyte.cdk.output.OutputConsumer] - */ -interface MessageConverter { - fun from(message: T): U -} - -@Singleton -class DefaultMessageConverter : MessageConverter { - override fun from(message: CheckpointMessage): AirbyteMessage { - val state = - when (message) { - is StreamCheckpoint -> - AirbyteStateMessage() - .also { - if (message.sourceStats != null) { - it.sourceStats = - AirbyteStateStats() - .withRecordCount( - message.sourceStats!!.recordCount.toDouble() - ) - } - } - .withDestinationStats( - message.destinationStats?.let { - AirbyteStateStats().withRecordCount(it.recordCount.toDouble()) - } - ?: throw IllegalStateException( - "Destination stats must be provided for DestinationStreamState" - ) - ) - .withType(AirbyteStateMessage.AirbyteStateType.STREAM) - .withStream(fromStreamState(message.checkpoint)) - .also { - message.additionalProperties.forEach { (key, value) -> - it.withAdditionalProperty(key, value) - } - } - is GlobalCheckpoint -> - AirbyteStateMessage() - .also { - if (message.sourceStats != null) { - it.sourceStats = - AirbyteStateStats() - .withRecordCount( - message.sourceStats!!.recordCount.toDouble() - ) - } - } - .withDestinationStats( - message.destinationStats?.let { - AirbyteStateStats().withRecordCount(it.recordCount.toDouble()) - } - ) - .withType(AirbyteStateMessage.AirbyteStateType.GLOBAL) - .withGlobal( - AirbyteGlobalState() - .withSharedState(message.state) - .withStreamStates(message.checkpoints.map { fromStreamState(it) }) - ) - .also { - message.additionalProperties.forEach { (key, value) -> - it.withAdditionalProperty(key, value) - } - } - } - return AirbyteMessage().withType(AirbyteMessage.Type.STATE).withState(state) - } - - private fun fromStreamState(checkpoint: CheckpointMessage.Checkpoint): AirbyteStreamState { - return AirbyteStreamState() - .withStreamDescriptor( - StreamDescriptor() - .withNamespace(checkpoint.stream.namespace) - .withName(checkpoint.stream.name) - ) - .withStreamState(checkpoint.state) - } -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt index bcdb77cb88614..69f68b5c69f96 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt @@ -8,7 +8,6 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.state.CheckpointManager import io.airbyte.cdk.state.MemoryManager import io.airbyte.cdk.state.Reserved import io.airbyte.cdk.state.SyncManager @@ -34,11 +33,10 @@ interface MessageQueueWriter { class DestinationMessageQueueWriter( private val config: DestinationConfiguration, private val catalog: DestinationCatalog, - private val queueSupplier: + private val recordQueueSupplier: MessageQueueSupplier>, + private val checkpointQueue: MessageQueue>, private val syncManager: SyncManager, - private val checkpointManager: - CheckpointManager, systemMemoryManager: MemoryManager ) : MessageQueueWriter { private val queueReservation = runBlocking { @@ -46,7 +44,7 @@ class DestinationMessageQueueWriter( } private val memoryManager = queueReservation.getReservationManager() - private suspend fun reserve(sized: DestinationRecordWrapped) = + private suspend fun reserve(sized: T) = memoryManager.reserveBlocking( (sized.sizeBytes * config.estimatedRecordMemoryOverheadRatio).toLong(), sized @@ -71,16 +69,23 @@ class DestinationMessageQueueWriter( sizeBytes = sizeBytes, record = message ) - queueSupplier.get(message.stream).publish(reserve(wrapped)) + recordQueueSupplier.get(message.stream).publish(reserve(wrapped)) } /* If an end-of-stream marker. */ is DestinationStreamComplete, is DestinationStreamIncomplete -> { val wrapped = StreamCompleteWrapped(index = manager.markEndOfStream()) - val queue = queueSupplier.get(message.stream) + val queue = recordQueueSupplier.get(message.stream) queue.publish(memoryManager.reserveBlocking(0L, wrapped)) queue.close() + if ( + catalog.streams.all { + syncManager.getStreamManager(it.descriptor).endOfStreamRead() + } + ) { + checkpointQueue.close() + } } } } @@ -97,10 +102,15 @@ class DestinationMessageQueueWriter( val (currentIndex, countSinceLast) = manager.markCheckpoint() val messageWithCount = message.withDestinationStats(CheckpointMessage.Stats(countSinceLast)) - checkpointManager.addStreamCheckpoint( - stream, - currentIndex, - messageWithCount + checkpointQueue.publish( + reserve( + StreamCheckpointWrapped( + sizeBytes, + stream, + currentIndex, + messageWithCount + ) + ) ) } /** @@ -119,7 +129,11 @@ class DestinationMessageQueueWriter( message.withDestinationStats(CheckpointMessage.Stats(totalCount)) val streamIndexes = streamWithIndexAndCount.map { it.first.descriptor to it.second } - checkpointManager.addGlobalCheckpoint(streamIndexes, messageWithCount) + checkpointQueue.publish( + reserve( + GlobalCheckpointWrapped(sizeBytes, streamIndexes, messageWithCount) + ) + ) } } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt index db2dc62657e88..3015eefbb51cc 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt @@ -4,11 +4,12 @@ package io.airbyte.cdk.state +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.file.TimeProvider import io.airbyte.cdk.message.CheckpointMessage -import io.airbyte.cdk.message.MessageConverter +import io.airbyte.cdk.util.use import io.airbyte.protocol.models.v0.AirbyteMessage import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary @@ -48,7 +49,7 @@ interface CheckpointManager { * TODO: Ensure that checkpoint is flushed at the end, and require that all checkpoints be flushed * before the destination can succeed. */ -abstract class StreamsCheckpointManager : CheckpointManager { +abstract class StreamsCheckpointManager : CheckpointManager { private val log = KotlinLogging.logger {} private val flushLock = Mutex() @@ -56,8 +57,7 @@ abstract class StreamsCheckpointManager : CheckpointManager - abstract val outputConsumer: Consumer + abstract val outputConsumer: suspend (T) -> Unit abstract val timeProvider: TimeProvider data class GlobalCheckpoint( @@ -200,8 +200,7 @@ abstract class StreamsCheckpointManager : CheckpointManager : CheckpointManager, - override val outputConsumer: Consumer, + override val outputConsumer: suspend (Reserved) -> Unit, override val timeProvider: TimeProvider -) : StreamsCheckpointManager() { +) : StreamsCheckpointManager>() { init { lastFlushTimeMs.set(timeProvider.currentTimeMillis()) } } + +@SuppressFBWarnings( + "NP_NONNULL_PARAM_VIOLATION", + justification = "message is guaranteed to be non-null by Kotlin's type system" +) +@Singleton +@Secondary +class FreeingCheckpointConsumer(private val consumer: Consumer) : + suspend (Reserved) -> Unit { + override suspend fun invoke(message: Reserved) { + message.use { + val outMessage = it.value.asProtocolMessage() + consumer.accept(outMessage) + } + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt index 558f2b04d74e8..44006c70dd31c 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt @@ -33,6 +33,8 @@ class Reserved( fun getReservationManager(): MemoryManager = MemoryManager(bytesReserved) + fun map(f: (T) -> U): Reserved = Reserved(memoryManager, bytesReserved, f(value)) + override suspend fun close() { release() } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt index 78d48e9150f87..ab8527990a5a7 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt @@ -97,6 +97,7 @@ class DefaultDestinationTaskLauncher( private val teardownTaskFactory: TeardownTaskFactory, private val flushCheckpointsTaskFactory: FlushCheckpointsTaskFactory, private val timedFlushTaskFactory: TimedForcedCheckpointFlushTaskFactory, + private val updateCheckpointsTask: UpdateCheckpointsTask, private val exceptionHandler: TaskLauncherExceptionHandler ) : DestinationTaskLauncher { private val log = KotlinLogging.logger {} @@ -108,9 +109,12 @@ class DefaultDestinationTaskLauncher( } override suspend fun start() { + // Launch the client interface setup task log.info { "Starting startup task" } val setupTask = setupTaskFactory.make(this) enqueue(setupTask) + + // Start a spill-to-disk task for each record stream catalog.streams.forEach { stream -> log.info { "Starting spill-to-disk task for $stream" } val spillTask = spillToDiskTaskFactory.make(this, stream) @@ -118,6 +122,9 @@ class DefaultDestinationTaskLauncher( } val forceFlushTask = timedFlushTaskFactory.make(this) enqueue(forceFlushTask) + + // Start a single checkpoint updating task + enqueue(updateCheckpointsTask) } /** Called when the initial destination setup completes. */ diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt new file mode 100644 index 0000000000000..74020d42c2fb3 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.message.CheckpointMessage +import io.airbyte.cdk.message.CheckpointMessageWrapped +import io.airbyte.cdk.message.GlobalCheckpointWrapped +import io.airbyte.cdk.message.MessageQueue +import io.airbyte.cdk.message.StreamCheckpointWrapped +import io.airbyte.cdk.state.CheckpointManager +import io.airbyte.cdk.state.Reserved +import io.github.oshai.kotlinlogging.KotlinLogging +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton + +interface UpdateCheckpointsTask : SyncTask + +@Singleton +@Secondary +class DefaultUpdateCheckpointsTask( + val checkpointManager: + CheckpointManager>, + private val checkpointMessageQueue: MessageQueue> +) : UpdateCheckpointsTask { + val log = KotlinLogging.logger {} + override suspend fun execute() { + log.info { "Starting to consume checkpoint messages (state) for updating" } + checkpointMessageQueue.consume().collect { + when (it.value) { + is StreamCheckpointWrapped -> { + val (_, stream, index, message) = it.value + checkpointManager.addStreamCheckpoint(stream, index, it.map { message }) + } + is GlobalCheckpointWrapped -> { + val (_, streamIndexes, message) = it.value + checkpointManager.addGlobalCheckpoint(streamIndexes, it.map { message }) + } + } + } + log.info { "All checkpoints (state) updated" } + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt index 407a6e6b48289..5f6906bbb03f5 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt @@ -10,12 +10,12 @@ import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 import io.airbyte.cdk.data.NullValue -import io.airbyte.cdk.state.MockCheckpointManager import io.airbyte.cdk.state.Reserved import io.airbyte.cdk.state.SyncManager import io.airbyte.cdk.util.takeUntilInclusive import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject +import kotlinx.coroutines.flow.take import kotlinx.coroutines.flow.toList import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions @@ -28,16 +28,15 @@ import org.junit.jupiter.api.Test "DestinationMessageQueueWriterTest", "MockDestinationConfiguration", "MockDestinationCatalog", - "MockCheckpointManager", ] ) class DestinationMessageQueueWriterTest { @Inject lateinit var config: DestinationConfiguration - @Inject lateinit var checkpointManager: MockCheckpointManager @Inject lateinit var writer: DestinationMessageQueueWriter @Inject - lateinit var queueSupplier: + lateinit var recordQueueSupplier: MessageQueueSupplier> + @Inject lateinit var checkpointQueue: MessageQueue> @Inject lateinit var syncManager: SyncManager private fun makeRecord(stream: DestinationStream, record: String): DestinationRecord { @@ -80,8 +79,8 @@ class DestinationMessageQueueWriterTest { @Test fun testSendRecords() = runTest { - val queue1 = queueSupplier.get(stream1.descriptor) - val queue2 = queueSupplier.get(stream2.descriptor) + val queue1 = recordQueueSupplier.get(stream1.descriptor) + val queue2 = recordQueueSupplier.get(stream2.descriptor) val manager1 = syncManager.getStreamManager(stream1.descriptor) val manager2 = syncManager.getStreamManager(stream2.descriptor) @@ -118,8 +117,8 @@ class DestinationMessageQueueWriterTest { @Test fun testSendEndOfStream() = runTest { - val queue1 = queueSupplier.get(stream1.descriptor) - val queue2 = queueSupplier.get(stream2.descriptor) + val queue1 = recordQueueSupplier.get(stream1.descriptor) + val queue2 = recordQueueSupplier.get(stream2.descriptor) val manager1 = syncManager.getStreamManager(stream1.descriptor) val manager2 = syncManager.getStreamManager(stream2.descriptor) @@ -149,24 +148,24 @@ class DestinationMessageQueueWriterTest { data class TestEvent( val stream: DestinationStream, val count: Int, - val stateLookupIndex: Int, val expectedStateIndex: Long ) val batches = listOf( - TestEvent(stream1, 10, 0, 10), - TestEvent(stream1, 5, 1, 15), - TestEvent(stream2, 4, 0, 4), - TestEvent(stream1, 3, 2, 18), + TestEvent(stream1, 10, 10), + TestEvent(stream1, 5, 15), + TestEvent(stream2, 4, 4), + TestEvent(stream1, 3, 18), ) - batches.forEach { (stream, count, stateLookupIndex, expectedCount) -> + batches.forEach { (stream, count, expectedCount) -> repeat(count) { writer.publish(makeRecord(stream, "test"), 1L) } writer.publish(makeStreamState(stream, count.toLong()), 0L) - val state = checkpointManager.streamStates[stream.descriptor]!![stateLookupIndex] - Assertions.assertEquals(expectedCount, state.first) - Assertions.assertEquals(count.toLong(), state.second.destinationStats?.recordCount) + val state = + checkpointQueue.consume().take(1).toList().first().value as StreamCheckpointWrapped + Assertions.assertEquals(expectedCount, state.index) + Assertions.assertEquals(count.toLong(), state.checkpoint.destinationStats?.recordCount) } } @@ -175,7 +174,6 @@ class DestinationMessageQueueWriterTest { open class TestEvent data class AddRecords(val stream: DestinationStream, val count: Int) : TestEvent() data class SendState( - val stateLookupIndex: Int, val expectedStream1Count: Long, val expectedStream2Count: Long, val expectedStats: Long = 0 @@ -184,13 +182,13 @@ class DestinationMessageQueueWriterTest { val batches = listOf( AddRecords(stream1, 10), - SendState(0, 10, 0, 10), + SendState(10, 0, 10), AddRecords(stream2, 5), AddRecords(stream1, 4), - SendState(1, 14, 5, 9), + SendState(14, 5, 9), AddRecords(stream2, 3), - SendState(2, 14, 8, 3), - SendState(3, 14, 8, 0), + SendState(14, 8, 3), + SendState(14, 8, 0), ) batches.forEach { event -> @@ -200,14 +198,16 @@ class DestinationMessageQueueWriterTest { } is SendState -> { writer.publish(makeGlobalState(event.expectedStream1Count), 0L) - val state = checkpointManager.globalStates[event.stateLookupIndex] - val stream1State = state.first.find { it.first == stream1.descriptor }!! - val stream2State = state.first.find { it.first == stream2.descriptor }!! + val state = + checkpointQueue.consume().take(1).toList().first().value + as GlobalCheckpointWrapped + val stream1State = state.streamIndexes.find { it.first == stream1.descriptor }!! + val stream2State = state.streamIndexes.find { it.first == stream2.descriptor }!! Assertions.assertEquals(event.expectedStream1Count, stream1State.second) Assertions.assertEquals(event.expectedStream2Count, stream2State.second) Assertions.assertEquals( event.expectedStats, - state.second.destinationStats?.recordCount + state.checkpoint.destinationStats?.recordCount ) } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt index 5ea8bf86ec686..40a409c79e4c6 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt @@ -13,13 +13,11 @@ import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 import io.airbyte.cdk.file.TimeProvider import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.MessageConverter import io.airbyte.cdk.message.SimpleBatch import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import jakarta.inject.Singleton -import java.util.function.Consumer import java.util.stream.Stream import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions @@ -47,41 +45,24 @@ class CheckpointManagerTest { * StateIn: What is passed to the manager. StateOut: What is sent from the manager to the output * consumer. */ - sealed class MockCheckpointIn - data class MockStreamCheckpointIn(val stream: DestinationStream, val payload: Int) : - MockCheckpointIn() - data class MockGlobalCheckpointIn(val payload: Int) : MockCheckpointIn() - - sealed class MockCheckpointOut - data class MockStreamCheckpointOut(val stream: DestinationStream, val payload: String) : - MockCheckpointOut() - data class MockGlobalCheckpointOut(val payload: String) : MockCheckpointOut() - - @Singleton - @Requires(env = ["CheckpointManagerTest"]) - class MockStateMessageFactory : MessageConverter { - override fun from(message: MockCheckpointIn): MockCheckpointOut { - return when (message) { - is MockStreamCheckpointIn -> - MockStreamCheckpointOut(message.stream, message.payload.toString()) - is MockGlobalCheckpointIn -> MockGlobalCheckpointOut(message.payload.toString()) - } - } - } + sealed class MockCheckpoint + data class MockStreamCheckpoint(val stream: DestinationStream, val payload: Int) : + MockCheckpoint() + data class MockGlobalCheckpoint(val payload: Int) : MockCheckpoint() @Singleton @Requires(env = ["CheckpointManagerTest"]) - class MockOutputConsumer : Consumer { + class MockOutputConsumer : suspend (MockCheckpoint) -> Unit { val collectedStreamOutput = mutableMapOf>() val collectedGlobalOutput = mutableListOf() - override fun accept(t: MockCheckpointOut) { + override suspend fun invoke(t: MockCheckpoint) { when (t) { - is MockStreamCheckpointOut -> + is MockStreamCheckpoint -> collectedStreamOutput .getOrPut(t.stream.descriptor) { mutableListOf() } - .add(t.payload) - is MockGlobalCheckpointOut -> collectedGlobalOutput.add(t.payload) + .add(t.payload.toString()) + is MockGlobalCheckpoint -> collectedGlobalOutput.add(t.payload.toString()) } } } @@ -91,21 +72,20 @@ class CheckpointManagerTest { class TestCheckpointManager( override val catalog: DestinationCatalog, override val syncManager: SyncManager, - override val outputFactory: MessageConverter, override val outputConsumer: MockOutputConsumer, override val timeProvider: TimeProvider - ) : StreamsCheckpointManager() + ) : StreamsCheckpointManager() sealed class TestEvent data class TestStreamMessage(val stream: DestinationStream, val index: Long, val message: Int) : TestEvent() { - fun toMockCheckpointIn() = MockStreamCheckpointIn(stream, message) + fun toMockCheckpointIn() = MockStreamCheckpoint(stream, message) } data class TestGlobalMessage( val streamIndexes: List>, val message: Int ) : TestEvent() { - fun toMockCheckpointIn() = MockGlobalCheckpointIn(message) + fun toMockCheckpointIn() = MockGlobalCheckpoint(message) } data class FlushPoint( val persistedRanges: Map>> = mapOf() @@ -483,7 +463,7 @@ class CheckpointManagerTest { checkpointManager.addStreamCheckpoint( stream1.descriptor, 1L, - MockStreamCheckpointIn(stream1, 1) + MockStreamCheckpoint(stream1, 1) ) syncManager.markPersisted(stream1, Range.closed(0L, 1L)) Assertions.assertTrue(startTime >= checkpointManager.getLastSuccessfulFlushTimeMs()) @@ -501,7 +481,7 @@ class CheckpointManagerTest { checkpointManager.addStreamCheckpoint( stream1.descriptor, 1L, - MockStreamCheckpointIn(stream1, 1) + MockStreamCheckpoint(stream1, 1) ) Assertions.assertEquals( mapOf(stream1.descriptor to 1L), @@ -511,7 +491,7 @@ class CheckpointManagerTest { checkpointManager.addStreamCheckpoint( stream2.descriptor, 10L, - MockStreamCheckpointIn(stream2, 10) + MockStreamCheckpoint(stream2, 10) ) Assertions.assertEquals( mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), @@ -521,7 +501,7 @@ class CheckpointManagerTest { checkpointManager.addStreamCheckpoint( stream1.descriptor, 2L, - MockStreamCheckpointIn(stream1, 2) + MockStreamCheckpoint(stream1, 2) ) Assertions.assertEquals( mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), @@ -546,7 +526,7 @@ class CheckpointManagerTest { checkpointManager.addStreamCheckpoint( stream2.descriptor, 20L, - MockStreamCheckpointIn(stream2, 20) + MockStreamCheckpoint(stream2, 20) ) checkpointManager.flushReadyCheckpointMessages() Assertions.assertEquals( @@ -581,7 +561,7 @@ class CheckpointManagerTest { checkpointManager.addGlobalCheckpoint( listOf(stream1.descriptor to 1L, stream2.descriptor to 10L), - MockGlobalCheckpointIn(1) + MockGlobalCheckpoint(1) ) Assertions.assertEquals( mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), @@ -590,7 +570,7 @@ class CheckpointManagerTest { checkpointManager.addGlobalCheckpoint( listOf(stream1.descriptor to 2L, stream2.descriptor to 20L), - MockGlobalCheckpointIn(2) + MockGlobalCheckpoint(2) ) Assertions.assertEquals( mapOf(stream1.descriptor to 1L, stream2.descriptor to 10L), diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt index ed6f6097269cd..62dacbf7066fd 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt @@ -55,6 +55,7 @@ class DestinationTaskLauncherTest { @Inject lateinit var teardownTaskFactory: MockTeardownTaskFactory @Inject lateinit var flushCheckpointsTaskFactory: MockFlushCheckpointsTaskFactory @Inject lateinit var forceFlushTaskFactory: MockForceFlushTaskFactory + @Inject lateinit var updateCheckpointsTask: MockUpdateCheckpointsTask @Singleton @Replaces(DefaultSetupTaskFactory::class) @@ -226,6 +227,16 @@ class DestinationTaskLauncherTest { } } + @Singleton + @Primary + @Requires(env = ["DestinationTaskLauncherTest"]) + class MockUpdateCheckpointsTask : UpdateCheckpointsTask { + val didRun = Channel(Channel.UNLIMITED) + override suspend fun execute() { + didRun.send(true) + } + } + class MockBatch(override val state: Batch.State) : Batch @Singleton @@ -255,6 +266,11 @@ class DestinationTaskLauncherTest { // Verify that we kicked off the timed force flush w/o a specific delay Assertions.assertNull(forceFlushTaskFactory.ranWithDelay.receive()) + Assertions.assertTrue( + updateCheckpointsTask.didRun.receive(), + "update checkpoints task was started" + ) + // Collect the tasks wrapped by the exception handler: expect one Setup and [nStreams] // SpillToDisk mockExceptionHandler.wrappedTasks.close() From edccd7d05685881b0eafeb62ea18bbd2278cef0c Mon Sep 17 00:00:00 2001 From: Yue Li <61070669+theyueli@users.noreply.github.com> Date: Mon, 7 Oct 2024 12:06:26 -0700 Subject: [PATCH 166/379] [source-mssql] improving discovery of large mssql database (#46515) Co-authored-by: Michal Krawczyk Co-authored-by: Octavia Squidington III --- .../connectors/source-mssql/metadata.yaml | 2 +- .../source/mssql/MssqlSource.java | 27 +++++++------------ docs/integrations/sources/mssql.md | 23 ++++++++-------- 3 files changed, 23 insertions(+), 29 deletions(-) diff --git a/airbyte-integrations/connectors/source-mssql/metadata.yaml b/airbyte-integrations/connectors/source-mssql/metadata.yaml index 5d44d5719d720..4b1cd2659478a 100644 --- a/airbyte-integrations/connectors/source-mssql/metadata.yaml +++ b/airbyte-integrations/connectors/source-mssql/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: b5ea17b1-f170-46dc-bc31-cc744ca984c1 - dockerImageTag: 4.1.14 + dockerImageTag: 4.1.15 dockerRepository: airbyte/source-mssql documentationUrl: https://docs.airbyte.com/integrations/sources/mssql githubIssueLabel: source-mssql diff --git a/airbyte-integrations/connectors/source-mssql/src/main/java/io/airbyte/integrations/source/mssql/MssqlSource.java b/airbyte-integrations/connectors/source-mssql/src/main/java/io/airbyte/integrations/source/mssql/MssqlSource.java index f201c7f393b9d..94d81ac32c7df 100644 --- a/airbyte-integrations/connectors/source-mssql/src/main/java/io/airbyte/integrations/source/mssql/MssqlSource.java +++ b/airbyte-integrations/connectors/source-mssql/src/main/java/io/airbyte/integrations/source/mssql/MssqlSource.java @@ -41,6 +41,7 @@ import io.airbyte.cdk.integrations.source.relationaldb.state.StateManager; import io.airbyte.cdk.integrations.source.relationaldb.state.StateManagerFactory; import io.airbyte.cdk.integrations.source.relationaldb.streamstatus.StreamStatusTraceEmitterIterator; +import io.airbyte.commons.exceptions.ConfigErrorException; import io.airbyte.commons.functional.CheckedConsumer; import io.airbyte.commons.json.Jsons; import io.airbyte.commons.stream.AirbyteStreamStatusHolder; @@ -232,20 +233,18 @@ public AirbyteCatalog discover(final JsonNode config) { @Override public List>> discoverInternal(final JdbcDatabase database) throws Exception { - final List>> internals = super.discoverInternal(database); if (schemas != null && !schemas.isEmpty()) { - // process explicitly filtered (from UI) schemas - final List>> resultInternals = internals - .stream() - .filter(this::isTableInRequestedSchema) - .toList(); - for (final TableInfo> info : resultInternals) { - LOGGER.debug("Found table (schema: {}): {}", info.getNameSpace(), info.getName()); - } - return resultInternals; + return schemas.stream().flatMap(schema -> { + LOGGER.info("Get columns for schema: {}", schema); + try { + return super.discoverInternal(database, schema).stream(); + } catch (Exception e) { + throw new ConfigErrorException(String.format("Error getting columns for schema: %s", schema), e); + } + }).collect(toList()); } else { LOGGER.info("No schemas explicitly set on UI to process, so will process all of existing schemas in DB"); - return internals; + return super.discoverInternal(database); } } @@ -289,12 +288,6 @@ protected boolean verifyCursorColumnValues(final JdbcDatabase database, final St return true; } - private boolean isTableInRequestedSchema(final TableInfo> tableInfo) { - return schemas - .stream() - .anyMatch(schema -> schema.equals(tableInfo.getNameSpace())); - } - @Override public List> getCheckOperations(final JsonNode config) throws Exception { diff --git a/docs/integrations/sources/mssql.md b/docs/integrations/sources/mssql.md index 38f685aa9f5a5..cba8d22b3340d 100644 --- a/docs/integrations/sources/mssql.md +++ b/docs/integrations/sources/mssql.md @@ -422,17 +422,18 @@ WHERE actor_definition_id ='b5ea17b1-f170-46dc-bc31-cc744ca984c1' AND (configura | Version | Date | Pull Request | Subject | |:--------|:-----------|:------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------| -| 4.1.14 | 2024-09-17 | [45639](https://github.com/airbytehq/airbyte/pull/45639) | Adopt latest CDK to use the latest apache sshd mina to handle tcpkeepalive requests. | -| 4.1.13 | 2024-09-05 | [45181](https://github.com/airbytehq/airbyte/pull/45181) | Fix incorrect categorizing resumable/nonresumable full refresh streams. | -| 4.1.12 | 2024-09-10 | [45368](https://github.com/airbytehq/airbyte/pull/45368) | Remove excessive debezium logging. | -| 4.1.11 | 2024-09-04 | [45142](https://github.com/airbytehq/airbyte/pull/45142) | Fix incorrect datetimeoffset format in cursor state. | -| 4.1.10 | 2024-08-27 | [44759](https://github.com/airbytehq/airbyte/pull/44759) | Improve null safety in parsing debezium change events. | -| 4.1.9 | 2024-08-27 | [44841](https://github.com/airbytehq/airbyte/pull/44841) | Adopt latest CDK. | -| 4.1.8 | 2024-08-08 | [43410](https://github.com/airbytehq/airbyte/pull/43410) | Adopt latest CDK. | -| 4.1.7 | 2024-08-06 | [42869](https://github.com/airbytehq/airbyte/pull/42869) | Adopt latest CDK. | -| 4.1.6 | 2024-07-30 | [42550](https://github.com/airbytehq/airbyte/pull/42550) | Correctly report stream states. | -| 4.1.5 | 2024-07-29 | [42852](https://github.com/airbytehq/airbyte/pull/42852) | Bump CDK version to latest to use new bug fixes on error translation. | -| 4.1.4 | 2024-07-23 | [42421](https://github.com/airbytehq/airbyte/pull/42421) | Remove final transient error emitter iterators. | +| 4.1.15 | 2024-10-05 | [46515](https://github.com/airbytehq/airbyte/pull/46515) | Improving discovery of large SQL server database. | +| 4.1.14 | 2024-09-17 | [45639](https://github.com/airbytehq/airbyte/pull/45639) | Adopt latest CDK to use the latest apache sshd mina to handle tcpkeepalive requests. | +| 4.1.13 | 2024-09-05 | [45181](https://github.com/airbytehq/airbyte/pull/45181) | Fix incorrect categorizing resumable/nonresumable full refresh streams. | +| 4.1.12 | 2024-09-10 | [45368](https://github.com/airbytehq/airbyte/pull/45368) | Remove excessive debezium logging. | +| 4.1.11 | 2024-09-04 | [45142](https://github.com/airbytehq/airbyte/pull/45142) | Fix incorrect datetimeoffset format in cursor state. | +| 4.1.10 | 2024-08-27 | [44759](https://github.com/airbytehq/airbyte/pull/44759) | Improve null safety in parsing debezium change events. | +| 4.1.9 | 2024-08-27 | [44841](https://github.com/airbytehq/airbyte/pull/44841) | Adopt latest CDK. | +| 4.1.8 | 2024-08-08 | [43410](https://github.com/airbytehq/airbyte/pull/43410) | Adopt latest CDK. | +| 4.1.7 | 2024-08-06 | [42869](https://github.com/airbytehq/airbyte/pull/42869) | Adopt latest CDK. | +| 4.1.6 | 2024-07-30 | [42550](https://github.com/airbytehq/airbyte/pull/42550) | Correctly report stream states. | +| 4.1.5 | 2024-07-29 | [42852](https://github.com/airbytehq/airbyte/pull/42852) | Bump CDK version to latest to use new bug fixes on error translation. | +| 4.1.4 | 2024-07-23 | [42421](https://github.com/airbytehq/airbyte/pull/42421) | Remove final transient error emitter iterators. | | 4.1.3 | | 2024-07-22 | [42411](https://github.com/airbytehq/airbyte/pull/42411) | Hide the "initial load timeout in hours" field by default in UI | | 4.1.2 | 2024-07-22 | [42024](https://github.com/airbytehq/airbyte/pull/42024) | Fix a NPE bug on resuming from a failed attempt. | | 4.1.1 | 2024-07-19 | [42122](https://github.com/airbytehq/airbyte/pull/42122) | Improve wass error message + logging. | From 670579d62c2ac7750a7acd5c47ad0440dd108a98 Mon Sep 17 00:00:00 2001 From: Balaji Seetharaman Date: Tue, 8 Oct 2024 00:54:18 +0530 Subject: [PATCH 167/379] source-referralhero (#46338) Co-authored-by: Natik Gadzhi --- .../connectors/source-referralhero/README.md | 39 +++ .../acceptance-test-config.yml | 17 ++ .../connectors/source-referralhero/icon.svg | 3 + .../source-referralhero/manifest.yaml | 289 ++++++++++++++++++ .../source-referralhero/metadata.yaml | 35 +++ docs/integrations/sources/referralhero.md | 35 +++ 6 files changed, 418 insertions(+) create mode 100644 airbyte-integrations/connectors/source-referralhero/README.md create mode 100644 airbyte-integrations/connectors/source-referralhero/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-referralhero/icon.svg create mode 100644 airbyte-integrations/connectors/source-referralhero/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-referralhero/metadata.yaml create mode 100644 docs/integrations/sources/referralhero.md diff --git a/airbyte-integrations/connectors/source-referralhero/README.md b/airbyte-integrations/connectors/source-referralhero/README.md new file mode 100644 index 0000000000000..189192bdc2541 --- /dev/null +++ b/airbyte-integrations/connectors/source-referralhero/README.md @@ -0,0 +1,39 @@ +# referralhero +[Referral Hero](https://referralhero.com) is a tool for creating, managing, and analyzing referral programs to boost customer acquisition and engagement. +With this connector, you can streamline the transfer of campaign-related data for better integration into your analytics, CRM, or marketing platforms. + +Referral Hero Source Connector is a designed to sync referral data between your Referral Hero campaigns and your destination airbyte connectors. + +This directory contains the manifest-only connector for `source-referralhero`airbyte connector developed using airbyte 1.0 UI Connector development + +## Generate API Token +Please follow the instructions in the following [referralhero](https://support.referralhero.com/integrate/rest-api) page to generate the api token + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-referralhero:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-referralhero build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-referralhero test +``` + diff --git a/airbyte-integrations/connectors/source-referralhero/acceptance-test-config.yml b/airbyte-integrations/connectors/source-referralhero/acceptance-test-config.yml new file mode 100644 index 0000000000000..e5f7790221386 --- /dev/null +++ b/airbyte-integrations/connectors/source-referralhero/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-referralhero:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-referralhero/icon.svg b/airbyte-integrations/connectors/source-referralhero/icon.svg new file mode 100644 index 0000000000000..cf5618012c9ae --- /dev/null +++ b/airbyte-integrations/connectors/source-referralhero/icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-referralhero/manifest.yaml b/airbyte-integrations/connectors/source-referralhero/manifest.yaml new file mode 100644 index 0000000000000..d361256f05b5d --- /dev/null +++ b/airbyte-integrations/connectors/source-referralhero/manifest.yaml @@ -0,0 +1,289 @@ +version: 5.10.2 + +type: DeclarativeSource + +description: airbyte connector developed using airbyte 1.0 UI Connector development + +check: + type: CheckStream + stream_names: + - lists + +definitions: + streams: + lists: + type: DeclarativeStream + name: lists + primary_key: + - uuid + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api/v2/lists + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - lists + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: page_size + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 50 + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/lists" + leaderboard: + type: DeclarativeStream + name: leaderboard + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api/v2/lists/{{stream_partition.uuid_id}}/leaderboard + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - ranking + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page_size + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: page + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 50 + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: uuid + partition_field: uuid_id + stream: + $ref: "#/definitions/streams/lists" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/leaderboard" + bonuses: + type: DeclarativeStream + name: bonuses + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api/v2/lists/{{stream_partition.uuid_id}}/bonuses + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: page_size + pagination_strategy: + type: PageIncrement + start_from_page: 0 + page_size: 50 + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: uuid + partition_field: uuid_id + stream: + $ref: "#/definitions/streams/lists" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/bonuses" + subscribers: + type: DeclarativeStream + name: subscribers + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /api/v2/lists/{{stream_partition.uuid_id}}/subscribers + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + - subscribers + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: page_size + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: uuid + partition_field: uuid_id + stream: + $ref: "#/definitions/streams/lists" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/subscribers" + base_requester: + type: HttpRequester + url_base: https://app.referralhero.com + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"api_key\"] }}" + inject_into: + type: RequestOption + field_name: api_token + inject_into: request_parameter + +streams: + - $ref: "#/definitions/streams/lists" + - $ref: "#/definitions/streams/leaderboard" + - $ref: "#/definitions/streams/bonuses" + - $ref: "#/definitions/streams/subscribers" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + name: api_key + order: 0 + title: API Key + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + lists: true + leaderboard: false + bonuses: false + subscribers: false + testedStreams: + lists: + streamHash: ef688075347cbc7519bc0f4a84110f72208fa303 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + leaderboard: + streamHash: 4a677f97aa53b86ac398ea845daf4565fdde9858 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + bonuses: + streamHash: 783055e8247359f432712a55a56795e25ee9c309 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + subscribers: + streamHash: 1fad0a1c5e10e58f86990b12891fe1b9c6149ddc + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://support.referralhero.com/integrate/rest-api/endpoints-reference + +schemas: + lists: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + created_at: + type: + - number + - "null" + name: + type: + - string + - "null" + subscribers: + type: + - number + - "null" + uuid: + type: string + required: + - uuid + leaderboard: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} + bonuses: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} + subscribers: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: {} diff --git a/airbyte-integrations/connectors/source-referralhero/metadata.yaml b/airbyte-integrations/connectors/source-referralhero/metadata.yaml new file mode 100644 index 0000000000000..405727630e36d --- /dev/null +++ b/airbyte-integrations/connectors/source-referralhero/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "app.referralhero.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-referralhero + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: 4a0df9e1-dadc-4828-a88d-afd8b3c0106d + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-referralhero + githubIssueLabel: source-referralhero + icon: icon.svg + license: MIT + name: referralhero + releaseDate: 2024-10-07 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/referralhero + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/referralhero.md b/docs/integrations/sources/referralhero.md new file mode 100644 index 0000000000000..a874f34a58411 --- /dev/null +++ b/docs/integrations/sources/referralhero.md @@ -0,0 +1,35 @@ +# referralhero +[Referral Hero](https://referralhero.com) is a tool for creating, managing, and analyzing referral programs to boost customer acquisition and engagement. +With this connector, you can streamline the transfer of campaign-related data for better integration into your analytics, CRM, or marketing platforms. + +Referral Hero Source Connector is a designed to sync referral data between your Referral Hero campaigns and your destination airbyte connectors. + + +## Generate API Token +Please follow the instructions in the following [referralhero](https://support.referralhero.com/integrate/rest-api) page to generate the api token + + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| lists | uuid | DefaultPaginator | ✅ | ❌ | +| leaderboard | | DefaultPaginator | ✅ | ❌ | +| bonuses | | DefaultPaginator | ✅ | ❌ | +| subscribers | id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-07 | | Initial release by [@bala-ceg](https://github.com/bala-ceg) via Connector Builder | + +
From b15bdf8eb2cb9ceb4c1b72c801ad04738a70a425 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Mon, 7 Oct 2024 12:55:03 -0700 Subject: [PATCH 168/379] Bulk Load CDK Stream Incomplete Prefactor 4: Factor out events (#46518) --- .../io/airbyte/cdk/message/MessageQueue.kt | 13 +++++-- .../airbyte/cdk/message/MessageQueueWriter.kt | 2 +- .../io/airbyte/cdk/state/EventConsumer.kt | 22 ------------ .../io/airbyte/cdk/state/EventProducer.kt | 34 ------------------- .../io/airbyte/cdk/state/FlushStrategy.kt | 5 +-- .../io/airbyte/cdk/task/SpillToDiskTask.kt | 4 +-- .../task/TimedForcedCheckpointFlushTask.kt | 21 +++++------- .../cdk/state/DefaultFlushStrategyTest.kt | 11 +++--- .../TimedForcedCheckpointFlushTaskTest.kt | 11 +++--- 9 files changed, 34 insertions(+), 89 deletions(-) delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventConsumer.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventProducer.kt diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt index e511266c1c34e..7f15270aa8604 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt @@ -4,21 +4,28 @@ package io.airbyte.cdk.message +import io.airbyte.cdk.util.CloseableCoroutine import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.receiveAsFlow -interface MessageQueue { - suspend fun publish(message: T) +interface QueueReader { suspend fun consume(): Flow - suspend fun close() + suspend fun poll(): T? } +interface QueueWriter : CloseableCoroutine { + suspend fun publish(message: T) +} + +interface MessageQueue : QueueReader, QueueWriter + abstract class ChannelMessageQueue : MessageQueue { val channel = Channel(Channel.UNLIMITED) override suspend fun publish(message: T) = channel.send(message) override suspend fun consume(): Flow = channel.receiveAsFlow() + override suspend fun poll(): T? = channel.tryReceive().getOrNull() override suspend fun close() { channel.close() } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt index 69f68b5c69f96..87ed536aca08a 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt @@ -35,7 +35,7 @@ class DestinationMessageQueueWriter( private val catalog: DestinationCatalog, private val recordQueueSupplier: MessageQueueSupplier>, - private val checkpointQueue: MessageQueue>, + private val checkpointQueue: QueueWriter>, private val syncManager: SyncManager, systemMemoryManager: MemoryManager ) : MessageQueueWriter { diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventConsumer.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventConsumer.kt deleted file mode 100644 index ee36f31804822..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventConsumer.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.state - -/** - * A multi-reader consumer of events produced by a single-writer [EventProducer]. - * - * To use: - * - set up an [EventProducer] with the same type parameter as described in the producer's - * documentation - * - declare a subclass of [EventConsumer] and mark it `@Prototype` (multi-reader) - * - inject the producer and consumers where needed - */ -abstract class EventConsumer(producer: EventProducer) { - val channel = producer.subscribe() - - suspend fun consumeMaybe(): T? { - return channel.tryReceive().getOrNull() - } -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventProducer.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventProducer.kt deleted file mode 100644 index 5e41df959eeea..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/EventProducer.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.state - -import java.util.concurrent.ConcurrentLinkedQueue -import kotlinx.coroutines.channels.Channel - -/** - * A single-writer event producer for a multi-reader consumer. - * - * To use - * - declare a subclass of [EventProducer] with the type parameter of the events to produce - * - mark it `@Singleton` (single-writer!) - * - configure [EventConsumer]s as described in the consumer's documentation - * - inject the producer and consumers where needed - * - * TODO: If we need to support different paradigms (multi-writer, etc.), abstract this into an - * interface and provide abstract implementations for each type. - */ -abstract class EventProducer { - private val subscribers = ConcurrentLinkedQueue>() - - fun subscribe(): Channel { - val channel = Channel(Channel.UNLIMITED) - subscribers.add(channel) - return channel - } - - suspend fun produce(event: T) { - subscribers.forEach { it.send(event) } - } -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt index 56ff3a09062c1..94348940893f2 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt @@ -8,6 +8,7 @@ import com.google.common.collect.Range import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.message.QueueReader import io.airbyte.cdk.task.ForceFlushEvent import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton @@ -34,7 +35,7 @@ interface FlushStrategy { @Secondary class DefaultFlushStrategy( private val config: DestinationConfiguration, - private val eventConsumer: EventConsumer + private val eventQueue: QueueReader ) : FlushStrategy { private val forceFlushIndexes = ConcurrentHashMap() @@ -48,7 +49,7 @@ class DefaultFlushStrategy( } // Listen to the event stream for a new force flush index - val nextFlushIndex = eventConsumer.consumeMaybe()?.indexes?.get(stream.descriptor) + val nextFlushIndex = eventQueue.poll()?.indexes?.get(stream.descriptor) // Always update the index if the new one is not null return when ( diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt index 52e08c7a8de0f..5827e50f1f947 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt @@ -10,8 +10,8 @@ import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.file.TempFileProvider import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.DestinationRecordWrapped -import io.airbyte.cdk.message.MessageQueue import io.airbyte.cdk.message.MessageQueueSupplier +import io.airbyte.cdk.message.QueueReader import io.airbyte.cdk.message.SpilledRawMessagesLocalFile import io.airbyte.cdk.message.StreamCompleteWrapped import io.airbyte.cdk.message.StreamRecordWrapped @@ -39,7 +39,7 @@ interface SpillToDiskTask : StreamTask class DefaultSpillToDiskTask( private val config: DestinationConfiguration, private val tmpFileProvider: TempFileProvider, - private val queue: MessageQueue>, + private val queue: QueueReader>, private val flushStrategy: FlushStrategy, override val stream: DestinationStream, private val launcher: DestinationTaskLauncher, diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt index 2eb14ebc712ea..6b282437d35cd 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt @@ -7,13 +7,11 @@ package io.airbyte.cdk.task import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.file.TimeProvider +import io.airbyte.cdk.message.ChannelMessageQueue +import io.airbyte.cdk.message.QueueWriter import io.airbyte.cdk.state.CheckpointManager -import io.airbyte.cdk.state.EventConsumer -import io.airbyte.cdk.state.EventProducer -import io.micronaut.context.annotation.Prototype import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -import kotlinx.coroutines.delay interface TimedForcedCheckpointFlushTask : SyncTask @@ -21,7 +19,7 @@ class DefaultTimedForcedCheckpointFlushTask( private val delayMs: Long, private val cadenceMs: Long, private val checkpointManager: CheckpointManager, - private val eventProducer: EventProducer, + private val eventQueue: QueueWriter, private val timeProvider: TimeProvider, private val taskLauncher: DestinationTaskLauncher ) : TimedForcedCheckpointFlushTask { @@ -42,7 +40,7 @@ class DefaultTimedForcedCheckpointFlushTask( // If the max time has elapsed, emit a force flush event with provided next checkpoint // indexes val nextIndexes = checkpointManager.getNextCheckpointIndexes() - eventProducer.produce(ForceFlushEvent(nextIndexes)) + eventQueue.publish(ForceFlushEvent(nextIndexes)) taskLauncher.scheduleNextForceFlushAttempt(cadenceMs) } else { // Otherwise schedule the next attempt to run at {time of last flush + configured @@ -64,7 +62,7 @@ interface TimedForcedCheckpointFlushTaskFactory { class DefaultTimedForcedCheckpointFlushTaskFactory( private val config: DestinationConfiguration, private val checkpointManager: CheckpointManager, - private val eventProducer: EventProducer, + private val eventQueue: QueueWriter, private val timeProvider: TimeProvider ) : TimedForcedCheckpointFlushTaskFactory { override fun make( @@ -75,7 +73,7 @@ class DefaultTimedForcedCheckpointFlushTaskFactory( delayMs ?: config.maxCheckpointFlushTimeMs, config.maxCheckpointFlushTimeMs, checkpointManager, - eventProducer, + eventQueue, timeProvider, taskLauncher ) @@ -84,9 +82,6 @@ class DefaultTimedForcedCheckpointFlushTaskFactory( data class ForceFlushEvent(val indexes: Map) -@Singleton @Secondary class DefaultForceFlushEventProducer : EventProducer() - -@Prototype +@Singleton @Secondary -class DefaultForceFlushEventConsumer(private val eventProducer: EventProducer) : - EventConsumer(eventProducer) +class DefaultForceFlushEventMessageQueue : ChannelMessageQueue() diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt index 58313422c0398..9cef70db15f16 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt @@ -8,6 +8,7 @@ import com.google.common.collect.Range import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.MockDestinationCatalogFactory import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.message.ChannelMessageQueue import io.airbyte.cdk.task.ForceFlushEvent import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires @@ -30,7 +31,7 @@ class DefaultFlushStrategyTest { @Singleton @Primary @Requires(env = ["FlushStrategyTest"]) - class MockForceFlushEventProducer : EventProducer() + class MockForceFlushEventQueue : ChannelMessageQueue() @Test fun testFlushByByteSize(flushStrategy: DefaultFlushStrategy, config: DestinationConfiguration) = @@ -50,7 +51,7 @@ class DefaultFlushStrategyTest { fun testFlushByIndex( flushStrategy: DefaultFlushStrategy, config: DestinationConfiguration, - forceFlushEventProducer: MockForceFlushEventProducer + forceFlushEventProducer: MockForceFlushEventQueue ) = runTest { // Ensure the size trigger is not a factor val insufficientSize = config.recordBatchSizeBytes - 1L @@ -60,7 +61,7 @@ class DefaultFlushStrategyTest { "Should not flush even with whole range if no event" ) - forceFlushEventProducer.produce(ForceFlushEvent(mapOf(stream1.descriptor to 42L))) + forceFlushEventProducer.publish(ForceFlushEvent(mapOf(stream1.descriptor to 42L))) Assertions.assertFalse( flushStrategy.shouldFlush(stream1, Range.closed(0, 41), insufficientSize), "Should not flush if index is not in range" @@ -74,7 +75,7 @@ class DefaultFlushStrategyTest { flushStrategy.shouldFlush(stream2, Range.closed(0, 42), insufficientSize), "Should not flush other streams" ) - forceFlushEventProducer.produce(ForceFlushEvent(mapOf(stream2.descriptor to 200L))) + forceFlushEventProducer.publish(ForceFlushEvent(mapOf(stream2.descriptor to 200L))) Assertions.assertTrue( flushStrategy.shouldFlush(stream2, Range.closed(0, 200), insufficientSize), "(Unless they also have flush points)" @@ -89,7 +90,7 @@ class DefaultFlushStrategyTest { "Should not flush if index has been passed" ) - forceFlushEventProducer.produce(ForceFlushEvent(mapOf(stream1.descriptor to 100L))) + forceFlushEventProducer.publish(ForceFlushEvent(mapOf(stream1.descriptor to 100L))) Assertions.assertFalse( flushStrategy.shouldFlush(stream1, Range.closed(0, 42), insufficientSize), "New events indexes should invalidate old ones" diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt index bd729b000698a..6a1af4dcf5e05 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt @@ -7,7 +7,7 @@ package io.airbyte.cdk.task import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.file.MockTimeProvider -import io.airbyte.cdk.state.EventConsumer +import io.airbyte.cdk.message.QueueReader import io.airbyte.cdk.state.MockCheckpointManager import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject @@ -32,7 +32,7 @@ class TimedForcedCheckpointFlushTaskTest { @Inject lateinit var timeProvider: MockTimeProvider @Inject lateinit var checkpointManager: MockCheckpointManager @Inject lateinit var config: DestinationConfiguration - @Inject lateinit var eventConsumer: EventConsumer + @Inject lateinit var queueReader: QueueReader @Test fun testTaskWillNotFlushIfTimeNotElapsed() = runTest { @@ -52,10 +52,7 @@ class TimedForcedCheckpointFlushTaskTest { checkpointManager.flushedAtMs, "task tried to flush" ) - Assertions.assertNull( - eventConsumer.consumeMaybe(), - "task did not produce a force flush event" - ) + Assertions.assertNull(queueReader.poll(), "task did not produce a force flush event") val mockTimeSinceLastFlush = timeProvider.currentTimeMillis() - mockLastFlushTime val nextRun = config.maxCheckpointFlushTimeMs - mockTimeSinceLastFlush Assertions.assertEquals( @@ -86,7 +83,7 @@ class TimedForcedCheckpointFlushTaskTest { checkpointManager.flushedAtMs, "task tried to flush" ) - val flushEvent = eventConsumer.consumeMaybe() + val flushEvent = queueReader.poll() Assertions.assertEquals( expectedMap, flushEvent?.indexes, From 3982fa3dcd803d98493ffb29f3fe6e6965cc64d6 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Mon, 7 Oct 2024 13:11:46 -0700 Subject: [PATCH 169/379] Bulk Load CDK Stream Incomplete Prefactor 5: InputConsumer to Task (#46532) --- .../airbyte/cdk/message/MessageQueueWriter.kt | 143 ------------ .../io/airbyte/cdk/state/MemoryManager.kt | 2 +- .../cdk/task/DestinationTaskLauncher.kt | 7 + .../io/airbyte/cdk/task/InputConsumerTask.kt | 210 ++++++++++++++++++ .../kotlin/io/airbyte/cdk/task/TaskRunner.kt | 5 +- .../airbyte/cdk/task/UpdateCheckpointsTask.kt | 6 +- .../io/airbyte/cdk/write/InputConsumer.kt | 64 ------ .../io/airbyte/cdk/write/WriteOperation.kt | 6 +- .../cdk/task/DestinationTaskLauncherTest.kt | 20 +- .../InputConsumerTaskTest.kt} | 93 ++++++-- .../ReservingDeserializingInputFlowTest.kt | 111 +++++++++ .../io/airbyte/cdk/write/InputConsumerTest.kt | 87 -------- 12 files changed, 432 insertions(+), 322 deletions(-) delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/InputConsumer.kt rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{message/DestinationMessageQueueWriterTest.kt => task/InputConsumerTaskTest.kt} (68%) create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ReservingDeserializingInputFlowTest.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/write/InputConsumerTest.kt diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt deleted file mode 100644 index 87ed536aca08a..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueueWriter.kt +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.message - -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.state.MemoryManager -import io.airbyte.cdk.state.Reserved -import io.airbyte.cdk.state.SyncManager -import jakarta.inject.Singleton -import kotlinx.coroutines.runBlocking - -/** A publishing interface for writing messages to a message queue. */ -interface MessageQueueWriter { - suspend fun publish(message: T, sizeBytes: Long) -} - -/** - * Routes @[DestinationStreamAffinedMessage]s by stream to the appropriate channel and @ - * [CheckpointMessage]s to the state manager. - * - * TODO: Handle other message types. - */ -@SuppressFBWarnings( - "NP_NONNULL_PARAM_VIOLATION", - justification = "message is guaranteed to be non-null by Kotlin's type system" -) -@Singleton -class DestinationMessageQueueWriter( - private val config: DestinationConfiguration, - private val catalog: DestinationCatalog, - private val recordQueueSupplier: - MessageQueueSupplier>, - private val checkpointQueue: QueueWriter>, - private val syncManager: SyncManager, - systemMemoryManager: MemoryManager -) : MessageQueueWriter { - private val queueReservation = runBlocking { - systemMemoryManager.reserveRatio(config.maxMessageQueueMemoryUsageRatio, this) - } - private val memoryManager = queueReservation.getReservationManager() - - private suspend fun reserve(sized: T) = - memoryManager.reserveBlocking( - (sized.sizeBytes * config.estimatedRecordMemoryOverheadRatio).toLong(), - sized - ) - - /** - * Deserialize and route the message to the appropriate channel. - * - * NOTE: Not thread-safe! Only a single writer should publish to the queue. - */ - override suspend fun publish(message: DestinationMessage, sizeBytes: Long) { - when (message) { - /* If the input message represents a record. */ - is DestinationStreamAffinedMessage -> { - val manager = syncManager.getStreamManager(message.stream) - when (message) { - /* If a data record */ - is DestinationRecord -> { - val wrapped = - StreamRecordWrapped( - index = manager.countRecordIn(), - sizeBytes = sizeBytes, - record = message - ) - recordQueueSupplier.get(message.stream).publish(reserve(wrapped)) - } - - /* If an end-of-stream marker. */ - is DestinationStreamComplete, - is DestinationStreamIncomplete -> { - val wrapped = StreamCompleteWrapped(index = manager.markEndOfStream()) - val queue = recordQueueSupplier.get(message.stream) - queue.publish(memoryManager.reserveBlocking(0L, wrapped)) - queue.close() - if ( - catalog.streams.all { - syncManager.getStreamManager(it.descriptor).endOfStreamRead() - } - ) { - checkpointQueue.close() - } - } - } - } - is CheckpointMessage -> { - when (message) { - /** - * For a stream state message, mark the checkpoint and add the message with - * index and count to the state manager. Also, add the count to the destination - * stats. - */ - is StreamCheckpoint -> { - val stream = message.checkpoint.stream - val manager = syncManager.getStreamManager(stream) - val (currentIndex, countSinceLast) = manager.markCheckpoint() - val messageWithCount = - message.withDestinationStats(CheckpointMessage.Stats(countSinceLast)) - checkpointQueue.publish( - reserve( - StreamCheckpointWrapped( - sizeBytes, - stream, - currentIndex, - messageWithCount - ) - ) - ) - } - /** - * For a global state message, collect the index per stream, but add the total - * count to the destination stats. - */ - is GlobalCheckpoint -> { - val streamWithIndexAndCount = - catalog.streams.map { stream -> - val manager = syncManager.getStreamManager(stream.descriptor) - val (currentIndex, countSinceLast) = manager.markCheckpoint() - Triple(stream, currentIndex, countSinceLast) - } - val totalCount = streamWithIndexAndCount.sumOf { it.third } - val messageWithCount = - message.withDestinationStats(CheckpointMessage.Stats(totalCount)) - val streamIndexes = - streamWithIndexAndCount.map { it.first.descriptor to it.second } - checkpointQueue.publish( - reserve( - GlobalCheckpointWrapped(sizeBytes, streamIndexes, messageWithCount) - ) - ) - } - } - } - is Undefined -> {} // Do nothing - } - } -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt index 44006c70dd31c..f3c40acf1433d 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt @@ -33,7 +33,7 @@ class Reserved( fun getReservationManager(): MemoryManager = MemoryManager(bytesReserved) - fun map(f: (T) -> U): Reserved = Reserved(memoryManager, bytesReserved, f(value)) + fun replace(value: U): Reserved = Reserved(memoryManager, bytesReserved, value) override suspend fun close() { release() diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt index ab8527990a5a7..40768d9204757 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt @@ -88,6 +88,7 @@ class DefaultDestinationTaskLauncher( private val catalog: DestinationCatalog, private val syncManager: SyncManager, override val taskRunner: TaskRunner, + private val inputConsumerTask: InputConsumerTask, private val setupTaskFactory: SetupTaskFactory, private val openStreamTaskFactory: OpenStreamTaskFactory, private val spillToDiskTaskFactory: SpillToDiskTaskFactory, @@ -109,6 +110,10 @@ class DefaultDestinationTaskLauncher( } override suspend fun start() { + // Start the input consumer ASAP + log.info { "Starting input consumer task" } + enqueue(inputConsumerTask) + // Launch the client interface setup task log.info { "Starting startup task" } val setupTask = setupTaskFactory.make(this) @@ -120,6 +125,8 @@ class DefaultDestinationTaskLauncher( val spillTask = spillToDiskTaskFactory.make(this, stream) enqueue(spillTask) } + + // Start the timed force flush task val forceFlushTask = timedFlushTaskFactory.make(this) enqueue(forceFlushTask) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt new file mode 100644 index 0000000000000..fd370e2f196af --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings +import io.airbyte.cdk.command.DestinationCatalog +import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.message.CheckpointMessage +import io.airbyte.cdk.message.CheckpointMessageWrapped +import io.airbyte.cdk.message.Deserializer +import io.airbyte.cdk.message.DestinationMessage +import io.airbyte.cdk.message.DestinationRecord +import io.airbyte.cdk.message.DestinationRecordWrapped +import io.airbyte.cdk.message.DestinationStreamAffinedMessage +import io.airbyte.cdk.message.DestinationStreamComplete +import io.airbyte.cdk.message.DestinationStreamIncomplete +import io.airbyte.cdk.message.GlobalCheckpoint +import io.airbyte.cdk.message.GlobalCheckpointWrapped +import io.airbyte.cdk.message.MessageQueueSupplier +import io.airbyte.cdk.message.QueueWriter +import io.airbyte.cdk.message.StreamCheckpoint +import io.airbyte.cdk.message.StreamCheckpointWrapped +import io.airbyte.cdk.message.StreamCompleteWrapped +import io.airbyte.cdk.message.StreamRecordWrapped +import io.airbyte.cdk.message.Undefined +import io.airbyte.cdk.state.MemoryManager +import io.airbyte.cdk.state.Reserved +import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.util.use +import io.github.oshai.kotlinlogging.KotlinLogging +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton +import java.io.InputStream +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.FlowCollector + +interface InputConsumerTask : SyncTask + +/** + * Routes @[DestinationStreamAffinedMessage]s by stream to the appropriate channel and @ + * [CheckpointMessage]s to the state manager. + * + * TODO: Handle other message types. + */ +@SuppressFBWarnings( + "NP_NONNULL_PARAM_VIOLATION", + justification = "message is guaranteed to be non-null by Kotlin's type system" +) +@Singleton +@Secondary +class DefaultInputConsumerTask( + private val catalog: DestinationCatalog, + private val inputFlow: SizedInputFlow>, + private val recordQueueSupplier: + MessageQueueSupplier>, + private val checkpointQueue: QueueWriter>, + private val syncManager: SyncManager, +) : InputConsumerTask { + private val log = KotlinLogging.logger {} + + private suspend fun handleRecord( + reserved: Reserved, + sizeBytes: Long + ) { + val stream = reserved.value.stream + val manager = syncManager.getStreamManager(stream) + val queue = recordQueueSupplier.get(stream) + when (val message = reserved.value) { + is DestinationRecord -> { + val wrapped = + StreamRecordWrapped( + index = manager.countRecordIn(), + sizeBytes = sizeBytes, + record = message + ) + queue.publish(reserved.replace(wrapped)) + } + is DestinationStreamComplete, + is DestinationStreamIncomplete -> { + reserved.release() // safe because multiple calls conflate + val wrapped = StreamCompleteWrapped(index = manager.markEndOfStream()) + queue.publish(reserved.replace(wrapped)) + queue.close() + } + } + } + + private suspend fun handleCheckpoint( + reservation: Reserved, + sizeBytes: Long + ) { + when (val checkpoint = reservation.value) { + /** + * For a stream state message, mark the checkpoint and add the message with index and + * count to the state manager. Also, add the count to the destination stats. + */ + is StreamCheckpoint -> { + val stream = checkpoint.checkpoint.stream + val manager = syncManager.getStreamManager(stream) + val (currentIndex, countSinceLast) = manager.markCheckpoint() + val messageWithCount = + checkpoint.withDestinationStats(CheckpointMessage.Stats(countSinceLast)) + checkpointQueue.publish( + reservation.replace( + StreamCheckpointWrapped(sizeBytes, stream, currentIndex, messageWithCount) + ) + ) + } + + /** + * For a global state message, collect the index per stream, but add the total count to + * the destination stats. + */ + is GlobalCheckpoint -> { + val streamWithIndexAndCount = + catalog.streams.map { stream -> + val manager = syncManager.getStreamManager(stream.descriptor) + val (currentIndex, countSinceLast) = manager.markCheckpoint() + Triple(stream, currentIndex, countSinceLast) + } + val totalCount = streamWithIndexAndCount.sumOf { it.third } + val messageWithCount = + checkpoint.withDestinationStats(CheckpointMessage.Stats(totalCount)) + val streamIndexes = streamWithIndexAndCount.map { it.first.descriptor to it.second } + checkpointQueue.publish( + reservation.replace( + GlobalCheckpointWrapped(sizeBytes, streamIndexes, messageWithCount) + ) + ) + } + } + } + + /** + * Deserialize and route the message to the appropriate channel. + * + * NOTE: Not thread-safe! Only a single writer should publish to the queue. + */ + override suspend fun execute() { + log.info { "Starting consuming messages from the input flow" } + try { + checkpointQueue.use { + inputFlow.collect { (sizeBytes, reserved) -> + when (val message = reserved.value) { + /* If the input message represents a record. */ + is DestinationStreamAffinedMessage -> + handleRecord(reserved.replace(message), sizeBytes) + is CheckpointMessage -> + handleCheckpoint(reserved.replace(message), sizeBytes) + is Undefined -> { + log.warn { "Unhandled message: $message" } + } + } + } + } + } finally { + log.info { "Closing record queues" } + catalog.streams.forEach { recordQueueSupplier.get(it.descriptor).close() } + } + } +} + +interface SizedInputFlow : Flow> + +abstract class ReservingDeserializingInputFlow : SizedInputFlow> { + val log = KotlinLogging.logger {} + + abstract val config: DestinationConfiguration + abstract val deserializer: Deserializer + abstract val memoryManager: MemoryManager + abstract val inputStream: InputStream + + override suspend fun collect(collector: FlowCollector>>) { + val reservation = memoryManager.reserveRatio(config.maxMessageQueueMemoryUsageRatio, this) + val reservationManager = reservation.getReservationManager() + + log.info { "Reserved ${reservation.bytesReserved/1024}mb memory for input processing" } + + reservation.use { _ -> + inputStream.bufferedReader().lineSequence().forEachIndexed { index, line -> + if (line.isEmpty()) { + return@forEachIndexed + } + + val lineSize = line.length.toLong() + val estimatedSize = lineSize * config.estimatedRecordMemoryOverheadRatio + val reserved = reservationManager.reserveBlocking(estimatedSize.toLong(), line) + val message = deserializer.deserialize(line) + collector.emit(Pair(lineSize, reserved.replace(message))) + + if (index % 10_000 == 0) { + log.info { "Processed $index lines" } + } + } + } + + log.info { "Finished processing input" } + } +} + +@Singleton +class DefaultInputFlow( + override val config: DestinationConfiguration, + override val deserializer: Deserializer, + override val memoryManager: MemoryManager, + override val inputStream: InputStream +) : ReservingDeserializingInputFlow() diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt index 8ae2c9376a5eb..dd628d724bb08 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt @@ -6,6 +6,7 @@ package io.airbyte.cdk.task import io.github.oshai.kotlinlogging.KotlinLogging import jakarta.inject.Singleton +import kotlin.time.measureTime import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.consumeAsFlow @@ -34,8 +35,8 @@ class TaskRunner { queue.consumeAsFlow().collect { task -> launch { log.info { "Executing task: $task" } - task.execute() - log.info { "Task completed: $task" } + val elapsed = measureTime { task.execute() } + log.info { "Task completed: $task after ${elapsed.inWholeMilliseconds}ms" } } } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt index 74020d42c2fb3..bebcdaa1ebb23 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt @@ -21,7 +21,7 @@ interface UpdateCheckpointsTask : SyncTask @Singleton @Secondary class DefaultUpdateCheckpointsTask( - val checkpointManager: + private val checkpointManager: CheckpointManager>, private val checkpointMessageQueue: MessageQueue> ) : UpdateCheckpointsTask { @@ -32,11 +32,11 @@ class DefaultUpdateCheckpointsTask( when (it.value) { is StreamCheckpointWrapped -> { val (_, stream, index, message) = it.value - checkpointManager.addStreamCheckpoint(stream, index, it.map { message }) + checkpointManager.addStreamCheckpoint(stream, index, it.replace(message)) } is GlobalCheckpointWrapped -> { val (_, streamIndexes, message) = it.value - checkpointManager.addGlobalCheckpoint(streamIndexes, it.map { message }) + checkpointManager.addGlobalCheckpoint(streamIndexes, it.replace(message)) } } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/InputConsumer.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/InputConsumer.kt deleted file mode 100644 index 898d9889692ff..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/InputConsumer.kt +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.write - -import io.airbyte.cdk.message.Deserializer -import io.airbyte.cdk.message.DestinationMessage -import io.airbyte.cdk.message.MessageQueueWriter -import io.github.oshai.kotlinlogging.KLogger -import io.github.oshai.kotlinlogging.KotlinLogging -import jakarta.inject.Singleton -import java.io.InputStream -import java.nio.charset.StandardCharsets -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext - -/** Runnable input consumer. */ -interface InputConsumer { - suspend fun run() -} - -/** Input consumer that deserializes and publishes to a queue. */ -interface DeserializingInputStreamConsumer : InputConsumer { - val log: KLogger - val inputStream: InputStream - val deserializer: Deserializer - val messageQueue: MessageQueueWriter - - override suspend fun run() = - withContext(Dispatchers.IO) { - val log = KotlinLogging.logger {} - - log.info { "Starting consuming messages from the input stream" } - - var index = 0L - var bytes = 0L - inputStream.bufferedReader(StandardCharsets.UTF_8).lineSequence().forEach { line -> - val lineSize = line.length.toLong() - if (lineSize > 0L) { - val deserialized = deserializer.deserialize(line) - messageQueue.publish(deserialized, lineSize) - - bytes += lineSize - if (++index % 10_000L == 0L) { - log.info { - "Consumed $index messages (${bytes / 1024L}mb) from the input stream" - } - } - } - } - - log.info { "Finished consuming $index messages (${bytes}b) from the input stream" } - } -} - -@Singleton -class DefaultInputConsumer( - override val inputStream: InputStream, - override val deserializer: Deserializer, - override val messageQueue: MessageQueueWriter -) : DeserializingInputStreamConsumer { - override val log = KotlinLogging.logger {} -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt index 969bca6ba0df1..d0da8ca6c0453 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt @@ -5,7 +5,6 @@ package io.airbyte.cdk.write import io.airbyte.cdk.Operation -import io.airbyte.cdk.message.DestinationMessage import io.airbyte.cdk.output.ExceptionHandler import io.airbyte.cdk.output.OutputConsumer import io.airbyte.cdk.state.SyncFailure @@ -30,7 +29,6 @@ import kotlinx.coroutines.runBlocking @Singleton @Requires(property = Operation.PROPERTY, value = "write") class WriteOperation( - private val inputConsumer: InputConsumer, private val taskLauncher: TaskLauncher, private val taskRunner: TaskRunner, private val syncManager: SyncManager, @@ -42,8 +40,6 @@ class WriteOperation( override fun execute() { runCatching { runBlocking { - launch { inputConsumer.run() } - launch { taskLauncher.start() } launch { taskRunner.run() } @@ -70,7 +66,7 @@ class WriteOperation( /** Override to provide a custom input stream. */ @Factory -class InputStreamFactory { +class InputStreamProvider { @Singleton @Secondary @Requires(property = Operation.PROPERTY, value = "write") diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt index 62dacbf7066fd..aa2fa1effb177 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt @@ -46,6 +46,7 @@ class DestinationTaskLauncherTest { @Inject lateinit var syncManager: SyncManager @Inject lateinit var mockExceptionHandler: MockExceptionHandler + @Inject lateinit var mockInputConsumerTask: MockInputConsumerTask @Inject lateinit var mockSetupTaskFactory: MockSetupTaskFactory @Inject lateinit var mockSpillToDiskTaskFactory: MockSpillToDiskTaskFactory @Inject lateinit var mockOpenStreamTaskFactory: MockOpenStreamTaskFactory @@ -57,6 +58,17 @@ class DestinationTaskLauncherTest { @Inject lateinit var forceFlushTaskFactory: MockForceFlushTaskFactory @Inject lateinit var updateCheckpointsTask: MockUpdateCheckpointsTask + @Singleton + @Primary + @Requires(env = ["DestinationTaskLauncherTest"]) + class MockInputConsumerTask : InputConsumerTask { + val hasRun: Channel = Channel(Channel.UNLIMITED) + + override suspend fun execute() { + hasRun.send(true) + } + } + @Singleton @Replaces(DefaultSetupTaskFactory::class) @Requires(env = ["DestinationTaskLauncherTest"]) @@ -256,8 +268,14 @@ class DestinationTaskLauncherTest { fun testStart() = runTest { launch { taskRunner.run() } - // Verify that setup has run taskLauncher.start() + + Assertions.assertTrue( + mockInputConsumerTask.hasRun.receive(), + "input consumer task was started" + ) + + // Verify that setup has run mockSetupTaskFactory.hasRun.receive() // Verify that spill to disk ran for each stream diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt similarity index 68% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt index 5f6906bbb03f5..c16924e2179c8 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageQueueWriterTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.message +package io.airbyte.cdk.task import com.fasterxml.jackson.databind.node.JsonNodeFactory import io.airbyte.cdk.command.DestinationConfiguration @@ -10,13 +10,35 @@ import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 import io.airbyte.cdk.data.NullValue +import io.airbyte.cdk.message.CheckpointMessage +import io.airbyte.cdk.message.CheckpointMessageWrapped +import io.airbyte.cdk.message.DestinationMessage +import io.airbyte.cdk.message.DestinationRecord +import io.airbyte.cdk.message.DestinationRecordWrapped +import io.airbyte.cdk.message.DestinationStreamComplete +import io.airbyte.cdk.message.GlobalCheckpoint +import io.airbyte.cdk.message.GlobalCheckpointWrapped +import io.airbyte.cdk.message.MessageQueue +import io.airbyte.cdk.message.MessageQueueSupplier +import io.airbyte.cdk.message.Sized +import io.airbyte.cdk.message.StreamCheckpoint +import io.airbyte.cdk.message.StreamCheckpointWrapped +import io.airbyte.cdk.message.StreamCompleteWrapped +import io.airbyte.cdk.message.StreamRecordWrapped +import io.airbyte.cdk.state.MemoryManager import io.airbyte.cdk.state.Reserved import io.airbyte.cdk.state.SyncManager import io.airbyte.cdk.util.takeUntilInclusive +import io.micronaut.context.annotation.Primary +import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject +import jakarta.inject.Singleton +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.flow.FlowCollector import kotlinx.coroutines.flow.take import kotlinx.coroutines.flow.toList +import kotlinx.coroutines.launch import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test @@ -25,19 +47,45 @@ import org.junit.jupiter.api.Test rebuildContext = true, environments = [ - "DestinationMessageQueueWriterTest", + "InputConsumerTaskTest", "MockDestinationConfiguration", "MockDestinationCatalog", ] ) -class DestinationMessageQueueWriterTest { +class InputConsumerTaskTest { @Inject lateinit var config: DestinationConfiguration - @Inject lateinit var writer: DestinationMessageQueueWriter + @Inject lateinit var task: InputConsumerTask @Inject lateinit var recordQueueSupplier: MessageQueueSupplier> @Inject lateinit var checkpointQueue: MessageQueue> @Inject lateinit var syncManager: SyncManager + @Inject lateinit var mockInputFlow: MockInputFlow + + @Singleton + @Primary + @Requires(env = ["InputConsumerTaskTest"]) + class MockInputFlow(val memoryManager: MemoryManager) : + SizedInputFlow> { + private val messages = Channel>>(Channel.UNLIMITED) + val initialMemory = memoryManager.remainingMemoryBytes + + override suspend fun collect( + collector: FlowCollector>> + ) { + for (message in messages) { + collector.emit(message) + } + } + + suspend fun addMessage(message: DestinationMessage, size: Long = 0L) { + messages.send(Pair(size, memoryManager.reserveBlocking(1, message))) + } + + suspend fun stop() { + messages.close() + } + } private fun makeRecord(stream: DestinationStream, record: String): DestinationRecord { return DestinationRecord( @@ -85,7 +133,8 @@ class DestinationMessageQueueWriterTest { val manager1 = syncManager.getStreamManager(stream1.descriptor) val manager2 = syncManager.getStreamManager(stream2.descriptor) - (0 until 10).forEach { writer.publish(makeRecord(stream1, "test${it}"), it * 2L) } + (0 until 10).forEach { mockInputFlow.addMessage(makeRecord(stream1, "test${it}"), it * 2L) } + launch { task.execute() } val messages1 = queue1 @@ -102,10 +151,7 @@ class DestinationMessageQueueWriterTest { } Assertions.assertEquals(expectedRecords, messages1.map { it.value }) - Assertions.assertEquals( - expectedRecords.map { it.bytesReserved() }, - messages1.map { it.bytesReserved } - ) + Assertions.assertEquals(expectedRecords.map { _ -> 1L }, messages1.map { it.bytesReserved }) Assertions.assertEquals(10L, manager1.recordCount()) queue1.close() Assertions.assertEquals(emptyList(), queue1.consume().toList()) @@ -113,6 +159,7 @@ class DestinationMessageQueueWriterTest { queue2.close() Assertions.assertEquals(emptyList(), queue2.consume().toList()) Assertions.assertEquals(0L, manager2.recordCount()) + mockInputFlow.stop() } @Test @@ -123,10 +170,13 @@ class DestinationMessageQueueWriterTest { val manager1 = syncManager.getStreamManager(stream1.descriptor) val manager2 = syncManager.getStreamManager(stream2.descriptor) - (0 until 10).forEach { _ -> writer.publish(makeRecord(stream1, "whatever"), 0L) } + (0 until 10).forEach { _ -> mockInputFlow.addMessage(makeRecord(stream1, "whatever"), 0L) } - writer.publish(makeRecord(stream2, "test"), 1L) - writer.publish(makeStreamComplete(stream1), 0L) + mockInputFlow.addMessage(makeRecord(stream2, "test"), 1L) + mockInputFlow.addMessage(makeStreamComplete(stream1), 0L) + val job = launch { task.execute() } + mockInputFlow.stop() + job.join() queue2.close() Assertions.assertEquals( listOf(StreamRecordWrapped(0, 1L, makeRecord(stream2, "test"))), @@ -141,6 +191,11 @@ class DestinationMessageQueueWriterTest { val messages1 = queue1.consume().toList() Assertions.assertEquals(11, messages1.size) Assertions.assertEquals(messages1[10].value, StreamCompleteWrapped(10)) + Assertions.assertEquals( + mockInputFlow.initialMemory - 11, + mockInputFlow.memoryManager.remainingMemoryBytes, + "1 byte per message should have been reserved, but the end-of-stream should have been released" + ) } @Test @@ -159,14 +214,16 @@ class DestinationMessageQueueWriterTest { TestEvent(stream1, 3, 18), ) + launch { task.execute() } batches.forEach { (stream, count, expectedCount) -> - repeat(count) { writer.publish(makeRecord(stream, "test"), 1L) } - writer.publish(makeStreamState(stream, count.toLong()), 0L) + repeat(count) { mockInputFlow.addMessage(makeRecord(stream, "test"), 1L) } + mockInputFlow.addMessage(makeStreamState(stream, count.toLong()), 0L) val state = checkpointQueue.consume().take(1).toList().first().value as StreamCheckpointWrapped Assertions.assertEquals(expectedCount, state.index) Assertions.assertEquals(count.toLong(), state.checkpoint.destinationStats?.recordCount) } + mockInputFlow.stop() } @Test @@ -191,13 +248,16 @@ class DestinationMessageQueueWriterTest { SendState(14, 8, 0), ) + launch { task.execute() } batches.forEach { event -> when (event) { is AddRecords -> { - repeat(event.count) { writer.publish(makeRecord(event.stream, "test"), 1L) } + repeat(event.count) { + mockInputFlow.addMessage(makeRecord(event.stream, "test"), 1L) + } } is SendState -> { - writer.publish(makeGlobalState(event.expectedStream1Count), 0L) + mockInputFlow.addMessage(makeGlobalState(event.expectedStream1Count), 0L) val state = checkpointQueue.consume().take(1).toList().first().value as GlobalCheckpointWrapped @@ -212,5 +272,6 @@ class DestinationMessageQueueWriterTest { } } } + mockInputFlow.stop() } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ReservingDeserializingInputFlowTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ReservingDeserializingInputFlowTest.kt new file mode 100644 index 0000000000000..7c3e143414bca --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ReservingDeserializingInputFlowTest.kt @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.message.Deserializer +import io.airbyte.cdk.state.MemoryManager +import io.micronaut.context.annotation.Primary +import io.micronaut.context.annotation.Requires +import io.micronaut.test.extensions.junit5.annotation.MicronautTest +import jakarta.inject.Inject +import jakarta.inject.Singleton +import java.io.InputStream +import java.util.stream.Stream +import kotlinx.coroutines.flow.toList +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.extension.ExtensionContext +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.ArgumentsProvider +import org.junit.jupiter.params.provider.ArgumentsSource + +@MicronautTest( + rebuildContext = true, + environments = + [ + "ReservingDeserializingInputFlowTest", + "MockDestinationCatalog", + "MockDestinationConfiguration" + ], +) +class ReservingDeserializingInputFlowTest { + @Inject lateinit var config: DestinationConfiguration + @Inject lateinit var inputFlow: ReservingDeserializingInputFlow + @Inject lateinit var inputStream: MockInputStream + + @Singleton + @Primary + @Requires(env = ["ReservingDeserializingInputFlowTest"]) + class MockInputFlow( + override val config: DestinationConfiguration, + override val inputStream: InputStream, + override val deserializer: Deserializer, + override val memoryManager: MemoryManager, + ) : ReservingDeserializingInputFlow() + + @Singleton + @Primary + @Requires(env = ["ReservingDeserializingInputFlowTest"]) + class MockDeserializer : Deserializer { + override fun deserialize(serialized: String): String { + return serialized.reversed() + "!" + } + } + + @Singleton + @Primary + @Requires(env = ["ReservingDeserializingInputFlowTest"]) + class MockInputStream : InputStream() { + val chars = mutableListOf() + + fun load(lines: List) { + lines.forEach { line -> + chars.addAll(line.toList()) + chars.add('\n') + } + } + + override fun read(): Int { + return if (chars.isEmpty()) { + -1 + } else { + chars.removeAt(0).code + } + } + } + + class InputConsumerTestArgumentsProvider : ArgumentsProvider { + override fun provideArguments(context: ExtensionContext): Stream { + return Stream.of( + Arguments.of(listOf("cat", "dog", "turtle")), + Arguments.of(listOf("", "109j321dcDASD", "2023", "1", "2", "3")) + ) + } + } + + @ParameterizedTest + @ArgumentsSource(InputConsumerTestArgumentsProvider::class) + fun testInputConsumer(testInput: List) = runTest { + inputStream.load(testInput) + val inputs = inputFlow.toList() + Assertions.assertEquals( + testInput.filter { it != "" }.map { it.reversed() + "!" }, + inputs.map { it.second.value }.toList() + ) + Assertions.assertEquals( + testInput.filter { it != "" }.map { it.length.toLong() }, + inputs.map { it.first }.toList() + ) + Assertions.assertEquals( + testInput + .filter { it != "" } + .map { (it.length.toLong() * config.estimatedRecordMemoryOverheadRatio).toLong() } + .toList(), + inputs.map { it.second.bytesReserved }.toList() + ) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/write/InputConsumerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/write/InputConsumerTest.kt deleted file mode 100644 index 2fa3113a1d617..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/write/InputConsumerTest.kt +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.write - -import io.airbyte.cdk.message.Deserializer -import io.airbyte.cdk.message.MessageQueueWriter -import io.github.oshai.kotlinlogging.KotlinLogging -import io.micronaut.context.annotation.Prototype -import io.micronaut.test.extensions.junit5.annotation.MicronautTest -import jakarta.inject.Inject -import jakarta.inject.Singleton -import java.util.stream.Stream -import kotlinx.coroutines.test.runTest -import org.junit.jupiter.api.Assertions -import org.junit.jupiter.api.extension.ExtensionContext -import org.junit.jupiter.params.ParameterizedTest -import org.junit.jupiter.params.provider.Arguments -import org.junit.jupiter.params.provider.ArgumentsProvider -import org.junit.jupiter.params.provider.ArgumentsSource - -@MicronautTest -class InputConsumerTest { - @Inject lateinit var consumerFactory: MockInputConsumerFactory - - @Singleton - class MockDeserializer : Deserializer { - override fun deserialize(serialized: String): String { - return serialized.reversed() + "!" - } - } - - @Prototype - class MockMessageQueueWriter : MessageQueueWriter { - val collectedStrings = mutableListOf() - val collectedSizes = mutableListOf() - - override suspend fun publish(message: String, sizeBytes: Long) { - collectedStrings.add(message) - collectedSizes.add(sizeBytes) - } - } - - @Prototype - class MockInputConsumerFactory( - val testDeserializer: Deserializer, - val testMessageQueue: MessageQueueWriter - ) { - fun make(testInput: List): InputConsumer { - return object : DeserializingInputStreamConsumer { - override val log = KotlinLogging.logger {} - override val inputStream = testInput.joinToString("\n").byteInputStream() - override val deserializer = testDeserializer - override val messageQueue = testMessageQueue - } - } - - fun getOutputCollector(): MockMessageQueueWriter { - return testMessageQueue as MockMessageQueueWriter - } - } - - class InputConsumerTestArgumentsProvider : ArgumentsProvider { - override fun provideArguments(context: ExtensionContext): Stream { - return Stream.of( - Arguments.of(listOf("cat", "dog", "turtle")), - Arguments.of(listOf("", "109j321dcDASD", "2023", "1", "2", "3")) - ) - } - } - - @ParameterizedTest - @ArgumentsSource(InputConsumerTestArgumentsProvider::class) - fun testInputConsumer(testInput: List) = runTest { - val consumer = consumerFactory.make(testInput) - consumer.run() - Assertions.assertEquals( - testInput.filter { it != "" }.map { it.reversed() + "!" }, - consumerFactory.getOutputCollector().collectedStrings - ) - Assertions.assertEquals( - testInput.filter { it != "" }.map { it.length.toLong() }, - consumerFactory.getOutputCollector().collectedSizes - ) - } -} From 9cf48d95739fd9b3e400fede9c38efbfec5dfbe6 Mon Sep 17 00:00:00 2001 From: Marius Posta Date: Mon, 7 Oct 2024 13:15:38 -0700 Subject: [PATCH 170/379] bulk-cdk-toolkit-extract-cdc: relax test assertions (#46555) --- .../io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt b/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt index fcb56e451f915..a0fa0aaa1779f 100644 --- a/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt +++ b/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionReaderTest.kt @@ -71,7 +71,7 @@ import org.testcontainers.utility.DockerImageName sealed class CdcPartitionReaderTest, C : AutoCloseable>( namespace: String?, val heartbeat: Duration = Duration.ofMillis(100), - val timeout: Duration = Duration.ofSeconds(3), + val timeout: Duration = Duration.ofSeconds(10), ) : CdcPartitionReaderDebeziumOperations { val stream = @@ -111,8 +111,8 @@ sealed class CdcPartitionReaderTest, C : AutoCloseable>( val p0: T = container.currentPosition() val r0: ReadResult = read(container.syntheticInput(), p0) Assertions.assertEquals(emptyList(), r0.records) - Assertions.assertEquals( - CdcPartitionReader.CloseReason.HEARTBEAT_OR_TOMBSTONE_REACHED_TARGET_POSITION, + Assertions.assertNotEquals( + CdcPartitionReader.CloseReason.RECORD_REACHED_TARGET_POSITION, r0.closeReason, ) @@ -145,7 +145,6 @@ sealed class CdcPartitionReaderTest, C : AutoCloseable>( val r1: ReadResult = read(input, p1) Assertions.assertEquals(insert + update, r1.records.take(insert.size + update.size)) Assertions.assertNotNull(r1.closeReason) - Assertions.assertNotEquals(CdcPartitionReader.CloseReason.TIMEOUT, r1.closeReason) val r2: ReadResult = read(input, p2) Assertions.assertEquals( From 8d9f18141890048614a11ef182c9226799dc90cd Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Mon, 7 Oct 2024 13:18:19 -0700 Subject: [PATCH 171/379] Bulk Load CDK: Stream Incomplete fails sync gracefully (#46533) --- .../io/airbyte/cdk/task/InputConsumerTask.kt | 5 +++-- .../airbyte/cdk/task/InputConsumerTaskTest.kt | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt index fd370e2f196af..711234118ae3d 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt @@ -78,13 +78,14 @@ class DefaultInputConsumerTask( ) queue.publish(reserved.replace(wrapped)) } - is DestinationStreamComplete, - is DestinationStreamIncomplete -> { + is DestinationStreamComplete -> { reserved.release() // safe because multiple calls conflate val wrapped = StreamCompleteWrapped(index = manager.markEndOfStream()) queue.publish(reserved.replace(wrapped)) queue.close() } + is DestinationStreamIncomplete -> + throw IllegalStateException("Stream $stream failed upstream, cannot continue.") } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt index c16924e2179c8..651de6f3166eb 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt @@ -16,11 +16,11 @@ import io.airbyte.cdk.message.DestinationMessage import io.airbyte.cdk.message.DestinationRecord import io.airbyte.cdk.message.DestinationRecordWrapped import io.airbyte.cdk.message.DestinationStreamComplete +import io.airbyte.cdk.message.DestinationStreamIncomplete import io.airbyte.cdk.message.GlobalCheckpoint import io.airbyte.cdk.message.GlobalCheckpointWrapped import io.airbyte.cdk.message.MessageQueue import io.airbyte.cdk.message.MessageQueueSupplier -import io.airbyte.cdk.message.Sized import io.airbyte.cdk.message.StreamCheckpoint import io.airbyte.cdk.message.StreamCheckpointWrapped import io.airbyte.cdk.message.StreamCompleteWrapped @@ -28,6 +28,7 @@ import io.airbyte.cdk.message.StreamRecordWrapped import io.airbyte.cdk.state.MemoryManager import io.airbyte.cdk.state.Reserved import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.test.util.CoroutineTestUtils import io.airbyte.cdk.util.takeUntilInclusive import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires @@ -101,6 +102,10 @@ class InputConsumerTaskTest { return DestinationStreamComplete(stream = stream.descriptor, emittedAtMs = 0) } + private fun makeStreamIncomplete(stream: DestinationStream): DestinationStreamIncomplete { + return DestinationStreamIncomplete(stream = stream.descriptor, emittedAtMs = 0) + } + private fun makeStreamState(stream: DestinationStream, recordCount: Long): CheckpointMessage { return StreamCheckpoint( checkpoint = @@ -121,10 +126,6 @@ class InputConsumerTaskTest { ) } - private fun Sized.bytesReserved(): Long { - return (sizeBytes * config.estimatedRecordMemoryOverheadRatio).toLong() - } - @Test fun testSendRecords() = runTest { val queue1 = recordQueueSupplier.get(stream1.descriptor) @@ -274,4 +275,12 @@ class InputConsumerTaskTest { } mockInputFlow.stop() } + + @Test + fun testStreamIncompleteThrows() = runTest { + mockInputFlow.addMessage(makeRecord(stream1, "test"), 1L) + mockInputFlow.addMessage(makeStreamIncomplete(stream1), 0L) + CoroutineTestUtils.assertThrows(IllegalStateException::class) { task.execute() } + mockInputFlow.stop() + } } From 41af374ef417a6bd64e793e8c2498e4440560718 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Mon, 7 Oct 2024 14:12:28 -0700 Subject: [PATCH 172/379] Bulk Load CDK: Better failure; task runner -> scope provider; timed flush loops (#46550) --- .../cdk/command/DestinationConfiguration.kt | 9 + .../io/airbyte/cdk/state/CheckpointManager.kt | 11 +- .../io/airbyte/cdk/state/FlushStrategy.kt | 2 +- .../io/airbyte/cdk/state/StreamManager.kt | 19 +- .../io/airbyte/cdk/state/SyncManager.kt | 3 - .../task/DestinationTaskExceptionHandler.kt | 148 +++++++++++++++ .../cdk/task/DestinationTaskLauncher.kt | 174 +++--------------- .../cdk/task/DestinationTaskScopeProvider.kt | 98 ++++++++++ .../io/airbyte/cdk/task/FailSyncTask.kt | 50 ----- .../main/kotlin/io/airbyte/cdk/task/Task.kt | 33 ++++ .../io/airbyte/cdk/task/TaskLauncher.kt | 26 --- .../kotlin/io/airbyte/cdk/task/TaskRunner.kt | 47 ----- .../task/TimedForcedCheckpointFlushTask.kt | 87 --------- .../task/{ => implementor}/CloseStreamTask.kt | 7 +- .../task/{ => implementor}/FailStreamTask.kt | 40 ++-- .../cdk/task/implementor/FailSyncTask.kt | 63 +++++++ .../task/{ => implementor}/OpenStreamTask.kt | 7 +- .../{ => implementor}/ProcessBatchTask.kt | 7 +- .../{ => implementor}/ProcessRecordsTask.kt | 49 +++-- .../cdk/task/{ => implementor}/SetupTask.kt | 7 +- .../task/{ => implementor}/TeardownTask.kt | 6 +- .../{ => internal}/FlushCheckpointsTask.kt | 6 +- .../task/{ => internal}/InputConsumerTask.kt | 6 +- .../task/{ => internal}/SpillToDiskTask.kt | 85 ++++----- .../TimedForcedCheckpointFlushTask.kt | 71 +++++++ .../{ => internal}/UpdateCheckpointsTask.kt | 3 +- .../io/airbyte/cdk/util/CoroutineUtils.kt | 4 + .../io/airbyte/cdk/write/WriteOperation.kt | 12 +- .../io/airbyte/cdk/file/MockTimeProvider.kt | 9 +- .../cdk/state/DefaultFlushStrategyTest.kt | 2 +- .../cdk/state/MockCheckpointManager.kt | 4 + ...=> DestinationTaskExceptionHandlerTest.kt} | 119 ++++++------ .../cdk/task/DestinationTaskLauncherTest.kt | 113 ++++++------ .../io/airbyte/cdk/task/MockScopeProvider.kt | 28 +++ .../io/airbyte/cdk/task/MockTaskLauncher.kt | 7 +- .../io/airbyte/cdk/task/TaskRunnerTest.kt | 94 ---------- .../ProcessRecordsTaskTest.kt | 3 +- .../{ => internal}/InputConsumerTaskTest.kt | 2 +- .../ReservingDeserializingInputFlowTest.kt | 2 +- .../{ => internal}/SpillToDiskTaskTest.kt | 6 +- .../TimedForcedCheckpointFlushTaskTest.kt | 55 +++--- 41 files changed, 785 insertions(+), 739 deletions(-) create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandler.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskScopeProvider.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailSyncTask.kt create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/Task.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskLauncher.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => implementor}/CloseStreamTask.kt (85%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => implementor}/FailStreamTask.kt (60%) create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailSyncTask.kt rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => implementor}/OpenStreamTask.kt (87%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => implementor}/ProcessBatchTask.kt (87%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => implementor}/ProcessRecordsTask.kt (68%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => implementor}/SetupTask.kt (82%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => implementor}/TeardownTask.kt (92%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => internal}/FlushCheckpointsTask.kt (82%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => internal}/InputConsumerTask.kt (98%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => internal}/SpillToDiskTask.kt (54%) create mode 100644 airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTask.kt rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/{ => internal}/UpdateCheckpointsTask.kt (95%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/{DestinationTaskLauncherExceptionHandlerTest.kt => DestinationTaskExceptionHandlerTest.kt} (63%) create mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockScopeProvider.kt delete mode 100644 airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TaskRunnerTest.kt rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/{ => implementor}/ProcessRecordsTaskTest.kt (98%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/{ => internal}/InputConsumerTaskTest.kt (99%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/{ => internal}/ReservingDeserializingInputFlowTest.kt (99%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/{ => internal}/SpillToDiskTaskTest.kt (97%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/{ => internal}/TimedForcedCheckpointFlushTaskTest.kt (63%) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt index c35cd06720446..d7cc1a4f38786 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt @@ -25,6 +25,15 @@ abstract class DestinationConfiguration : Configuration { */ open val maxCheckpointFlushTimeMs: Long = 15 * 60 * 1000L // 15 minutes + /** The max number of threads to use for implementor tasks (e.g. open, processBatch). */ + open val maxNumImplementorTaskThreads = 64 + + /** + * The amount of time given to implementor tasks (e.g. open, processBatch) to complete their + * current work after a failure. + */ + open val gracefulCancellationTimeoutMs: Long = 60 * 1000L // 1 minutes + /** * Micronaut factory which glues [ConfigurationSpecificationSupplier] and * [DestinationConfigurationFactory] together to produce a [DestinationConfiguration] singleton. diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt index 3015eefbb51cc..a338c440e0f90 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt @@ -20,10 +20,8 @@ import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.atomic.AtomicLong import java.util.concurrent.atomic.AtomicReference import java.util.function.Consumer -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import kotlinx.coroutines.withContext /** * Interface for checkpoint management. Should accept stream and global checkpoints, as well as @@ -197,11 +195,10 @@ abstract class StreamsCheckpointManager : CheckpointManager : TaskExceptionHandler { + suspend fun handleSyncFailure(e: Exception) + suspend fun handleStreamFailure(stream: DestinationStream, e: Exception) + suspend fun handleTeardownComplete() +} + +/** + * The exception handler takes over the workflow in the event of an exception. Its contract is + * * provide a wrapper that directs exceptions to the correct handler (by task type) + * * close the task runner when the cleanup workflow is complete + * + * Handling works as follows: + * * a failure in a sync-level task (setup/teardown) triggers a fail sync task + * * a failure in a stream task triggers a fails stream task THEN a fail sync task + * * the wrappers will skip tasks if the sync/stream has already failed + */ +@SuppressFBWarnings("NP_NONNULL_PARAM_VIOLATION", justification = "Kotlin async continuation") +@Singleton +@Secondary +class DefaultDestinationTaskExceptionHandler( + private val taskScopeProvider: TaskScopeProvider, + private val catalog: DestinationCatalog, + private val syncManager: SyncManager, + private val failStreamTaskFactory: FailStreamTaskFactory, + private val failSyncTaskFactory: FailSyncTaskFactory, +) : DestinationTaskExceptionHandler { + val log = KotlinLogging.logger {} + + inner class SyncTaskWrapper( + private val syncManager: SyncManager, + private val innerTask: SyncTask, + ) : SyncTask, InternalTask { + override suspend fun execute() { + if (!syncManager.isActive()) { + val result = syncManager.awaitSyncResult() + if (result is SyncSuccess) { + throw IllegalStateException( + "Task $innerTask run after sync has succeeded. This should not happen." + ) + } + log.info { "Sync terminated, skipping task $innerTask." } + + return + } + + try { + innerTask.execute() + } catch (e: Exception) { + handleSyncFailure(e) + } + } + + override fun toString(): String { + return "SyncTaskWrapper(innerTask=$innerTask)" + } + } + + inner class StreamTaskWrapper( + private val syncManager: SyncManager, + private val innerTask: StreamTask, + ) : SyncTask, InternalTask { + override suspend fun execute() { + // Stop dispatching tasks if the stream has been killed by a failure elsewhere. + // Specifically fail if the stream was marked succeeded: we should not be in this state. + val streamManager = syncManager.getStreamManager(innerTask.stream.descriptor) + if (!streamManager.isActive()) { + val result = streamManager.awaitStreamResult() + if (result is StreamSucceeded) { + throw IllegalStateException( + "Task $innerTask run after its stream ${innerTask.stream.descriptor} has succeeded. This should not happen." + ) + } + log.info { + "Stream ${innerTask.stream.descriptor} terminated with $result, skipping task $innerTask." + } + return + } + + try { + innerTask.execute() + } catch (e: Exception) { + handleStreamFailure(innerTask.stream, e) + } + } + + override fun toString(): String { + return "StreamTaskWrapper(innerTask=$innerTask)" + } + } + + override fun withExceptionHandling(task: LeveledTask): ScopedTask { + return when (task) { + is SyncTask -> SyncTaskWrapper(syncManager, task) + is StreamTask -> SyncTaskWrapper(syncManager, StreamTaskWrapper(syncManager, task)) + } + } + + override suspend fun handleSyncFailure(e: Exception) { + log.error { "Sync failed: $e: killing remaining streams" } + catalog.streams.forEach { + val task = failStreamTaskFactory.make(this, e, it, kill = true) + taskScopeProvider.launch(task) + } + val failSyncTask = failSyncTaskFactory.make(this, e) + taskScopeProvider.launch(failSyncTask) + } + + override suspend fun handleStreamFailure(stream: DestinationStream, e: Exception) { + log.error { "Caught failure in stream task: $e for ${stream.descriptor}, failing stream" } + val failStreamTask = failStreamTaskFactory.make(this, e, stream, kill = false) + taskScopeProvider.launch(failStreamTask) + } + + override suspend fun handleTeardownComplete() { + taskScopeProvider.close() + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt index 40768d9204757..df989c67c1eaa 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt @@ -10,23 +10,24 @@ import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.SpilledRawMessagesLocalFile -import io.airbyte.cdk.state.StreamSucceeded import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.state.SyncSuccess +import io.airbyte.cdk.task.implementor.CloseStreamTaskFactory +import io.airbyte.cdk.task.implementor.OpenStreamTaskFactory +import io.airbyte.cdk.task.implementor.ProcessBatchTaskFactory +import io.airbyte.cdk.task.implementor.ProcessRecordsTaskFactory +import io.airbyte.cdk.task.implementor.SetupTaskFactory +import io.airbyte.cdk.task.implementor.TeardownTaskFactory +import io.airbyte.cdk.task.internal.FlushCheckpointsTaskFactory +import io.airbyte.cdk.task.internal.InputConsumerTask +import io.airbyte.cdk.task.internal.SpillToDiskTaskFactory +import io.airbyte.cdk.task.internal.TimedForcedCheckpointFlushTask +import io.airbyte.cdk.task.internal.UpdateCheckpointsTask import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -sealed interface DestinationWriteTask : Task - -interface SyncTask : DestinationWriteTask - -interface StreamTask : DestinationWriteTask { - val stream: DestinationStream -} - interface DestinationTaskLauncher : TaskLauncher { suspend fun handleSetupComplete() suspend fun handleStreamStarted(stream: DestinationStream) @@ -38,14 +39,6 @@ interface DestinationTaskLauncher : TaskLauncher { suspend fun handleNewBatch(stream: DestinationStream, wrapped: BatchEnvelope<*>) suspend fun handleStreamClosed(stream: DestinationStream) suspend fun handleTeardownComplete() - suspend fun scheduleNextForceFlushAttempt(msFromNow: Long) -} - -interface DestinationTaskLauncherExceptionHandler : - TaskLauncherExceptionHandler { - suspend fun handleSyncFailure(e: Exception) - suspend fun handleStreamFailure(stream: DestinationStream, e: Exception) - suspend fun stop() } /** @@ -85,28 +78,36 @@ interface DestinationTaskLauncherExceptionHandler : justification = "arguments are guaranteed to be non-null by Kotlin's type system" ) class DefaultDestinationTaskLauncher( + private val taskScopeProvider: TaskScopeProvider, private val catalog: DestinationCatalog, private val syncManager: SyncManager, - override val taskRunner: TaskRunner, + + // Internal Tasks private val inputConsumerTask: InputConsumerTask, + private val spillToDiskTaskFactory: SpillToDiskTaskFactory, + + // Implementor Tasks private val setupTaskFactory: SetupTaskFactory, private val openStreamTaskFactory: OpenStreamTaskFactory, - private val spillToDiskTaskFactory: SpillToDiskTaskFactory, private val processRecordsTaskFactory: ProcessRecordsTaskFactory, private val processBatchTaskFactory: ProcessBatchTaskFactory, private val closeStreamTaskFactory: CloseStreamTaskFactory, private val teardownTaskFactory: TeardownTaskFactory, + + // Checkpoint Tasks private val flushCheckpointsTaskFactory: FlushCheckpointsTaskFactory, - private val timedFlushTaskFactory: TimedForcedCheckpointFlushTaskFactory, + private val timedFlushTask: TimedForcedCheckpointFlushTask, private val updateCheckpointsTask: UpdateCheckpointsTask, - private val exceptionHandler: TaskLauncherExceptionHandler + + // Exception handling + private val exceptionHandler: TaskExceptionHandler ) : DestinationTaskLauncher { private val log = KotlinLogging.logger {} private val batchUpdateLock = Mutex() - private suspend fun enqueue(task: DestinationWriteTask) { - taskRunner.enqueue(exceptionHandler.withExceptionHandling(task)) + private suspend fun enqueue(task: LeveledTask) { + taskScopeProvider.launch(exceptionHandler.withExceptionHandling(task)) } override suspend fun start() { @@ -126,11 +127,10 @@ class DefaultDestinationTaskLauncher( enqueue(spillTask) } - // Start the timed force flush task - val forceFlushTask = timedFlushTaskFactory.make(this) - enqueue(forceFlushTask) + log.info { "Starting timed flush task" } + enqueue(timedFlushTask) - // Start a single checkpoint updating task + log.info { "Starting checkpoint update task" } enqueue(updateCheckpointsTask) } @@ -205,124 +205,8 @@ class DefaultDestinationTaskLauncher( enqueue(teardownTaskFactory.make(this)) } - /** Called when a force flush is scheduled. */ - override suspend fun scheduleNextForceFlushAttempt(msFromNow: Long) { - val task = timedFlushTaskFactory.make(this, msFromNow) - enqueue(task) - } - /** Called exactly once when all streams are closed. */ override suspend fun handleTeardownComplete() { - stop() - } -} - -/** - * The exception handler takes over the workflow in the event of an exception. Its contract is - * * provide a wrapper that directs exceptions to the correct handler (by task type) - * * close the task runner when the cleanup workflow is complete - * - * Handling works as follows: - * * a failure in a sync-level task (setup/teardown) triggers a fail sync task - * * a failure in a stream task triggers a fails stream task THEN a fail sync task - * * the wrappers will skip tasks if the sync/stream has already failed - */ -@Singleton -@Secondary -class DefaultDestinationTaskLauncherExceptionHandler( - private val taskRunner: TaskRunner, - private val syncManager: SyncManager, - private val failStreamTaskFactory: FailStreamTaskFactory, - private val failSyncTaskFactory: FailSyncTaskFactory, -) : DestinationTaskLauncherExceptionHandler { - - class SyncTaskWrapper( - private val exceptionHandler: DestinationTaskLauncherExceptionHandler, - private val syncManager: SyncManager, - private val innerTask: SyncTask, - ) : Task { - val log = KotlinLogging.logger {} - - override suspend fun execute() { - if (!syncManager.isActive()) { - val result = syncManager.awaitSyncResult() - if (result is SyncSuccess) { - throw IllegalStateException( - "Task $innerTask run after sync has succeeded. This should not happen." - ) - } - log.info { "Sync terminated, skipping task $innerTask." } - - return - } - - try { - innerTask.execute() - } catch (e: Exception) { - exceptionHandler.handleSyncFailure(e) - } - } - - override fun toString(): String { - return "SyncTaskWrapper(innerTask=$innerTask)" - } - } - - class StreamTaskWrapper( - private val exceptionHandler: DestinationTaskLauncherExceptionHandler, - private val syncManager: SyncManager, - private val innerTask: StreamTask, - ) : SyncTask { - val log = KotlinLogging.logger {} - - override suspend fun execute() { - // Stop dispatching tasks if the stream has been killed by a failure elsewhere. - // Specifically fail if the stream was marked succeeded: we should not be in this state. - val streamManager = syncManager.getStreamManager(innerTask.stream.descriptor) - if (!streamManager.isActive()) { - val result = streamManager.awaitStreamResult() - if (result is StreamSucceeded) { - throw IllegalStateException( - "Task $innerTask run after its stream ${innerTask.stream.descriptor} has succeeded. This should not happen." - ) - } - log.info { - "Stream ${innerTask.stream.descriptor} terminated with $result, skipping task $innerTask." - } - return - } - - try { - innerTask.execute() - } catch (e: Exception) { - exceptionHandler.handleStreamFailure(innerTask.stream, e) - } - } - - override fun toString(): String { - return "StreamTaskWrapper(innerTask=$innerTask)" - } - } - - override fun withExceptionHandling(task: DestinationWriteTask): Task { - return when (task) { - is SyncTask -> SyncTaskWrapper(this, syncManager, task) - is StreamTask -> - SyncTaskWrapper(this, syncManager, StreamTaskWrapper(this, syncManager, task)) - } - } - - override suspend fun handleSyncFailure(e: Exception) { - val failSyncTask = failSyncTaskFactory.make(this, e) - taskRunner.enqueue(failSyncTask) - } - - override suspend fun handleStreamFailure(stream: DestinationStream, e: Exception) { - val failStreamTask = failStreamTaskFactory.make(this, e, stream) - taskRunner.enqueue(failStreamTask) - } - - override suspend fun stop() { - taskRunner.close() + taskScopeProvider.close() } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskScopeProvider.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskScopeProvider.kt new file mode 100644 index 0000000000000..39778e2642e82 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskScopeProvider.kt @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.command.DestinationConfiguration +import io.github.oshai.kotlinlogging.KotlinLogging +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton +import java.util.concurrent.Executors +import kotlin.system.measureTimeMillis +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.asCoroutineDispatcher +import kotlinx.coroutines.launch +import kotlinx.coroutines.supervisorScope +import kotlinx.coroutines.withTimeoutOrNull + +/** + * The scope in which a task should run + * - InternalTask: + * ``` + * - internal to the task launcher + * - should not be blockable by implementor errors + * - killable w/o side effects + * ``` + * - ImplementorTask: implemented by the destination + * ``` + * - calls implementor interface + * - should not block internal tasks (esp reading from stdin) + * - should complete if possible even when failing the sync + * ``` + */ +sealed interface ScopedTask : Task + +interface InternalTask : ScopedTask + +interface ImplementorTask : ScopedTask + +@Singleton +@Secondary +class DestinationTaskScopeProvider(config: DestinationConfiguration) : + TaskScopeProvider { + private val log = KotlinLogging.logger {} + + private val timeoutMs = config.gracefulCancellationTimeoutMs + + data class ControlScope( + val job: Job, + val dispatcher: CoroutineDispatcher, + val scope: CoroutineScope = CoroutineScope(dispatcher + job) + ) + + private val internalScope = ControlScope(Job(), Dispatchers.IO) + + private val implementorScope = + ControlScope( + SupervisorJob(), + Executors.newFixedThreadPool(config.maxNumImplementorTaskThreads) + .asCoroutineDispatcher() + ) + + override suspend fun launch(task: ScopedTask) { + when (task) { + is InternalTask -> internalScope.scope.launch { execute(task) } + is ImplementorTask -> implementorScope.scope.launch { execute(task) } + } + } + + private suspend fun execute(task: ScopedTask) { + log.info { "Launching task $task" } + val elapsed = measureTimeMillis { task.execute() } + log.info { "Task $task completed in $elapsed ms" } + } + + override suspend fun close() = supervisorScope { + log.info { "Closing task scopes" } + internalScope.job.cancel() + // Under normal operation, all tasks should be complete + // (except things like force flush, which loop). So + // - it's safe to force cancel the internal tasks + // - implementor scope should join immediately unless we're + // failing, in which case we want to give them a chance to + // fail gracefully + withTimeoutOrNull(timeoutMs) { + log.info { "Waiting ${timeoutMs}ms for implementor tasks to complete" } + implementorScope.job.join() + } + ?: run { + log.error { "Implementor tasks did not complete within ${timeoutMs}ms, cancelling" } + implementorScope.job.cancel() + } + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailSyncTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailSyncTask.kt deleted file mode 100644 index f406706524620..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailSyncTask.kt +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.task - -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.write.DestinationWriter -import io.micronaut.context.annotation.Secondary -import jakarta.inject.Singleton - -interface FailSyncTask : Task - -/** - * FailSyncTask is a task that is executed when a sync fails. It is responsible for cleaning up - * resources and reporting the failure. - */ -class DefaultFailSyncTask( - private val exceptionHandler: DestinationTaskLauncherExceptionHandler, - private val destinationWriter: DestinationWriter, - private val exception: Exception, - private val syncManager: SyncManager -) : FailSyncTask { - override suspend fun execute() { - val result = syncManager.markFailed(exception) - destinationWriter.teardown(result) - exceptionHandler.stop() - } -} - -interface FailSyncTaskFactory { - fun make( - exceptionHandler: DestinationTaskLauncherExceptionHandler, - exception: Exception - ): FailSyncTask -} - -@Singleton -@Secondary -class DefaultFailSyncTaskFactory( - private val syncManager: SyncManager, - private val destinationWriter: DestinationWriter -) : FailSyncTaskFactory { - override fun make( - exceptionHandler: DestinationTaskLauncherExceptionHandler, - exception: Exception - ): FailSyncTask { - return DefaultFailSyncTask(exceptionHandler, destinationWriter, exception, syncManager) - } -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/Task.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/Task.kt new file mode 100644 index 0000000000000..53e356eefba6a --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/Task.kt @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.airbyte.cdk.util.CloseableCoroutine + +interface Task { + suspend fun execute() +} + +/** + * A TaskLauncher is responsible for starting and stopping the task workflow, and for managing + * transitions between tasks. + */ +interface TaskLauncher { + suspend fun start() +} + +/** + * Wraps tasks with exception handling. It should provide an exception handling workflow and take + * responsibility for closing scopes, etc. + */ +interface TaskExceptionHandler { + fun withExceptionHandling(task: T): U +} + +/** Provides the scope(s) in which tasks run. */ +interface TaskScopeProvider : CloseableCoroutine { + /** Launch a task in the correct scope. */ + suspend fun launch(task: T) +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskLauncher.kt deleted file mode 100644 index f919a9c67e886..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskLauncher.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.task - -interface Task { - suspend fun execute() -} - -/** - * A TaskLauncher is responsible for starting and stopping the task workflow, and for managing - * transitions between tasks. - */ -interface TaskLauncher { - val taskRunner: TaskRunner - - suspend fun start() - suspend fun stop() { - taskRunner.close() - } -} - -interface TaskLauncherExceptionHandler { - fun withExceptionHandling(task: T): Task -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt deleted file mode 100644 index dd628d724bb08..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TaskRunner.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.task - -import io.github.oshai.kotlinlogging.KotlinLogging -import jakarta.inject.Singleton -import kotlin.time.measureTime -import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.flow.consumeAsFlow -import kotlinx.coroutines.launch - -/** - * A Task is a unit of work that can be executed concurrently. Even though we aren't scheduling - * threads or enforcing concurrency limits here, launching tasks from a queue in a dedicated scope - * frees the caller not to have to await completion. - * - * TODO: Extend this to collect and report task completion. - * - * TODO: Set concurrency for this scope from the configuration. - */ -@Singleton -class TaskRunner { - val log = KotlinLogging.logger {} - - private val queue = Channel(Channel.UNLIMITED) - - suspend fun enqueue(task: Task) { - queue.send(task) - } - - suspend fun run() = coroutineScope { - queue.consumeAsFlow().collect { task -> - launch { - log.info { "Executing task: $task" } - val elapsed = measureTime { task.execute() } - log.info { "Task completed: $task after ${elapsed.inWholeMilliseconds}ms" } - } - } - } - - fun close() { - queue.close() - } -} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt deleted file mode 100644 index 6b282437d35cd..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTask.kt +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.task - -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.file.TimeProvider -import io.airbyte.cdk.message.ChannelMessageQueue -import io.airbyte.cdk.message.QueueWriter -import io.airbyte.cdk.state.CheckpointManager -import io.micronaut.context.annotation.Secondary -import jakarta.inject.Singleton - -interface TimedForcedCheckpointFlushTask : SyncTask - -class DefaultTimedForcedCheckpointFlushTask( - private val delayMs: Long, - private val cadenceMs: Long, - private val checkpointManager: CheckpointManager, - private val eventQueue: QueueWriter, - private val timeProvider: TimeProvider, - private val taskLauncher: DestinationTaskLauncher -) : TimedForcedCheckpointFlushTask { - - override suspend fun execute() { - // Wait for the configured time - timeProvider.delay(delayMs) - - // Flush whatever is handy - checkpointManager.flushReadyCheckpointMessages() - - // Compare the time since the last successful flush to the configured interval - val lastFlushTimeMs = checkpointManager.getLastSuccessfulFlushTimeMs() - val nowMs = timeProvider.currentTimeMillis() - val timeSinceLastFlushMs = nowMs - lastFlushTimeMs - - if (timeSinceLastFlushMs >= cadenceMs) { - // If the max time has elapsed, emit a force flush event with provided next checkpoint - // indexes - val nextIndexes = checkpointManager.getNextCheckpointIndexes() - eventQueue.publish(ForceFlushEvent(nextIndexes)) - taskLauncher.scheduleNextForceFlushAttempt(cadenceMs) - } else { - // Otherwise schedule the next attempt to run at {time of last flush + configured - // interval} - taskLauncher.scheduleNextForceFlushAttempt(cadenceMs - timeSinceLastFlushMs) - } - } -} - -interface TimedForcedCheckpointFlushTaskFactory { - fun make( - taskLauncher: DestinationTaskLauncher, - delayMs: Long? = null - ): TimedForcedCheckpointFlushTask -} - -@Singleton -@Secondary -class DefaultTimedForcedCheckpointFlushTaskFactory( - private val config: DestinationConfiguration, - private val checkpointManager: CheckpointManager, - private val eventQueue: QueueWriter, - private val timeProvider: TimeProvider -) : TimedForcedCheckpointFlushTaskFactory { - override fun make( - taskLauncher: DestinationTaskLauncher, - delayMs: Long? - ): TimedForcedCheckpointFlushTask { - return DefaultTimedForcedCheckpointFlushTask( - delayMs ?: config.maxCheckpointFlushTimeMs, - config.maxCheckpointFlushTimeMs, - checkpointManager, - eventQueue, - timeProvider, - taskLauncher - ) - } -} - -data class ForceFlushEvent(val indexes: Map) - -@Singleton -@Secondary -class DefaultForceFlushEventMessageQueue : ChannelMessageQueue() diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/CloseStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/CloseStreamTask.kt similarity index 85% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/CloseStreamTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/CloseStreamTask.kt index 38d931955124e..20ca9bc7627e3 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/CloseStreamTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/CloseStreamTask.kt @@ -2,15 +2,18 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.implementor import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.DestinationTaskLauncher +import io.airbyte.cdk.task.ImplementorTask +import io.airbyte.cdk.task.StreamTask import io.airbyte.cdk.write.StreamLoader import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -interface CloseStreamTask : StreamTask +interface CloseStreamTask : StreamTask, ImplementorTask /** * Wraps @[StreamLoader.close] and marks the stream as closed in the stream manager. Also starts the diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailStreamTask.kt similarity index 60% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailStreamTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailStreamTask.kt index 411a3d0c24315..2e7f027734b93 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FailStreamTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailStreamTask.kt @@ -2,32 +2,49 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.implementor import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.state.StreamIncompleteResult import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.DestinationTaskExceptionHandler +import io.airbyte.cdk.task.ImplementorTask import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -interface FailStreamTask : Task +interface FailStreamTask : ImplementorTask /** * FailStreamTask is a task that is executed when a stream fails. It is responsible for cleaning up * resources and reporting the failure. */ class DefaultFailStreamTask( - private val exceptionHandler: DestinationTaskLauncherExceptionHandler, + private val exceptionHandler: DestinationTaskExceptionHandler<*>, private val exception: Exception, private val syncManager: SyncManager, - private val stream: DestinationStream + private val stream: DestinationStream, + private val kill: Boolean, ) : FailStreamTask { val log = KotlinLogging.logger {} override suspend fun execute() { val streamManager = syncManager.getStreamManager(stream.descriptor) - streamManager.markFailed(exception) + if (kill) { + if (!streamManager.markKilled(exception)) { + log.info { "Stream ${stream.descriptor} already complete, skipping kill." } + return + } + } else { + if (!streamManager.markFailed(exception)) { + throw IllegalStateException( + "Cannot fail stream ${stream.descriptor}, which is already complete." + ) + } + // Stream failure implies sync failure + exceptionHandler.handleSyncFailure(exception) + } + val streamResult = streamManager.awaitStreamResult() val incompleteResult = if (streamResult is StreamIncompleteResult) { @@ -42,15 +59,15 @@ class DefaultFailStreamTask( ?: log.warn { "StreamLoader not found for stream ${stream.descriptor}, cannot call close." } - exceptionHandler.handleSyncFailure(exception) } } interface FailStreamTaskFactory { fun make( - exceptionHandler: DestinationTaskLauncherExceptionHandler, + exceptionHandler: DestinationTaskExceptionHandler<*>, exception: Exception, - stream: DestinationStream + stream: DestinationStream, + kill: Boolean, ): FailStreamTask } @@ -58,10 +75,11 @@ interface FailStreamTaskFactory { @Secondary class DefaultFailStreamTaskFactory(private val syncManager: SyncManager) : FailStreamTaskFactory { override fun make( - exceptionHandler: DestinationTaskLauncherExceptionHandler, + exceptionHandler: DestinationTaskExceptionHandler<*>, exception: Exception, - stream: DestinationStream + stream: DestinationStream, + kill: Boolean, ): FailStreamTask { - return DefaultFailStreamTask(exceptionHandler, exception, syncManager, stream) + return DefaultFailStreamTask(exceptionHandler, exception, syncManager, stream, kill) } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailSyncTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailSyncTask.kt new file mode 100644 index 0000000000000..5cd10ab7f3dea --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailSyncTask.kt @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task.implementor + +import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.DestinationTaskExceptionHandler +import io.airbyte.cdk.task.ImplementorTask +import io.airbyte.cdk.util.setOnce +import io.airbyte.cdk.write.DestinationWriter +import io.github.oshai.kotlinlogging.KotlinLogging +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton +import java.util.concurrent.atomic.AtomicBoolean + +interface FailSyncTask : ImplementorTask + +/** + * FailSyncTask is a task that is executed when a sync fails. It is responsible for cleaning up + * resources and reporting the failure. + */ +class DefaultFailSyncTask( + private val exceptionHandler: DestinationTaskExceptionHandler<*>, + private val destinationWriter: DestinationWriter, + private val exception: Exception, + private val syncManager: SyncManager, +) : FailSyncTask { + private val log = KotlinLogging.logger {} + private val teardownRan = AtomicBoolean(false) + + override suspend fun execute() { + if (teardownRan.setOnce()) { + val result = syncManager.markFailed(exception) // awaits stream completion + log.info { "Calling teardown with failure result $result" } + destinationWriter.teardown(result) + exceptionHandler.handleTeardownComplete() + } else { + log.info { "Teardown already ran, doing nothing." } + } + } +} + +interface FailSyncTaskFactory { + fun make( + exceptionHandler: DestinationTaskExceptionHandler<*>, + exception: Exception + ): FailSyncTask +} + +@Singleton +@Secondary +class DefaultFailSyncTaskFactory( + private val syncManager: SyncManager, + private val destinationWriter: DestinationWriter +) : FailSyncTaskFactory { + override fun make( + exceptionHandler: DestinationTaskExceptionHandler<*>, + exception: Exception + ): FailSyncTask { + return DefaultFailSyncTask(exceptionHandler, destinationWriter, exception, syncManager) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/OpenStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/OpenStreamTask.kt similarity index 87% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/OpenStreamTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/OpenStreamTask.kt index f11ff0df3066f..ce70140b51fac 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/OpenStreamTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/OpenStreamTask.kt @@ -2,16 +2,19 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.implementor import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.DestinationTaskLauncher +import io.airbyte.cdk.task.ImplementorTask +import io.airbyte.cdk.task.StreamTask import io.airbyte.cdk.write.DestinationWriter import io.airbyte.cdk.write.StreamLoader import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -interface OpenStreamTask : StreamTask +interface OpenStreamTask : StreamTask, ImplementorTask /** * Wraps @[StreamLoader.start] and starts the spill-to-disk tasks. diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessBatchTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessBatchTask.kt similarity index 87% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessBatchTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessBatchTask.kt index feb4baf6336e3..7b319256c3e33 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessBatchTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessBatchTask.kt @@ -2,16 +2,19 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.implementor import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.DestinationTaskLauncher +import io.airbyte.cdk.task.ImplementorTask +import io.airbyte.cdk.task.StreamTask import io.airbyte.cdk.write.StreamLoader import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -interface ProcessBatchTask : StreamTask +interface ProcessBatchTask : StreamTask, ImplementorTask /** Wraps @[StreamLoader.processBatch] and handles the resulting batch. */ class DefaultProcessBatchTask( diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessRecordsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTask.kt similarity index 68% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessRecordsTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTask.kt index f1670df3de1da..d642e6a490008 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/ProcessRecordsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTask.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.implementor import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.message.BatchEnvelope @@ -14,14 +14,15 @@ import io.airbyte.cdk.message.DestinationStreamComplete import io.airbyte.cdk.message.DestinationStreamIncomplete import io.airbyte.cdk.message.SpilledRawMessagesLocalFile import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.DestinationTaskLauncher +import io.airbyte.cdk.task.ImplementorTask +import io.airbyte.cdk.task.StreamTask import io.airbyte.cdk.write.StreamLoader import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -interface ProcessRecordsTask : StreamTask +interface ProcessRecordsTask : StreamTask, ImplementorTask /** * Wraps @[StreamLoader.processRecords] and feeds it a lazy iterator over the last batch of spooled @@ -47,28 +48,26 @@ class DefaultProcessRecordsTask( log.info { "Processing records from ${fileEnvelope.batch.localFile}" } val nextBatch = try { - withContext(Dispatchers.IO) { - fileEnvelope.batch.localFile.toFileReader().use { reader -> - val records = - reader - .lines() - .map { - when (val message = deserializer.deserialize(it)) { - is DestinationStreamAffinedMessage -> message - else -> - throw IllegalStateException( - "Expected record message, got ${message::class}" - ) - } + fileEnvelope.batch.localFile.toFileReader().use { reader -> + val records = + reader + .lines() + .map { + when (val message = deserializer.deserialize(it)) { + is DestinationStreamAffinedMessage -> message + else -> + throw IllegalStateException( + "Expected record message, got ${message::class}" + ) } - .takeWhile { - it !is DestinationStreamComplete && - it !is DestinationStreamIncomplete - } - .map { it as DestinationRecord } - .iterator() - streamLoader.processRecords(records, fileEnvelope.batch.totalSizeBytes) - } + } + .takeWhile { + it !is DestinationStreamComplete && + it !is DestinationStreamIncomplete + } + .map { it as DestinationRecord } + .iterator() + streamLoader.processRecords(records, fileEnvelope.batch.totalSizeBytes) } } finally { log.info { "Processing completed, deleting ${fileEnvelope.batch.localFile}" } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SetupTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/SetupTask.kt similarity index 82% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SetupTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/SetupTask.kt index 5fecd72b16cd5..b6a48a4174b99 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SetupTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/SetupTask.kt @@ -2,13 +2,16 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.implementor +import io.airbyte.cdk.task.DestinationTaskLauncher +import io.airbyte.cdk.task.ImplementorTask +import io.airbyte.cdk.task.SyncTask import io.airbyte.cdk.write.DestinationWriter import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -interface SetupTask : SyncTask +interface SetupTask : SyncTask, ImplementorTask /** * Wraps @[DestinationWriter.setup] and starts the open stream tasks. diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TeardownTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/TeardownTask.kt similarity index 92% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TeardownTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/TeardownTask.kt index 7e1e0dfcbe666..7455a13eeb391 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/TeardownTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/TeardownTask.kt @@ -2,10 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.implementor import io.airbyte.cdk.state.CheckpointManager import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.DestinationTaskLauncher +import io.airbyte.cdk.task.SyncTask import io.airbyte.cdk.write.DestinationWriter import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary @@ -45,7 +47,7 @@ class DefaultTeardownTask( destination.teardown() log.info { "Teardown task complete, marking sync succeeded." } syncManager.markSucceeded() - taskLauncher.stop() + taskLauncher.handleTeardownComplete() } } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FlushCheckpointsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/FlushCheckpointsTask.kt similarity index 82% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FlushCheckpointsTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/FlushCheckpointsTask.kt index 50f7cc63ec9f1..9484bcbad0c70 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/FlushCheckpointsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/FlushCheckpointsTask.kt @@ -2,13 +2,15 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.internal import io.airbyte.cdk.state.CheckpointManager +import io.airbyte.cdk.task.InternalTask +import io.airbyte.cdk.task.SyncTask import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton -interface FlushCheckpointsTask : SyncTask +interface FlushCheckpointsTask : SyncTask, InternalTask class DefaultFlushCheckpointsTask( private val checkpointManager: CheckpointManager<*, *>, diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/InputConsumerTask.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/InputConsumerTask.kt index 711234118ae3d..249515121cbea 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/InputConsumerTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/InputConsumerTask.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.internal import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import io.airbyte.cdk.command.DestinationCatalog @@ -29,6 +29,8 @@ import io.airbyte.cdk.message.Undefined import io.airbyte.cdk.state.MemoryManager import io.airbyte.cdk.state.Reserved import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.InternalTask +import io.airbyte.cdk.task.SyncTask import io.airbyte.cdk.util.use import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary @@ -37,7 +39,7 @@ import java.io.InputStream import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.FlowCollector -interface InputConsumerTask : SyncTask +interface InputConsumerTask : SyncTask, InternalTask /** * Routes @[DestinationStreamAffinedMessage]s by stream to the appropriate channel and @ diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTask.kt similarity index 54% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTask.kt index 5827e50f1f947..b24de32478a89 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/SpillToDiskTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTask.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.internal import com.google.common.collect.Range import io.airbyte.cdk.command.DestinationConfiguration @@ -17,18 +17,18 @@ import io.airbyte.cdk.message.StreamCompleteWrapped import io.airbyte.cdk.message.StreamRecordWrapped import io.airbyte.cdk.state.FlushStrategy import io.airbyte.cdk.state.Reserved +import io.airbyte.cdk.task.DestinationTaskLauncher +import io.airbyte.cdk.task.InternalTask +import io.airbyte.cdk.task.StreamTask import io.airbyte.cdk.util.takeUntilInclusive import io.airbyte.cdk.util.use import io.airbyte.cdk.util.withNextAdjacentValue import io.github.oshai.kotlinlogging.KotlinLogging import jakarta.inject.Singleton -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.last import kotlinx.coroutines.flow.runningFold -import kotlinx.coroutines.withContext -interface SpillToDiskTask : StreamTask +interface SpillToDiskTask : StreamTask, InternalTask /** * Reads records from the message queue and writes them to disk. This task is internal and is not @@ -54,58 +54,43 @@ class DefaultSpillToDiskTask( ) override suspend fun execute() { - val (path, result) = - withContext(Dispatchers.IO) { - val tmpFile = - tmpFileProvider.createTempFile( - config.tmpFileDirectory, - config.firstStageTmpFilePrefix, - config.firstStageTmpFileSuffix - ) - val result = - tmpFile.toFileWriter().use { writer -> - queue - .consume() - .runningFold(ReadResult()) { (range, sizeBytes, _), reserved -> - reserved.use { - when (val wrapped = it.value) { - is StreamRecordWrapped -> { - writer.write(wrapped.record.serialized) - writer.write("\n") - val nextRange = - range.withNextAdjacentValue(wrapped.index) - val nextSize = sizeBytes + wrapped.sizeBytes - val forceFlush = - flushStrategy.shouldFlush( - stream, - nextRange, - nextSize - ) - ReadResult(nextRange, nextSize, forceFlush = forceFlush) - } - is StreamCompleteWrapped -> { - val nextRange = - range.withNextAdjacentValue(wrapped.index) - ReadResult( - nextRange, - sizeBytes, - hasReadEndOfStream = true - ) - } - } + val tmpFile = + tmpFileProvider.createTempFile( + config.tmpFileDirectory, + config.firstStageTmpFilePrefix, + config.firstStageTmpFileSuffix + ) + val result = + tmpFile.toFileWriter().use { writer -> + queue + .consume() + .runningFold(ReadResult()) { (range, sizeBytes, _), reserved -> + reserved.use { + when (val wrapped = it.value) { + is StreamRecordWrapped -> { + writer.write(wrapped.record.serialized) + writer.write("\n") + val nextRange = range.withNextAdjacentValue(wrapped.index) + val nextSize = sizeBytes + wrapped.sizeBytes + val forceFlush = + flushStrategy.shouldFlush(stream, nextRange, nextSize) + ReadResult(nextRange, nextSize, forceFlush = forceFlush) + } + is StreamCompleteWrapped -> { + val nextRange = range.withNextAdjacentValue(wrapped.index) + ReadResult(nextRange, sizeBytes, hasReadEndOfStream = true) } } - .flowOn(Dispatchers.IO) - .takeUntilInclusive { it.hasReadEndOfStream || it.forceFlush } - .last() + } } - Pair(tmpFile, result) + .takeUntilInclusive { it.hasReadEndOfStream || it.forceFlush } + .last() } /** Handle the result */ val (range, sizeBytes, endOfStream) = result - log.info { "Finished writing $range records (${sizeBytes}b) to $path" } + log.info { "Finished writing $range records (${sizeBytes}b) to $tmpFile" } // This could happen if the chunk only contained end-of-stream if (range == null) { @@ -113,7 +98,7 @@ class DefaultSpillToDiskTask( return } - val batch = SpilledRawMessagesLocalFile(path, sizeBytes) + val batch = SpilledRawMessagesLocalFile(tmpFile, sizeBytes) val wrapped = BatchEnvelope(batch, range) launcher.handleNewSpilledFile(stream, wrapped, endOfStream) } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTask.kt new file mode 100644 index 0000000000000..335b4fcb3914c --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTask.kt @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task.internal + +import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.command.DestinationStream +import io.airbyte.cdk.file.TimeProvider +import io.airbyte.cdk.message.ChannelMessageQueue +import io.airbyte.cdk.message.QueueWriter +import io.airbyte.cdk.state.CheckpointManager +import io.airbyte.cdk.task.SyncTask +import io.airbyte.cdk.util.use +import io.github.oshai.kotlinlogging.KotlinLogging +import io.micronaut.context.annotation.Secondary +import jakarta.inject.Singleton + +interface TimedForcedCheckpointFlushTask : SyncTask + +@Singleton +@Secondary +class DefaultTimedForcedCheckpointFlushTask( + private val config: DestinationConfiguration, + private val checkpointManager: CheckpointManager, + private val eventQueue: QueueWriter, + private val timeProvider: TimeProvider, +) : TimedForcedCheckpointFlushTask { + private val log = KotlinLogging.logger {} + + override suspend fun execute() { + val cadenceMs = config.maxCheckpointFlushTimeMs + // Wait for the configured time + log.info { "Sleeping for ${cadenceMs}ms" } + timeProvider.delay(cadenceMs) + + eventQueue.use { + while (true) { + // Flush whatever is handy + checkpointManager.flushReadyCheckpointMessages() + + // Compare the time since the last successful flush to the configured interval + val lastFlushTimeMs = checkpointManager.getLastSuccessfulFlushTimeMs() + val nowMs = timeProvider.currentTimeMillis() + val timeSinceLastFlushMs = nowMs - lastFlushTimeMs + + if (timeSinceLastFlushMs >= cadenceMs) { + val nextIndexes = checkpointManager.getNextCheckpointIndexes() + log.info { + "${timeSinceLastFlushMs}ms since last flush, forcing flush at $nextIndexes" + } + it.publish(ForceFlushEvent(nextIndexes)) + timeProvider.delay(cadenceMs) + log.info { "Flush event published; sleeping for ${cadenceMs}ms" } + } else { + val timeUntilNextAttempt = cadenceMs - timeSinceLastFlushMs + log.info { + "$timeSinceLastFlushMs < $cadenceMs ms elapsed, sleeping for $timeUntilNextAttempt" + } + timeProvider.delay(timeUntilNextAttempt) + } + } + } + } +} + +data class ForceFlushEvent(val indexes: Map) + +@Singleton +@Secondary +class DefaultForceFlushEventMessageQueue : ChannelMessageQueue() diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/UpdateCheckpointsTask.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/UpdateCheckpointsTask.kt index bebcdaa1ebb23..d81a167df7541 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/UpdateCheckpointsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/UpdateCheckpointsTask.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.internal import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.message.CheckpointMessage @@ -12,6 +12,7 @@ import io.airbyte.cdk.message.MessageQueue import io.airbyte.cdk.message.StreamCheckpointWrapped import io.airbyte.cdk.state.CheckpointManager import io.airbyte.cdk.state.Reserved +import io.airbyte.cdk.task.SyncTask import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt index 266acd938c054..e6d916a0cef2f 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt @@ -4,6 +4,7 @@ package io.airbyte.cdk.util +import java.util.concurrent.atomic.AtomicBoolean import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.transformWhile @@ -22,3 +23,6 @@ suspend fun T.use(block: suspend (T) -> R) = } finally { close() } + +/** Set the latch exactly once. Return true iff this is the first time we've set it. */ +fun AtomicBoolean.setOnce() = compareAndSet(false, true) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt index d0da8ca6c0453..5b9a291a087ea 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt @@ -11,7 +11,6 @@ import io.airbyte.cdk.state.SyncFailure import io.airbyte.cdk.state.SyncManager import io.airbyte.cdk.state.SyncSuccess import io.airbyte.cdk.task.TaskLauncher -import io.airbyte.cdk.task.TaskRunner import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Factory import io.micronaut.context.annotation.Requires @@ -19,7 +18,6 @@ import io.micronaut.context.annotation.Secondary import java.io.InputStream import javax.inject.Singleton import kotlin.system.exitProcess -import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking /** @@ -30,7 +28,6 @@ import kotlinx.coroutines.runBlocking @Requires(property = Operation.PROPERTY, value = "write") class WriteOperation( private val taskLauncher: TaskLauncher, - private val taskRunner: TaskRunner, private val syncManager: SyncManager, private val exceptionHandler: ExceptionHandler, private val outputConsumer: OutputConsumer @@ -40,12 +37,13 @@ class WriteOperation( override fun execute() { runCatching { runBlocking { - launch { taskLauncher.start() } - - launch { taskRunner.run() } + taskLauncher.start() when (val result = syncManager.awaitSyncResult()) { - is SyncSuccess -> exitProcess(0) + is SyncSuccess -> { + log.info { "Sync completed successfully" } + exitProcess(0) + } is SyncFailure -> { log.error { "Caught exception during sync: ${result.syncFailure}" } val errorMessage = exceptionHandler.handle(result.syncFailure) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt index 330ac100f2baa..052efeec6f00a 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt @@ -7,22 +7,23 @@ package io.airbyte.cdk.file import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import jakarta.inject.Singleton +import java.util.concurrent.atomic.AtomicLong @Singleton @Primary @Requires(env = ["MockTimeProvider"]) class MockTimeProvider : TimeProvider { - private var currentTime: Long = 0 + private var currentTime = AtomicLong(0) override fun currentTimeMillis(): Long { - return currentTime + return currentTime.get() } fun setCurrentTime(currentTime: Long) { - this.currentTime = currentTime + this.currentTime.set(currentTime) } override suspend fun delay(ms: Long) { - currentTime += ms + currentTime.addAndGet(ms) } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt index 9cef70db15f16..5b2b640f6b70f 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt @@ -9,7 +9,7 @@ import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.MockDestinationCatalogFactory import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 import io.airbyte.cdk.message.ChannelMessageQueue -import io.airbyte.cdk.task.ForceFlushEvent +import io.airbyte.cdk.task.internal.ForceFlushEvent import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt index 6808061a82b4c..002ae813401de 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt @@ -24,6 +24,7 @@ class MockCheckpointManager : CheckpointManager() var mockCheckpointIndexes = mutableMapOf() var mockLastFlushTimeMs = 0L + var maxNumFlushAttempts = 0 override suspend fun addStreamCheckpoint( key: DestinationStream.Descriptor, @@ -41,6 +42,9 @@ class MockCheckpointManager : CheckpointManager= 0 && flushedAtMs.size >= maxNumFlushAttempts) { + throw IllegalStateException("Max number of flushes reached") + } flushedAtMs.add(timeProvider.currentTimeMillis()) } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherExceptionHandlerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandlerTest.kt similarity index 63% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherExceptionHandlerTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandlerTest.kt index 4b59d304585ae..a80559d006280 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherExceptionHandlerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandlerTest.kt @@ -8,6 +8,10 @@ import io.airbyte.cdk.command.DestinationCatalog import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.implementor.FailStreamTask +import io.airbyte.cdk.task.implementor.FailStreamTaskFactory +import io.airbyte.cdk.task.implementor.FailSyncTask +import io.airbyte.cdk.task.implementor.FailSyncTaskFactory import io.airbyte.cdk.test.util.CoroutineTestUtils import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires @@ -16,6 +20,8 @@ import jakarta.inject.Inject import jakarta.inject.Singleton import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.consumeAsFlow +import kotlinx.coroutines.flow.toList import kotlinx.coroutines.launch import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions @@ -27,26 +33,27 @@ import org.junit.jupiter.api.Test [ "DestinationTaskLauncherExceptionHandlerTest", "MockDestinationCatalog", + "MockScopeProvider" ] ) -class DestinationTaskLauncherExceptionHandlerTest { - @Inject lateinit var taskRunner: TaskRunner - @Inject lateinit var exceptionHandler: DestinationTaskLauncherExceptionHandler +class DestinationTaskExceptionHandlerTest { + @Inject lateinit var exceptionHandler: DestinationTaskExceptionHandler<*> @Singleton @Primary @Requires(env = ["DestinationTaskLauncherExceptionHandlerTest"]) class MockFailStreamTaskFactory : FailStreamTaskFactory { - val didRunFor = Channel>() + val didRunFor = Channel>(Channel.UNLIMITED) override fun make( - exceptionHandler: DestinationTaskLauncherExceptionHandler, + exceptionHandler: DestinationTaskExceptionHandler<*>, exception: Exception, - stream: DestinationStream + stream: DestinationStream, + kill: Boolean ): FailStreamTask { return object : FailStreamTask { override suspend fun execute() { - didRunFor.send(Pair(stream, exception)) + didRunFor.send(Triple(stream, exception, kill)) } } } @@ -56,10 +63,10 @@ class DestinationTaskLauncherExceptionHandlerTest { @Primary @Requires(env = ["DestinationTaskLauncherExceptionHandlerTest"]) class MockFailSyncTaskFactory : FailSyncTaskFactory { - val didRunWith = Channel() + val didRunWith = Channel(Channel.UNLIMITED) override fun make( - exceptionHandler: DestinationTaskLauncherExceptionHandler, + exceptionHandler: DestinationTaskExceptionHandler<*>, exception: Exception ): FailSyncTask { return object : FailSyncTask { @@ -71,36 +78,34 @@ class DestinationTaskLauncherExceptionHandlerTest { } /** - * test surface: validate that the wrapper directs failures in + * Validate that the wrapper directs failures in * - StreamTask(s) to handleStreamFailure (and to an injected Mock FailStreamTask) * - SyncTask(s) to handleSyncFailure (and to an injected Mock FailSyncTask) */ @Test - fun testHandleStreamFailure(mockFailStreamTaskFactory: MockFailStreamTaskFactory) = runTest { - launch { taskRunner.run() } - - val mockTask = - object : StreamTask { - override val stream: DestinationStream = stream1 + fun testHandleStreamTaskException(mockFailStreamTaskFactory: MockFailStreamTaskFactory) = + runTest { + val mockTask = + object : StreamTask { + override val stream: DestinationStream = stream1 - override suspend fun execute() { - throw RuntimeException("StreamTask failure") + override suspend fun execute() { + throw RuntimeException("StreamTask failure") + } } - } - val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) - launch { wrappedTask.execute() } - val (stream, exception) = mockFailStreamTaskFactory.didRunFor.receive() - Assertions.assertEquals(stream1, stream) - Assertions.assertTrue(exception is RuntimeException) - - taskRunner.close() - } + val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) + wrappedTask.execute() + val (stream, exception) = mockFailStreamTaskFactory.didRunFor.receive() + Assertions.assertEquals(stream1, stream) + Assertions.assertTrue(exception is RuntimeException) + } @Test - fun testHandleSyncFailure(mockFailSyncTaskFactory: MockFailSyncTaskFactory) = runTest { - launch { taskRunner.run() } - + fun testHandleSyncTaskException( + mockFailStreamTaskFactory: MockFailStreamTaskFactory, + catalog: DestinationCatalog + ) = runTest { val mockTask = object : SyncTask { override suspend fun execute() { @@ -109,20 +114,26 @@ class DestinationTaskLauncherExceptionHandlerTest { } val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) - launch { wrappedTask.execute() } - val exception = mockFailSyncTaskFactory.didRunWith.receive() - Assertions.assertTrue(exception is RuntimeException) - - taskRunner.close() + wrappedTask.execute() + mockFailStreamTaskFactory.didRunFor.close() + val streamResults = + mockFailStreamTaskFactory.didRunFor.consumeAsFlow().toList().associate { + (stream, exception, kill) -> + stream to Pair(exception, kill) + } + println(streamResults) + catalog.streams.forEach { stream -> + Assertions.assertTrue(streamResults[stream]!!.first is RuntimeException) + Assertions.assertTrue(streamResults[stream]!!.second) + } } @Test fun testSyncFailureBlocksSyncTasks( mockFailSyncTaskFactory: MockFailSyncTaskFactory, - syncManager: SyncManager + syncManager: SyncManager, + catalog: DestinationCatalog ) = runTest { - launch { taskRunner.run() } - val innerTaskRan = Channel(Channel.UNLIMITED) val mockTask = object : SyncTask { @@ -132,20 +143,19 @@ class DestinationTaskLauncherExceptionHandlerTest { } val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) + catalog.streams.forEach { + syncManager.getStreamManager(it.descriptor).markFailed(RuntimeException("dummy")) + } syncManager.markFailed(RuntimeException("dummy failure")) - launch { wrappedTask.execute() } + wrappedTask.execute() delay(1000) Assertions.assertTrue(mockFailSyncTaskFactory.didRunWith.tryReceive().isFailure) Assertions.assertTrue(innerTaskRan.tryReceive().isFailure) - - taskRunner.close() } @Test fun testSyncFailureAfterSuccessThrows(syncManager: SyncManager, catalog: DestinationCatalog) = runTest { - launch { taskRunner.run() } - val mockTask = object : SyncTask { override suspend fun execute() { @@ -162,8 +172,6 @@ class DestinationTaskLauncherExceptionHandlerTest { } syncManager.markSucceeded() CoroutineTestUtils.assertThrows(IllegalStateException::class) { wrappedTask.execute() } - - taskRunner.close() } @Test @@ -171,8 +179,6 @@ class DestinationTaskLauncherExceptionHandlerTest { mockFailStreamTaskFactory: MockFailStreamTaskFactory, syncManager: SyncManager ) = runTest { - launch { taskRunner.run() } - val innerTaskRan = Channel(Channel.UNLIMITED) val mockTask = object : StreamTask { @@ -191,17 +197,14 @@ class DestinationTaskLauncherExceptionHandlerTest { delay(1000) Assertions.assertTrue(mockFailStreamTaskFactory.didRunFor.tryReceive().isFailure) Assertions.assertTrue(innerTaskRan.tryReceive().isFailure) - - taskRunner.close() } @Test fun testStreamFailureAfterSuccessThrows( - mockFailSyncTaskFactory: MockFailSyncTaskFactory, - syncManager: SyncManager + mockFailStreamTaskFactory: MockFailStreamTaskFactory, + syncManager: SyncManager, + catalog: DestinationCatalog ) = runTest { - launch { taskRunner.run() } - val mockTask = object : StreamTask { override val stream: DestinationStream = stream1 @@ -219,8 +222,14 @@ class DestinationTaskLauncherExceptionHandlerTest { // This won't throw, because the sync wrapper will catch it and call it a sync error CoroutineTestUtils.assertDoesNotThrow { wrappedTask.execute() } - Assertions.assertTrue(mockFailSyncTaskFactory.didRunWith.receive() is IllegalStateException) + mockFailStreamTaskFactory.didRunFor.close() + val results = mockFailStreamTaskFactory.didRunFor.consumeAsFlow().toList() + Assertions.assertEquals(catalog.streams.size, results.size) + } - taskRunner.close() + @Test + fun testHandleTeardownComplete(scopeProvider: MockScopeProvider) = runTest { + exceptionHandler.handleTeardownComplete() + Assertions.assertTrue(scopeProvider.didClose) } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt index aa2fa1effb177..7c045debd7d6a 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt @@ -14,13 +14,38 @@ import io.airbyte.cdk.message.Batch import io.airbyte.cdk.message.BatchEnvelope import io.airbyte.cdk.message.SpilledRawMessagesLocalFile import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.implementor.CloseStreamTask +import io.airbyte.cdk.task.implementor.CloseStreamTaskFactory +import io.airbyte.cdk.task.implementor.DefaultCloseStreamTaskFactory +import io.airbyte.cdk.task.implementor.DefaultOpenStreamTaskFactory +import io.airbyte.cdk.task.implementor.DefaultProcessBatchTaskFactory +import io.airbyte.cdk.task.implementor.DefaultProcessRecordsTaskFactory +import io.airbyte.cdk.task.implementor.DefaultSetupTaskFactory +import io.airbyte.cdk.task.implementor.DefaultTeardownTaskFactory +import io.airbyte.cdk.task.implementor.OpenStreamTask +import io.airbyte.cdk.task.implementor.OpenStreamTaskFactory +import io.airbyte.cdk.task.implementor.ProcessBatchTask +import io.airbyte.cdk.task.implementor.ProcessBatchTaskFactory +import io.airbyte.cdk.task.implementor.ProcessRecordsTask +import io.airbyte.cdk.task.implementor.ProcessRecordsTaskFactory +import io.airbyte.cdk.task.implementor.SetupTask +import io.airbyte.cdk.task.implementor.SetupTaskFactory +import io.airbyte.cdk.task.implementor.TeardownTask +import io.airbyte.cdk.task.implementor.TeardownTaskFactory +import io.airbyte.cdk.task.internal.DefaultSpillToDiskTaskFactory +import io.airbyte.cdk.task.internal.FlushCheckpointsTask +import io.airbyte.cdk.task.internal.FlushCheckpointsTaskFactory +import io.airbyte.cdk.task.internal.InputConsumerTask +import io.airbyte.cdk.task.internal.SpillToDiskTask +import io.airbyte.cdk.task.internal.SpillToDiskTaskFactory +import io.airbyte.cdk.task.internal.TimedForcedCheckpointFlushTask +import io.airbyte.cdk.task.internal.UpdateCheckpointsTask import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Replaces import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import jakarta.inject.Singleton -import java.util.concurrent.atomic.AtomicLong import kotlin.io.path.Path import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.toList @@ -38,10 +63,11 @@ import org.junit.jupiter.api.Test "DestinationTaskLauncherTest", "MockDestinationConfiguration", "MockDestinationCatalog", + "MockScopeProvider", ] ) class DestinationTaskLauncherTest { - @Inject lateinit var taskRunner: TaskRunner + @Inject lateinit var mockScopeProvider: MockScopeProvider @Inject lateinit var taskLauncher: DestinationTaskLauncher @Inject lateinit var syncManager: SyncManager @Inject lateinit var mockExceptionHandler: MockExceptionHandler @@ -55,7 +81,7 @@ class DestinationTaskLauncherTest { @Inject lateinit var closeStreamTaskFactory: MockCloseStreamTaskFactory @Inject lateinit var teardownTaskFactory: MockTeardownTaskFactory @Inject lateinit var flushCheckpointsTaskFactory: MockFlushCheckpointsTaskFactory - @Inject lateinit var forceFlushTaskFactory: MockForceFlushTaskFactory + @Inject lateinit var mockForceFlushTask: MockForceFlushTask @Inject lateinit var updateCheckpointsTask: MockUpdateCheckpointsTask @Singleton @@ -224,18 +250,11 @@ class DestinationTaskLauncherTest { @Singleton @Primary @Requires(env = ["DestinationTaskLauncherTest"]) - class MockForceFlushTaskFactory : TimedForcedCheckpointFlushTaskFactory { - val ranWithDelay = Channel(Channel.UNLIMITED) + class MockForceFlushTask : TimedForcedCheckpointFlushTask { + val didRun = Channel(Channel.UNLIMITED) - override fun make( - taskLauncher: DestinationTaskLauncher, - delayMs: Long? - ): TimedForcedCheckpointFlushTask { - return object : TimedForcedCheckpointFlushTask { - override suspend fun execute() { - ranWithDelay.send(delayMs) - } - } + override suspend fun execute() { + didRun.send(true) } } @@ -253,21 +272,21 @@ class DestinationTaskLauncherTest { @Singleton @Requires(env = ["DestinationTaskLauncherTest"]) - class MockExceptionHandler : TaskLauncherExceptionHandler { - val wrappedTasks = Channel(Channel.UNLIMITED) - val wrappedTaskCount = AtomicLong(0) + class MockExceptionHandler : TaskExceptionHandler { + val wrappedTasks = Channel(Channel.UNLIMITED) - override fun withExceptionHandling(task: DestinationWriteTask): Task { + override fun withExceptionHandling(task: LeveledTask): ScopedTask { runBlocking { wrappedTasks.send(task) } - wrappedTaskCount.incrementAndGet() - return task + return object : InternalTask { + override suspend fun execute() { + task.execute() + } + } } } @Test fun testStart() = runTest { - launch { taskRunner.run() } - taskLauncher.start() Assertions.assertTrue( @@ -282,7 +301,7 @@ class DestinationTaskLauncherTest { mockSpillToDiskTaskFactory.streamHasRun.values.forEach { it.receive() } // Verify that we kicked off the timed force flush w/o a specific delay - Assertions.assertNull(forceFlushTaskFactory.ranWithDelay.receive()) + Assertions.assertTrue(mockForceFlushTask.didRun.receive()) Assertions.assertTrue( updateCheckpointsTask.didRun.receive(), @@ -298,14 +317,10 @@ class DestinationTaskLauncherTest { mockSpillToDiskTaskFactory.streamHasRun.size, taskList.filterIsInstance().size ) - - taskLauncher.stop() } @Test fun testHandleSetupComplete() = runTest { - launch { taskRunner.run() } - // Verify that open stream ran for each stream taskLauncher.handleSetupComplete() mockOpenStreamTaskFactory.streamHasRun.values.forEach { it.receive() } @@ -317,34 +332,25 @@ class DestinationTaskLauncherTest { mockOpenStreamTaskFactory.streamHasRun.size, taskList.filterIsInstance().size ) - - taskLauncher.stop() } @Test fun testHandleSpilledFileCompleteNotEndOfStream() = runTest { - launch { taskRunner.run() } - - launch { - taskLauncher.handleNewSpilledFile( - stream1, - BatchEnvelope( - SpilledRawMessagesLocalFile(DefaultLocalFile(Path("not/a/real/file")), 100L) - ), - false - ) - } + taskLauncher.handleNewSpilledFile( + stream1, + BatchEnvelope( + SpilledRawMessagesLocalFile(DefaultLocalFile(Path("not/a/real/file")), 100L) + ), + false + ) processRecordsTaskFactory.hasRun.receive() mockSpillToDiskTaskFactory.streamHasRun[stream1.descriptor]?.receive() ?: Assertions.fail("SpillToDiskTask not run") - taskLauncher.stop() } @Test fun testHandleSpilledFileCompleteEndOfStream() = runTest { - launch { taskRunner.run() } - launch { taskLauncher.handleNewSpilledFile( stream1, @@ -361,13 +367,10 @@ class DestinationTaskLauncherTest { mockSpillToDiskTaskFactory.streamHasRun[stream1.descriptor]?.tryReceive()?.isFailure != false ) - taskLauncher.stop() } @Test fun testHandleNewBatch() = runTest { - launch { taskRunner.run() } - val range = TreeRangeSet.create(listOf(Range.closed(0L, 100L))) val streamManager = syncManager.getStreamManager(stream1.descriptor) repeat(100) { streamManager.countRecordIn() } @@ -402,29 +405,19 @@ class DestinationTaskLauncherTest { taskLauncher.handleNewBatch(stream1, completingBatch) closeStreamTaskFactory.hasRun.receive() Assertions.assertTrue(true) - - taskLauncher.stop() } @Test fun testHandleStreamClosed() = runTest { - launch { taskRunner.run() } - // This should run teardown unconditionally. launch { taskLauncher.handleStreamClosed(stream1) } teardownTaskFactory.hasRun.receive() - - taskLauncher.stop() } @Test - fun testHandleScheduleForceFlush() = runTest { - launch { taskRunner.run() } - - // This should run force flush task with delay. - taskLauncher.scheduleNextForceFlushAttempt(1000) - Assertions.assertEquals(1000, forceFlushTaskFactory.ranWithDelay.receive()) - - taskLauncher.stop() + fun testHandleTeardownComplete() = runTest { + // This should close the scope provider. + taskLauncher.handleTeardownComplete() + Assertions.assertTrue(mockScopeProvider.didClose) } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockScopeProvider.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockScopeProvider.kt new file mode 100644 index 0000000000000..2290d513902c6 --- /dev/null +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockScopeProvider.kt @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.cdk.task + +import io.micronaut.context.annotation.Primary +import io.micronaut.context.annotation.Requires +import jakarta.inject.Singleton +import java.util.concurrent.atomic.AtomicBoolean + +@Singleton +@Primary +@Requires(env = ["MockScopeProvider"]) +class MockScopeProvider : TaskScopeProvider { + private val didCloseAB = AtomicBoolean(false) + + val didClose + get() = didCloseAB.get() + + override suspend fun launch(task: ScopedTask) { + task.execute() + } + + override suspend fun close() { + didCloseAB.set(true) + } +} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt index d6b89cdf34fc1..3401e795bd2df 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt @@ -14,10 +14,9 @@ import jakarta.inject.Singleton @Singleton @Primary @Requires(env = ["MockTaskLauncher"]) -class MockTaskLauncher(override val taskRunner: TaskRunner) : DestinationTaskLauncher { +class MockTaskLauncher : DestinationTaskLauncher { val spilledFiles = mutableListOf>() val batchEnvelopes = mutableListOf>() - val scheduledForcedFlushes = mutableListOf() override suspend fun handleSetupComplete() { throw NotImplementedError() @@ -50,8 +49,4 @@ class MockTaskLauncher(override val taskRunner: TaskRunner) : DestinationTaskLau override suspend fun start() { throw NotImplementedError() } - - override suspend fun scheduleNextForceFlushAttempt(msFromNow: Long) { - scheduledForcedFlushes.add(msFromNow) - } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TaskRunnerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TaskRunnerTest.kt deleted file mode 100644 index 7bbafbf88b6a5..0000000000000 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TaskRunnerTest.kt +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.cdk.task - -import java.util.concurrent.atomic.AtomicBoolean -import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.channels.ClosedSendChannelException -import kotlinx.coroutines.launch -import kotlinx.coroutines.test.runTest -import org.junit.jupiter.api.Assertions -import org.junit.jupiter.api.Test - -class TaskRunnerTest { - @Test - fun testTasksCompleteAfterClose() = runTest { - val task1Completed = AtomicBoolean(false) - val task2Completed = AtomicBoolean(false) - val task3Completed = AtomicBoolean(false) - - val innerTaskCompleted = AtomicBoolean(false) - val innerTaskEnqueueFailed = AtomicBoolean(false) - - val task1ReportingChannel = Channel() - val task2ReportingChannel = Channel() - val task3ReportingChannel = Channel() - - val task2BlockingChannel = Channel() - - // Make 3 tasks. - // - the first one should complete right away - // - the second one will block until we send a message to it - // - BUT the third one will not be blocked by the second - // - AND the second one should still run after we close the runner - // - BUT the second one tried to enqueue another after close, which throws - val runner = TaskRunner() - val task1 = - object : Task { - override suspend fun execute() { - task1Completed.set(true) - task1ReportingChannel.send(Unit) - } - } - val task2 = - object : Task { - override suspend fun execute() { - task2BlockingChannel.receive() - task2Completed.set(true) - try { - runner.enqueue( - object : Task { - override suspend fun execute() { - innerTaskCompleted.set(true) - } - } - ) - } catch (e: ClosedSendChannelException) { - innerTaskEnqueueFailed.set(true) - } - task2ReportingChannel.send(Unit) - } - } - val task3 = - object : Task { - override suspend fun execute() { - task3Completed.set(true) - task3ReportingChannel.send(Unit) - } - } - - runner.enqueue(task1) - runner.enqueue(task2) - runner.enqueue(task3) - - launch { runner.run() } - - task1ReportingChannel.receive() // wait for task1 to complete - Assertions.assertTrue(task1Completed.get()) - Assertions.assertFalse(task2Completed.get()) - - task3ReportingChannel.receive() // wait for task3 to complete - Assertions.assertTrue(task3Completed.get()) - Assertions.assertFalse(task2Completed.get()) - - runner.close() - task2BlockingChannel.send(Unit) - task2ReportingChannel.receive() // wait for task2 to complete - Assertions.assertTrue(task2Completed.get()) - - Assertions.assertTrue(innerTaskEnqueueFailed.get()) - Assertions.assertFalse(innerTaskCompleted.get()) - } -} diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ProcessRecordsTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTaskTest.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ProcessRecordsTaskTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTaskTest.kt index d58c2186c8466..88fb9f479f809 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ProcessRecordsTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTaskTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.implementor import com.google.common.collect.Range import io.airbyte.cdk.command.DestinationStream @@ -16,6 +16,7 @@ import io.airbyte.cdk.message.DestinationMessage import io.airbyte.cdk.message.DestinationRecord import io.airbyte.cdk.message.SpilledRawMessagesLocalFile import io.airbyte.cdk.state.SyncManager +import io.airbyte.cdk.task.MockTaskLauncher import io.airbyte.cdk.write.StreamLoader import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/InputConsumerTaskTest.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/InputConsumerTaskTest.kt index 651de6f3166eb..4096ed177c4b5 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/InputConsumerTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/InputConsumerTaskTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.internal import com.fasterxml.jackson.databind.node.JsonNodeFactory import io.airbyte.cdk.command.DestinationConfiguration diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ReservingDeserializingInputFlowTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/ReservingDeserializingInputFlowTest.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ReservingDeserializingInputFlowTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/ReservingDeserializingInputFlowTest.kt index 7c3e143414bca..7702ba818e4b2 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/ReservingDeserializingInputFlowTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/ReservingDeserializingInputFlowTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.internal import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.message.Deserializer diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTaskTest.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTaskTest.kt index 9e44846ac023f..97df060f33118 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/SpillToDiskTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTaskTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.internal import com.google.common.collect.Range import io.airbyte.cdk.command.DestinationStream @@ -17,6 +17,7 @@ import io.airbyte.cdk.message.StreamRecordWrapped import io.airbyte.cdk.state.FlushStrategy import io.airbyte.cdk.state.MemoryManager import io.airbyte.cdk.state.Reserved +import io.airbyte.cdk.task.MockTaskLauncher import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -37,7 +38,6 @@ import org.junit.jupiter.api.Test ] ) class SpillToDiskTaskTest { - @Inject lateinit var taskRunner: TaskRunner @Inject lateinit var memoryManager: MemoryManager @Inject lateinit var spillToDiskTaskFactory: DefaultSpillToDiskTaskFactory @Inject lateinit var mockTempFileProvider: MockTempFileProvider @@ -94,7 +94,7 @@ class SpillToDiskTaskTest { val bytesReserved = primeMessageQueue() Assertions.assertEquals(availableMemory - bytesReserved, memoryManager.remainingMemoryBytes) - val mockTaskLauncher = MockTaskLauncher(taskRunner) + val mockTaskLauncher = MockTaskLauncher() spillToDiskTaskFactory.make(mockTaskLauncher, stream1).execute() Assertions.assertEquals(1, mockTaskLauncher.spilledFiles.size) spillToDiskTaskFactory.make(mockTaskLauncher, stream1).execute() diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTaskTest.kt similarity index 63% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTaskTest.kt index 6a1af4dcf5e05..c70421a57afab 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/TimedForcedCheckpointFlushTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTaskTest.kt @@ -2,13 +2,14 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.task.internal import io.airbyte.cdk.command.DestinationConfiguration import io.airbyte.cdk.command.DestinationStream import io.airbyte.cdk.file.MockTimeProvider import io.airbyte.cdk.message.QueueReader import io.airbyte.cdk.state.MockCheckpointManager +import io.airbyte.cdk.task.MockTaskLauncher import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import kotlinx.coroutines.test.runTest @@ -27,7 +28,7 @@ import org.junit.jupiter.api.Test ] ) class TimedForcedCheckpointFlushTaskTest { - @Inject lateinit var flushTaskFactory: DefaultTimedForcedCheckpointFlushTaskFactory + @Inject lateinit var flushTask: DefaultTimedForcedCheckpointFlushTask @Inject lateinit var taskLauncher: MockTaskLauncher @Inject lateinit var timeProvider: MockTimeProvider @Inject lateinit var checkpointManager: MockCheckpointManager @@ -36,52 +37,49 @@ class TimedForcedCheckpointFlushTaskTest { @Test fun testTaskWillNotFlushIfTimeNotElapsed() = runTest { - val delayMs = 100L - val task = flushTaskFactory.make(taskLauncher, delayMs) + checkpointManager.maxNumFlushAttempts = 1 // One loop at most + + val delayMs = config.maxCheckpointFlushTimeMs timeProvider.setCurrentTime(0L) - val mockLastFlushTime = delayMs + config.maxCheckpointFlushTimeMs - 1L + val mockLastFlushTime = 1L checkpointManager.mockLastFlushTimeMs = mockLastFlushTime - task.execute() - Assertions.assertEquals( - delayMs, - timeProvider.currentTimeMillis(), - "task delayed the specified time" - ) + try { + flushTask.execute() + } catch (e: IllegalStateException) { + // do nothing + } Assertions.assertEquals( mutableListOf(delayMs), checkpointManager.flushedAtMs, - "task tried to flush" + "task tried to flush at delay time" ) Assertions.assertNull(queueReader.poll(), "task did not produce a force flush event") - val mockTimeSinceLastFlush = timeProvider.currentTimeMillis() - mockLastFlushTime - val nextRun = config.maxCheckpointFlushTimeMs - mockTimeSinceLastFlush - Assertions.assertEquals( - listOf(nextRun), - taskLauncher.scheduledForcedFlushes, - "task scheduled next flush for remaining interval" - ) + Assertions.assertEquals(delayMs + mockLastFlushTime, timeProvider.currentTimeMillis()) } @Test fun testTaskWillFlushIfTimeElapsed() = runTest { - val delayMs = - config.maxCheckpointFlushTimeMs // task uses flush interval as delay by default - val task = flushTaskFactory.make(taskLauncher) + checkpointManager.maxNumFlushAttempts = 1 + val delayMs = config.maxCheckpointFlushTimeMs timeProvider.setCurrentTime(0L) checkpointManager.mockLastFlushTimeMs = 0L val expectedMap = mutableMapOf(DestinationStream.Descriptor(name = "test", namespace = "testing") to 999L) checkpointManager.mockCheckpointIndexes = expectedMap - task.execute() + try { + flushTask.execute() + } catch (e: IllegalStateException) { + // do nothing + } Assertions.assertEquals( - delayMs, + delayMs * 2, timeProvider.currentTimeMillis(), - "task delayed for the configured interval" + "task delayed for the configured interval twice (once at the beginning, once after successfully flushing)" ) Assertions.assertEquals( listOf(delayMs), checkpointManager.flushedAtMs, - "task tried to flush" + "task tried to flush immediately" ) val flushEvent = queueReader.poll() Assertions.assertEquals( @@ -89,10 +87,5 @@ class TimedForcedCheckpointFlushTaskTest { flushEvent?.indexes, "task produced a force flush event with indexes provided by the checkpoint manager" ) - Assertions.assertEquals( - listOf(config.maxCheckpointFlushTimeMs), - taskLauncher.scheduledForcedFlushes, - "task scheduled next flush for full interval" - ) } } From dd5adef0d412e336d7d4ae8dfb3de3fd13517b6a Mon Sep 17 00:00:00 2001 From: Serhii Lazebnyi <53845333+lazebnyi@users.noreply.github.com> Date: Mon, 7 Oct 2024 23:26:48 +0200 Subject: [PATCH 173/379] feat(concurrent-cdk): add to concurrent per slice tracking of the most recent cursor (#45180) --- .../concurrent_read_processor.py | 10 +-- .../file_based/stream/concurrent/adapters.py | 8 +-- .../sources/streams/concurrent/adapters.py | 8 ++- .../sources/streams/concurrent/cursor.py | 31 +++++---- .../streams/concurrent/partitions/record.py | 13 ++-- .../abstract_stream_state_converter.py | 30 +++++--- .../stream/concurrent/test_adapters.py | 6 +- .../scenarios/incremental_scenarios.py | 12 ++-- .../scenarios/stream_facade_scenarios.py | 4 +- ...hread_based_concurrent_stream_scenarios.py | 17 ++--- .../streams/concurrent/test_adapters.py | 6 +- .../test_concurrent_read_processor.py | 4 +- .../sources/streams/concurrent/test_cursor.py | 69 +++++++++++-------- .../test_datetime_state_converter.py | 16 ++--- .../sources/streams/test_stream_read.py | 19 +++++ 15 files changed, 154 insertions(+), 99 deletions(-) diff --git a/airbyte-cdk/python/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py b/airbyte-cdk/python/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py index 40cc771ab7800..bd186c6dfa2b1 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py @@ -122,20 +122,22 @@ def on_record(self, record: Record) -> Iterable[AirbyteMessage]: 1. Convert the record to an AirbyteMessage 2. If this is the first record for the stream, mark the stream as RUNNING 3. Increment the record counter for the stream - 4. Emit the message - 5. Emit messages that were added to the message repository + 4. Ensures the cursor knows the record has been successfully emitted + 5. Emit the message + 6. Emit messages that were added to the message repository """ # Do not pass a transformer or a schema # AbstractStreams are expected to return data as they are expected. # Any transformation on the data should be done before reaching this point - message = stream_data_to_airbyte_message(record.stream_name, record.data) - stream = self._stream_name_to_instance[record.stream_name] + message = stream_data_to_airbyte_message(record.partition.stream_name(), record.data) + stream = self._stream_name_to_instance[record.partition.stream_name()] if message.type == MessageType.RECORD: if self._record_counter[stream.name] == 0: self._logger.info(f"Marking stream {stream.name} as RUNNING") yield stream_status_as_airbyte_message(stream.as_airbyte_stream(), AirbyteStreamStatus.RUNNING) self._record_counter[stream.name] += 1 + stream.cursor.observe(record) yield message yield from self._message_repository.consume_queue() diff --git a/airbyte-cdk/python/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py b/airbyte-cdk/python/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py index 3fe6ff829d6a1..cb20dd9aab3ec 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py @@ -147,7 +147,7 @@ def get_files(self) -> Iterable[RemoteFile]: return self._legacy_stream.get_files() def read_records_from_slice(self, stream_slice: StreamSlice) -> Iterable[Mapping[str, Any]]: - yield from self._legacy_stream.read_records_from_slice(stream_slice) + yield from self._legacy_stream.read_records_from_slice(stream_slice) # type: ignore[misc] # Only Mapping[str, Any] is expected for legacy streams, not AirbyteMessage def compute_slices(self) -> Iterable[Optional[StreamSlice]]: return self._legacy_stream.compute_slices() @@ -228,10 +228,10 @@ def read(self) -> Iterable[Record]: if isinstance(record_data, Mapping): data_to_return = dict(record_data) self._stream.transformer.transform(data_to_return, self._stream.get_json_schema()) - yield Record(data_to_return, self.stream_name()) - elif isinstance(record_data, AirbyteMessage) and record_data.type == Type.RECORD: + yield Record(data_to_return, self) + elif isinstance(record_data, AirbyteMessage) and record_data.type == Type.RECORD and record_data.record is not None: # `AirbyteMessage`s of type `Record` should also be yielded so they are enqueued - yield Record(record_data.record.data, self.stream_name()) + yield Record(record_data.record.data, self) else: self._message_repository.emit_message(record_data) except Exception as e: diff --git a/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/adapters.py b/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/adapters.py index 3ba1b4ab86163..df1ec1b62affb 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/adapters.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/adapters.py @@ -167,6 +167,10 @@ def cursor_field(self) -> Union[str, List[str]]: else: return self._abstract_stream.cursor_field + @property + def cursor(self) -> Optional[Cursor]: # type: ignore[override] # StreamFaced expects to use only airbyte_cdk.sources.streams.concurrent.cursor.Cursor + return self._cursor + @lru_cache(maxsize=None) def get_json_schema(self) -> Mapping[str, Any]: return self._abstract_stream.get_json_schema() @@ -259,9 +263,7 @@ def read(self) -> Iterable[Record]: if isinstance(record_data, Mapping): data_to_return = dict(record_data) self._stream.transformer.transform(data_to_return, self._stream.get_json_schema()) - record = Record(data_to_return, self._stream.name) - self._cursor.observe(record) - yield Record(data_to_return, self._stream.name) + yield Record(data_to_return, self) else: self._message_repository.emit_message(record_data) except Exception as e: diff --git a/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/cursor.py b/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/cursor.py index ba6c4fba35998..523e8af7deaa7 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/cursor.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/cursor.py @@ -163,11 +163,11 @@ def __init__( self._slice_boundary_fields = slice_boundary_fields if slice_boundary_fields else tuple() self._start = start self._end_provider = end_provider - self._most_recent_record: Optional[Record] = None - self._has_closed_at_least_one_slice = False self.start, self._concurrent_state = self._get_concurrent_state(stream_state) self._lookback_window = lookback_window self._slice_range = slice_range + self._most_recent_cursor_value_per_partition: MutableMapping[Partition, Any] = {} + self._has_closed_at_least_one_slice = False self._cursor_granularity = cursor_granularity @property @@ -180,14 +180,11 @@ def _get_concurrent_state(self, state: MutableMapping[str, Any]) -> Tuple[Cursor return self._connector_state_converter.convert_from_sequential_state(self._cursor_field, state, self._start) def observe(self, record: Record) -> None: - if self._slice_boundary_fields: - # Given that slicing is done using the cursor field, we don't need to observe the record as we assume slices will describe what - # has been emitted. Assuming there is a chance that records might not be yet populated for the most recent slice, use a lookback - # window - return + most_recent_cursor_value = self._most_recent_cursor_value_per_partition.get(record.partition) + cursor_value = self._extract_cursor_value(record) - if not self._most_recent_record or self._extract_cursor_value(self._most_recent_record) < self._extract_cursor_value(record): - self._most_recent_record = record + if most_recent_cursor_value is None or most_recent_cursor_value < cursor_value: + self._most_recent_cursor_value_per_partition[record.partition] = cursor_value def _extract_cursor_value(self, record: Record) -> Any: return self._connector_state_converter.parse_value(self._cursor_field.extract_value(record)) @@ -201,6 +198,8 @@ def close_partition(self, partition: Partition) -> None: self._has_closed_at_least_one_slice = True def _add_slice_to_state(self, partition: Partition) -> None: + most_recent_cursor_value = self._most_recent_cursor_value_per_partition.get(partition) + if self._slice_boundary_fields: if "slices" not in self.state: raise RuntimeError( @@ -208,11 +207,16 @@ def _add_slice_to_state(self, partition: Partition) -> None: ) self.state["slices"].append( { - "start": self._extract_from_slice(partition, self._slice_boundary_fields[self._START_BOUNDARY]), - "end": self._extract_from_slice(partition, self._slice_boundary_fields[self._END_BOUNDARY]), + self._connector_state_converter.START_KEY: self._extract_from_slice( + partition, self._slice_boundary_fields[self._START_BOUNDARY] + ), + self._connector_state_converter.END_KEY: self._extract_from_slice( + partition, self._slice_boundary_fields[self._END_BOUNDARY] + ), + "most_recent_cursor_value": most_recent_cursor_value, } ) - elif self._most_recent_record: + elif most_recent_cursor_value: if self._has_closed_at_least_one_slice: # If we track state value using records cursor field, we can only do that if there is one partition. This is because we save # the state every time we close a partition. We assume that if there are multiple slices, they need to be providing @@ -232,7 +236,8 @@ def _add_slice_to_state(self, partition: Partition) -> None: self.state["slices"].append( { self._connector_state_converter.START_KEY: self.start, - self._connector_state_converter.END_KEY: self._extract_cursor_value(self._most_recent_record), + self._connector_state_converter.END_KEY: most_recent_cursor_value, + "most_recent_cursor_value": most_recent_cursor_value, } ) diff --git a/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/partitions/record.py b/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/partitions/record.py index 19f3454eefab4..05cd70c3b378a 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/partitions/record.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/partitions/record.py @@ -2,7 +2,10 @@ # Copyright (c) 2023 Airbyte, Inc., all rights reserved. # -from typing import Any, Mapping +from typing import TYPE_CHECKING, Any, Mapping + +if TYPE_CHECKING: + from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition class Record: @@ -10,14 +13,14 @@ class Record: Represents a record read from a stream. """ - def __init__(self, data: Mapping[str, Any], stream_name: str): + def __init__(self, data: Mapping[str, Any], partition: "Partition"): self.data = data - self.stream_name = stream_name + self.partition = partition def __eq__(self, other: Any) -> bool: if not isinstance(other, Record): return False - return self.data == other.data and self.stream_name == other.stream_name + return self.data == other.data and self.partition.stream_name() == other.partition.stream_name() def __repr__(self) -> str: - return f"Record(data={self.data}, stream_name={self.stream_name})" + return f"Record(data={self.data}, stream_name={self.partition.stream_name()})" diff --git a/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py b/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py index e442dc6d97e96..6211f886c7cf4 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py @@ -51,10 +51,10 @@ def _get_latest_complete_time(self, slices: List[MutableMapping[str, Any]]) -> A """ if not slices: raise RuntimeError("Expected at least one slice but there were none. This is unexpected; please contact Support.") - merged_intervals = self.merge_intervals(slices) first_interval = merged_intervals[0] - return first_interval[self.END_KEY] + + return first_interval.get("most_recent_cursor_value") or first_interval[self.START_KEY] def deserialize(self, state: MutableMapping[str, Any]) -> MutableMapping[str, Any]: """ @@ -120,17 +120,27 @@ def merge_intervals(self, intervals: List[MutableMapping[str, Any]]) -> List[Mut if not intervals: return [] - sorted_intervals = sorted(intervals, key=lambda x: (x[self.START_KEY], x[self.END_KEY])) + sorted_intervals = sorted(intervals, key=lambda interval: (interval[self.START_KEY], interval[self.END_KEY])) merged_intervals = [sorted_intervals[0]] - for interval in sorted_intervals[1:]: - last_end_time = merged_intervals[-1][self.END_KEY] - current_start_time = interval[self.START_KEY] - if bool(self.increment(last_end_time) >= current_start_time): - merged_end_time = max(last_end_time, interval[self.END_KEY]) - merged_intervals[-1][self.END_KEY] = merged_end_time + for current_interval in sorted_intervals[1:]: + last_interval = merged_intervals[-1] + last_interval_end = last_interval[self.END_KEY] + current_interval_start = current_interval[self.START_KEY] + + if self.increment(last_interval_end) >= current_interval_start: + last_interval[self.END_KEY] = max(last_interval_end, current_interval[self.END_KEY]) + last_interval_cursor_value = last_interval.get("most_recent_cursor_value") + current_interval_cursor_value = current_interval.get("most_recent_cursor_value") + + last_interval["most_recent_cursor_value"] = ( + max(current_interval_cursor_value, last_interval_cursor_value) + if current_interval_cursor_value and last_interval_cursor_value + else current_interval_cursor_value or last_interval_cursor_value + ) else: - merged_intervals.append(interval) + # Add a new interval if no overlap + merged_intervals.append(current_interval) return merged_intervals diff --git a/airbyte-cdk/python/unit_tests/sources/file_based/stream/concurrent/test_adapters.py b/airbyte-cdk/python/unit_tests/sources/file_based/stream/concurrent/test_adapters.py index 95d59fc82ceb1..9d10ff5e051b7 100644 --- a/airbyte-cdk/python/unit_tests/sources/file_based/stream/concurrent/test_adapters.py +++ b/airbyte-cdk/python/unit_tests/sources/file_based/stream/concurrent/test_adapters.py @@ -70,12 +70,12 @@ def test_file_based_stream_partition_generator(sync_mode): [ pytest.param( TypeTransformer(TransformConfig.NoTransform), - [Record({"data": "1"}, _STREAM_NAME), Record({"data": "2"}, _STREAM_NAME)], + [Record({"data": "1"}, Mock(spec=FileBasedStreamPartition, stream_name=Mock(return_value=_STREAM_NAME))), Record({"data": "2"}, Mock(spec=FileBasedStreamPartition, stream_name=Mock(return_value=_STREAM_NAME)))], id="test_no_transform", ), pytest.param( TypeTransformer(TransformConfig.DefaultSchemaNormalization), - [Record({"data": 1}, _STREAM_NAME), Record({"data": 2}, _STREAM_NAME)], + [Record({"data": 1}, Mock(spec=FileBasedStreamPartition, stream_name=Mock(return_value=_STREAM_NAME))), Record({"data": 2}, Mock(spec=FileBasedStreamPartition, stream_name=Mock(return_value=_STREAM_NAME)))], id="test_default_transform", ), ], @@ -216,9 +216,9 @@ def test_given_cursor_is_not_noop_when_supports_incremental_then_return_true(sel def test_full_refresh(self): expected_stream_data = [{"data": 1}, {"data": 2}] - records = [Record(data, "stream") for data in expected_stream_data] partition = Mock() + records = [Record(data, partition) for data in expected_stream_data] partition.read.return_value = records self._abstract_stream.generate_partitions.return_value = [partition] diff --git a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/incremental_scenarios.py b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/incremental_scenarios.py index 11d64a1be6dc8..f3a4df1433cfc 100644 --- a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/incremental_scenarios.py +++ b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/incremental_scenarios.py @@ -79,8 +79,8 @@ {"cursor_field": 1}, {"data": {"id": "3", "cursor_field": 2}, "stream": "stream1"}, {"data": {"id": "4", "cursor_field": 3}, "stream": "stream1"}, - {"cursor_field": 2}, - {"cursor_field": 2}, # see Cursor.ensure_at_least_one_state_emitted + {"cursor_field": 3}, + {"cursor_field": 3}, # see Cursor.ensure_at_least_one_state_emitted ] ) .set_log_levels({"ERROR", "WARN", "WARNING", "INFO", "DEBUG"}) @@ -158,8 +158,8 @@ {"cursor_field": 1}, {"data": {"id": "3", "cursor_field": 2}, "stream": "stream1"}, {"data": {"id": "4", "cursor_field": 3}, "stream": "stream1"}, - {"cursor_field": 2}, - {"cursor_field": 2}, # see Cursor.ensure_at_least_one_state_emitted + {"cursor_field": 3}, + {"cursor_field": 3}, # see Cursor.ensure_at_least_one_state_emitted ] ) .set_log_levels({"ERROR", "WARN", "WARNING", "INFO", "DEBUG"}) @@ -247,8 +247,8 @@ {"cursor_field": 1}, {"data": {"id": "3", "cursor_field": 2}, "stream": "stream1"}, {"data": {"id": "4", "cursor_field": 3}, "stream": "stream1"}, - {"cursor_field": 2}, - {"cursor_field": 2}, # see Cursor.ensure_at_least_one_state_emitted + {"cursor_field": 3}, + {"cursor_field": 3}, # see Cursor.ensure_at_least_one_state_emitted ] ) .set_log_levels({"ERROR", "WARN", "WARNING", "INFO", "DEBUG"}) diff --git a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/stream_facade_scenarios.py b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/stream_facade_scenarios.py index 9c4db4727fabf..41483282821c7 100644 --- a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/stream_facade_scenarios.py +++ b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/stream_facade_scenarios.py @@ -362,8 +362,8 @@ {"cursor_field": 1}, {"data": {"id": "3", "cursor_field": 2}, "stream": "stream1"}, {"data": {"id": "4", "cursor_field": 3}, "stream": "stream1"}, - {"cursor_field": 2}, - {"cursor_field": 2}, # see Cursor.ensure_at_least_one_state_emitted + {"cursor_field": 3}, + {"cursor_field": 3}, # see Cursor.ensure_at_least_one_state_emitted ] ) .set_log_levels({"ERROR", "WARN", "WARNING", "INFO", "DEBUG"}) diff --git a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/thread_based_concurrent_stream_scenarios.py b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/thread_based_concurrent_stream_scenarios.py index 845d481218f73..919b88d61cc7e 100644 --- a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/thread_based_concurrent_stream_scenarios.py +++ b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/scenarios/thread_based_concurrent_stream_scenarios.py @@ -20,7 +20,7 @@ _id_only_stream = DefaultStream( partition_generator=InMemoryPartitionGenerator( - [InMemoryPartition("partition1", "stream1", None, [Record({"id": "1"}, "stream1"), Record({"id": "2"}, "stream1")])] + [InMemoryPartition("partition1", "stream1", None, [Record({"id": "1"}, InMemoryPartition("partition1", "stream1", None, [])), Record({"id": "2"}, InMemoryPartition("partition1", "stream1", None, []))])] ), name="stream1", json_schema={ @@ -56,7 +56,7 @@ _id_only_stream_with_primary_key = DefaultStream( partition_generator=InMemoryPartitionGenerator( - [InMemoryPartition("partition1", "stream1", None, [Record({"id": "1"}, "stream1"), Record({"id": "2"}, "stream1")])] + [InMemoryPartition("partition1", "stream1", None, [Record({"id": "1"}, InMemoryPartition("partition1", "stream1", None, [])), Record({"id": "2"}, InMemoryPartition("partition1", "stream1", None, []))])] ), name="stream1", json_schema={ @@ -75,8 +75,8 @@ _id_only_stream_multiple_partitions = DefaultStream( partition_generator=InMemoryPartitionGenerator( [ - InMemoryPartition("partition1", "stream1", {"p": "1"}, [Record({"id": "1"}, "stream1"), Record({"id": "2"}, "stream1")]), - InMemoryPartition("partition2", "stream1", {"p": "2"}, [Record({"id": "3"}, "stream1"), Record({"id": "4"}, "stream1")]), + InMemoryPartition("partition1", "stream1", {"p": "1"}, [Record({"id": "1"}, InMemoryPartition("partition1", "stream1", None, [])), Record({"id": "2"}, InMemoryPartition("partition1", "stream1", None, []))]), + InMemoryPartition("partition2", "stream1", {"p": "2"}, [Record({"id": "3"}, InMemoryPartition("partition1", "stream1", None, [])), Record({"id": "4"}, InMemoryPartition("partition1", "stream1", None, []))]), ] ), name="stream1", @@ -96,8 +96,8 @@ _id_only_stream_multiple_partitions_concurrency_level_two = DefaultStream( partition_generator=InMemoryPartitionGenerator( [ - InMemoryPartition("partition1", "stream1", {"p": "1"}, [Record({"id": "1"}, "stream1"), Record({"id": "2"}, "stream1")]), - InMemoryPartition("partition2", "stream1", {"p": "2"}, [Record({"id": "3"}, "stream1"), Record({"id": "4"}, "stream1")]), + InMemoryPartition("partition1", "stream1", {"p": "1"}, [Record({"id": "1"}, InMemoryPartition("partition1", "stream1", None, [])), Record({"id": "2"}, InMemoryPartition("partition1", "stream1", None, []))]), + InMemoryPartition("partition2", "stream1", {"p": "2"}, [Record({"id": "3"}, InMemoryPartition("partition1", "stream1", None, [])), Record({"id": "4"}, InMemoryPartition("partition1", "stream1", None, []))]), ] ), name="stream1", @@ -116,7 +116,7 @@ _stream_raising_exception = DefaultStream( partition_generator=InMemoryPartitionGenerator( - [InMemoryPartition("partition1", "stream1", None, [Record({"id": "1"}, "stream1"), ValueError("test exception")])] + [InMemoryPartition("partition1", "stream1", None, [Record({"id": "1"}, InMemoryPartition("partition1", "stream1", None, [])), ValueError("test exception")])] ), name="stream1", json_schema={ @@ -240,7 +240,8 @@ "partition1", "stream2", None, - [Record({"id": "10", "key": "v1"}, "stream2"), Record({"id": "20", "key": "v2"}, "stream2")], + [Record({"id": "10", "key": "v1"}, InMemoryPartition("partition1", "stream2", None, [])), + Record({"id": "20", "key": "v2"}, InMemoryPartition("partition1", "stream2", None, []))], ) ] ), diff --git a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_adapters.py b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_adapters.py index d7bde623dfe4e..b8cd21b5cd714 100644 --- a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_adapters.py +++ b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_adapters.py @@ -80,12 +80,12 @@ def test_stream_partition_generator(sync_mode): [ pytest.param( TypeTransformer(TransformConfig.NoTransform), - [Record({"data": "1"}, _STREAM_NAME), Record({"data": "2"}, _STREAM_NAME)], + [Record({"data": "1"}, None), Record({"data": "2"}, None)], id="test_no_transform", ), pytest.param( TypeTransformer(TransformConfig.DefaultSchemaNormalization), - [Record({"data": 1}, _STREAM_NAME), Record({"data": 2}, _STREAM_NAME)], + [Record({"data": 1}, None), Record({"data": 2}, None)], id="test_default_transform", ), ], @@ -109,6 +109,8 @@ def test_stream_partition(transformer, expected_records): message='slice:{"partition": 1}', ), ) + for record in expected_records: + record.partition = partition stream_data = [a_log_message, {"data": "1"}, {"data": "2"}] stream.read_records.return_value = stream_data diff --git a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_concurrent_read_processor.py b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_concurrent_read_processor.py index 31688999372d0..9d561cf65bfcc 100644 --- a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_concurrent_read_processor.py +++ b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_concurrent_read_processor.py @@ -75,8 +75,10 @@ def setUp(self): ) self._record_data = {"id": 1, "value": "A"} + self._partition = Mock(spec=Partition) + self._partition.stream_name = lambda: _STREAM_NAME self._record = Mock(spec=Record) - self._record.stream_name = _STREAM_NAME + self._record.partition = self._partition self._record.data = self._record_data def test_stream_is_not_done_initially(self): diff --git a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_cursor.py b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_cursor.py index 5d7d318ef5d5d..1327bafda7ea6 100644 --- a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_cursor.py +++ b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_cursor.py @@ -38,14 +38,15 @@ _NO_LOOKBACK_WINDOW = timedelta(seconds=0) -def _partition(_slice: Optional[Mapping[str, Any]]) -> Partition: +def _partition(_slice: Optional[Mapping[str, Any]], _stream_name: Optional[str] = Mock()) -> Partition: partition = Mock(spec=Partition) partition.to_slice.return_value = _slice + partition.stream_name.return_value = _stream_name return partition -def _record(cursor_value: CursorValueType) -> Record: - return Record(data={_A_CURSOR_FIELD_KEY: cursor_value}, stream_name=_A_STREAM_NAME) +def _record(cursor_value: CursorValueType, partition: Optional[Partition] = Mock(spec=Partition)) -> Record: + return Record(data={_A_CURSOR_FIELD_KEY: cursor_value}, partition=partition) class ConcurrentCursorStateTest(TestCase): @@ -113,7 +114,7 @@ def test_given_state_not_sequential_when_close_partition_then_emit_state(self) - {"slices": [{"end": 0, "start": 0}, {"end": 30, "start": 12}], "state_type": "date-range"}, ) - def test_given_boundary_fields_when_close_partition_then_emit_updated_state(self) -> None: + def test_close_partition_emits_message_to_lower_boundary_when_no_prior_state_exists(self) -> None: self._cursor_with_slice_boundary_fields().close_partition( _partition( {_LOWER_SLICE_BOUNDARY_FIELD: 0, _UPPER_SLICE_BOUNDARY_FIELD: 30}, @@ -124,7 +125,7 @@ def test_given_boundary_fields_when_close_partition_then_emit_updated_state(self self._state_manager.update_state_for_stream.assert_called_once_with( _A_STREAM_NAME, _A_STREAM_NAMESPACE, - {_A_CURSOR_FIELD_KEY: 30}, # State message is updated to the legacy format before being emitted + {_A_CURSOR_FIELD_KEY: 0}, # State message is updated to the lower slice boundary ) def test_given_boundary_fields_and_record_observed_when_close_partition_then_ignore_records(self) -> None: @@ -137,8 +138,9 @@ def test_given_boundary_fields_and_record_observed_when_close_partition_then_ign def test_given_no_boundary_fields_when_close_partition_then_emit_state(self) -> None: cursor = self._cursor_without_slice_boundary_fields() - cursor.observe(_record(10)) - cursor.close_partition(_partition(_NO_SLICE)) + partition = _partition(_NO_SLICE) + cursor.observe(_record(10, partition=partition)) + cursor.close_partition(partition) self._state_manager.update_state_for_stream.assert_called_once_with( _A_STREAM_NAME, @@ -148,11 +150,12 @@ def test_given_no_boundary_fields_when_close_partition_then_emit_state(self) -> def test_given_no_boundary_fields_when_close_multiple_partitions_then_raise_exception(self) -> None: cursor = self._cursor_without_slice_boundary_fields() - cursor.observe(_record(10)) - cursor.close_partition(_partition(_NO_SLICE)) + partition = _partition(_NO_SLICE) + cursor.observe(_record(10, partition=partition)) + cursor.close_partition(partition) with pytest.raises(ValueError): - cursor.close_partition(_partition(_NO_SLICE)) + cursor.close_partition(partition) def test_given_no_records_observed_when_close_partition_then_do_not_emit_state(self) -> None: cursor = self._cursor_without_slice_boundary_fields() @@ -629,27 +632,32 @@ def test_observe_concurrent_cursor_from_datetime_based_cursor(): slice_range=step_length, ) + partition = _partition( + {_LOWER_SLICE_BOUNDARY_FIELD: "2024-08-01T00:00:00.000000+0000", _UPPER_SLICE_BOUNDARY_FIELD: "2024-09-01T00:00:00.000000+0000"}, + _stream_name="gods", + ) + record_1 = Record( - stream_name="gods", data={"id": "999", "updated_at": "2024-08-23T00:00:00.000000+0000", "name": "kratos", "mythology": "greek"}, + partition=partition, data={"id": "999", "updated_at": "2024-08-23T00:00:00.000000+0000", "name": "kratos", "mythology": "greek"}, ) record_2 = Record( - stream_name="gods", data={"id": "1000", "updated_at": "2024-08-22T00:00:00.000000+0000", "name": "odin", "mythology": "norse"}, + partition=partition, data={"id": "1000", "updated_at": "2024-08-22T00:00:00.000000+0000", "name": "odin", "mythology": "norse"}, ) record_3 = Record( - stream_name="gods", data={"id": "500", "updated_at": "2024-08-24T00:00:00.000000+0000", "name": "freya", "mythology": "norse"}, + partition=partition, data={"id": "500", "updated_at": "2024-08-24T00:00:00.000000+0000", "name": "freya", "mythology": "norse"}, ) concurrent_cursor.observe(record_1) - actual_most_recent_record = concurrent_cursor._most_recent_record - assert actual_most_recent_record == record_1 + actual_most_recent_record = concurrent_cursor._most_recent_cursor_value_per_partition[partition] + assert actual_most_recent_record == concurrent_cursor._extract_cursor_value(record_1) concurrent_cursor.observe(record_2) - actual_most_recent_record = concurrent_cursor._most_recent_record - assert actual_most_recent_record == record_1 + actual_most_recent_record = concurrent_cursor._most_recent_cursor_value_per_partition[partition] + assert actual_most_recent_record == concurrent_cursor._extract_cursor_value(record_1) concurrent_cursor.observe(record_3) - actual_most_recent_record = concurrent_cursor._most_recent_record - assert actual_most_recent_record == record_3 + actual_most_recent_record = concurrent_cursor._most_recent_cursor_value_per_partition[partition] + assert actual_most_recent_record == concurrent_cursor._extract_cursor_value(record_3) @freezegun.freeze_time(time_to_freeze=datetime(2024, 9, 1, 0, 0, 0, 0, tzinfo=timezone.utc)) @@ -694,10 +702,11 @@ def test_close_partition_concurrent_cursor_from_datetime_based_cursor(): partition = _partition( {_LOWER_SLICE_BOUNDARY_FIELD: "2024-08-01T00:00:00.000000+0000", _UPPER_SLICE_BOUNDARY_FIELD: "2024-09-01T00:00:00.000000+0000"}, + _stream_name="gods", ) record_1 = Record( - stream_name="gods", data={"id": "999", "updated_at": "2024-08-23T00:00:00.000000+0000", "name": "kratos", "mythology": "greek"}, + partition=partition, data={"id": "999", "updated_at": "2024-08-23T00:00:00.000000+0000", "name": "kratos", "mythology": "greek"}, ) concurrent_cursor.observe(record_1) @@ -762,16 +771,16 @@ def test_close_partition_with_slice_range_concurrent_cursor_from_datetime_based_ ) partition_0 = _partition( - {"start_time": "2024-07-01T00:00:00.000000+0000", "end_time": "2024-07-16T00:00:00.000000+0000"}, + {"start_time": "2024-07-01T00:00:00.000000+0000", "end_time": "2024-07-16T00:00:00.000000+0000"}, _stream_name="gods", ) partition_3 = _partition( - {"start_time": "2024-08-15T00:00:00.000000+0000", "end_time": "2024-08-30T00:00:00.000000+0000"}, + {"start_time": "2024-08-15T00:00:00.000000+0000", "end_time": "2024-08-30T00:00:00.000000+0000"}, _stream_name="gods", ) record_1 = Record( - stream_name="gods", data={"id": "1000", "updated_at": "2024-07-05T00:00:00.000000+0000", "name": "loki", "mythology": "norse"}, + partition=partition_0, data={"id": "1000", "updated_at": "2024-07-05T00:00:00.000000+0000", "name": "loki", "mythology": "norse"}, ) record_2 = Record( - stream_name="gods", data={"id": "999", "updated_at": "2024-08-20T00:00:00.000000+0000", "name": "kratos", "mythology": "greek"}, + partition=partition_3, data={"id": "999", "updated_at": "2024-08-20T00:00:00.000000+0000", "name": "kratos", "mythology": "greek"}, ) concurrent_cursor.observe(record_1) @@ -846,22 +855,22 @@ def test_close_partition_with_slice_range_granularity_concurrent_cursor_from_dat ) partition_0 = _partition( - {"start_time": "2024-07-01T00:00:00.000000+0000", "end_time": "2024-07-15T00:00:00.000000+0000"}, + {"start_time": "2024-07-01T00:00:00.000000+0000", "end_time": "2024-07-15T00:00:00.000000+0000"}, _stream_name="gods", ) partition_1 = _partition( - {"start_time": "2024-07-16T00:00:00.000000+0000", "end_time": "2024-07-31T00:00:00.000000+0000"}, + {"start_time": "2024-07-16T00:00:00.000000+0000", "end_time": "2024-07-31T00:00:00.000000+0000"}, _stream_name="gods", ) partition_3 = _partition( - {"start_time": "2024-08-15T00:00:00.000000+0000", "end_time": "2024-08-29T00:00:00.000000+0000"}, + {"start_time": "2024-08-15T00:00:00.000000+0000", "end_time": "2024-08-29T00:00:00.000000+0000"}, _stream_name="gods", ) record_1 = Record( - stream_name="gods", data={"id": "1000", "updated_at": "2024-07-05T00:00:00.000000+0000", "name": "loki", "mythology": "norse"}, + partition=partition_0, data={"id": "1000", "updated_at": "2024-07-05T00:00:00.000000+0000", "name": "loki", "mythology": "norse"}, ) record_2 = Record( - stream_name="gods", data={"id": "2000", "updated_at": "2024-07-25T00:00:00.000000+0000", "name": "freya", "mythology": "norse"}, + partition=partition_1, data={"id": "2000", "updated_at": "2024-07-25T00:00:00.000000+0000", "name": "freya", "mythology": "norse"}, ) record_3 = Record( - stream_name="gods", data={"id": "999", "updated_at": "2024-08-20T00:00:00.000000+0000", "name": "kratos", "mythology": "greek"}, + partition=partition_3, data={"id": "999", "updated_at": "2024-08-20T00:00:00.000000+0000", "name": "kratos", "mythology": "greek"}, ) concurrent_cursor.observe(record_1) diff --git a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_datetime_state_converter.py b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_datetime_state_converter.py index aeaf5ae5a50ba..7a8e4027b43d2 100644 --- a/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_datetime_state_converter.py +++ b/airbyte-cdk/python/unit_tests/sources/streams/concurrent/test_datetime_state_converter.py @@ -246,7 +246,7 @@ def test_convert_from_sequential_state(converter, start, sequential_state, expec } ], }, - {"created": 1617030403}, + {"created": 172800}, id="epoch-single-slice", ), pytest.param( @@ -255,7 +255,7 @@ def test_convert_from_sequential_state(converter, start, sequential_state, expec "state_type": "date-range", "slices": [ { - "start": datetime(1970, 1, 1, 0, 0, 0, tzinfo=timezone.utc), + "start": datetime(1970, 1, 3, 0, 0, 0, tzinfo=timezone.utc), "end": datetime(2021, 3, 29, 15, 6, 43, tzinfo=timezone.utc), }, { @@ -264,7 +264,7 @@ def test_convert_from_sequential_state(converter, start, sequential_state, expec }, ], }, - {"created": 1648566403}, + {"created": 172800}, id="epoch-overlapping-slices", ), pytest.param( @@ -273,7 +273,7 @@ def test_convert_from_sequential_state(converter, start, sequential_state, expec "state_type": "date-range", "slices": [ { - "start": datetime(1970, 1, 1, 0, 0, 0, tzinfo=timezone.utc), + "start": datetime(1970, 1, 3, 0, 0, 0, tzinfo=timezone.utc), "end": datetime(2021, 3, 29, 15, 6, 43, tzinfo=timezone.utc), }, { @@ -282,7 +282,7 @@ def test_convert_from_sequential_state(converter, start, sequential_state, expec }, ], }, - {"created": 1617030403}, + {"created": 172800}, id="epoch-multiple-slices", ), pytest.param( @@ -296,7 +296,7 @@ def test_convert_from_sequential_state(converter, start, sequential_state, expec } ], }, - {"created": "2021-03-29T15:06:43.000Z"}, + {"created": "1970-01-03T00:00:00.000Z"}, id="isomillis-single-slice", ), pytest.param( @@ -314,7 +314,7 @@ def test_convert_from_sequential_state(converter, start, sequential_state, expec }, ], }, - {"created": "2022-03-29T15:06:43.000Z"}, + {"created": "1970-01-01T00:00:00.000Z"}, id="isomillis-overlapping-slices", ), pytest.param( @@ -332,7 +332,7 @@ def test_convert_from_sequential_state(converter, start, sequential_state, expec }, ], }, - {"created": "2021-03-29T15:06:43.000Z"}, + {"created": "1970-01-01T00:00:00.000Z"}, id="isomillis-multiple-slices", ), ], diff --git a/airbyte-cdk/python/unit_tests/sources/streams/test_stream_read.py b/airbyte-cdk/python/unit_tests/sources/streams/test_stream_read.py index 9f6f943e08406..5b82ab119d030 100644 --- a/airbyte-cdk/python/unit_tests/sources/streams/test_stream_read.py +++ b/airbyte-cdk/python/unit_tests/sources/streams/test_stream_read.py @@ -23,11 +23,15 @@ SyncMode, ) from airbyte_cdk.models import Type as MessageType +from airbyte_cdk.sources.concurrent_source.concurrent_read_processor import ConcurrentReadProcessor +from airbyte_cdk.sources.concurrent_source.thread_pool_manager import ThreadPoolManager from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager from airbyte_cdk.sources.message import InMemoryMessageRepository, MessageRepository from airbyte_cdk.sources.streams import Stream from airbyte_cdk.sources.streams.concurrent.adapters import StreamFacade from airbyte_cdk.sources.streams.concurrent.cursor import Cursor, FinalStateCursor +from airbyte_cdk.sources.streams.concurrent.partition_enqueuer import PartitionEnqueuer +from airbyte_cdk.sources.streams.concurrent.partition_reader import PartitionReader from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition from airbyte_cdk.sources.streams.concurrent.partitions.record import Record from airbyte_cdk.sources.streams.core import CheckpointMixin, StreamData @@ -433,8 +437,23 @@ def test_concurrent_incremental_read_two_slices(): actual_records = _read(stream, configured_stream, logger, slice_logger, message_repository, state_manager, internal_config) + handler = ConcurrentReadProcessor( + [stream], + Mock(spec=PartitionEnqueuer), + Mock(spec=ThreadPoolManager), + logger, + slice_logger, + message_repository, + Mock(spec=PartitionReader), + ) + for record in expected_records: assert record in actual_records + + # We need run on_record to update cursor with record cursor value + for record in actual_records: + list(handler.on_record(Record(record, Mock(spec=Partition, **{"stream_name.return_value": "__mock_stream"})))) + assert len(actual_records) == len(expected_records) # We don't have a real source that reads from the message_repository for state, so we read from the queue directly to verify From 6ec562ed6aa12a4b90262d14204a55c7a5748e6d Mon Sep 17 00:00:00 2001 From: lazebnyi Date: Mon, 7 Oct 2024 21:33:35 +0000 Subject: [PATCH 174/379] =?UTF-8?q?=F0=9F=A4=96=20minor=20bump=20Python=20?= =?UTF-8?q?CDK=20to=20version=205.11.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-cdk/python/CHANGELOG.md | 3 +++ airbyte-cdk/python/pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/airbyte-cdk/python/CHANGELOG.md b/airbyte-cdk/python/CHANGELOG.md index 4e2f4f112ad68..e9f18d4dcc622 100644 --- a/airbyte-cdk/python/CHANGELOG.md +++ b/airbyte-cdk/python/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 5.11.0 +concurrent-cdk: add per slice tracking of the most recent cursor + ## 5.10.3 do not raise exception on missing stream by default diff --git a/airbyte-cdk/python/pyproject.toml b/airbyte-cdk/python/pyproject.toml index ad724192f4d57..5e682d826c57a 100644 --- a/airbyte-cdk/python/pyproject.toml +++ b/airbyte-cdk/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-cdk" -version = "5.10.3" +version = "5.11.0" description = "A framework for writing Airbyte Connectors." authors = ["Airbyte "] license = "MIT" From 7c9b52930c75fe20aa24961d1c210bf10be82e7b Mon Sep 17 00:00:00 2001 From: lazebnyi Date: Mon, 7 Oct 2024 21:39:41 +0000 Subject: [PATCH 175/379] =?UTF-8?q?=F0=9F=A4=96=20Cut=20version=205.11.0?= =?UTF-8?q?=20of=20source-declarative-manifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-declarative-manifest/metadata.yaml | 2 +- .../connectors/source-declarative-manifest/poetry.lock | 8 ++++---- .../connectors/source-declarative-manifest/pyproject.toml | 4 ++-- docs/integrations/sources/low-code.md | 1 + 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml index f1ba5f13b08ff..c13ea73c47860 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml +++ b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml @@ -8,7 +8,7 @@ data: connectorType: source definitionId: 64a2f99c-542f-4af8-9a6f-355f1217b436 # This version should not be updated manually - it is updated by the CDK release workflow. - dockerImageTag: 5.10.3 + dockerImageTag: 5.11.0 dockerRepository: airbyte/source-declarative-manifest # This page is hidden from the docs for now, since the connector is not in any Airbyte registries. documentationUrl: https://docs.airbyte.com/integrations/sources/low-code diff --git a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock index 746f806b1e9a8..4e56b8d9a2e23 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock +++ b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.10.3" +version = "5.11.0" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.10.3-py3-none-any.whl", hash = "sha256:af0c7974357c787a5e7c51f66788b594b5a5b60c43fad8f5ce16288c6ba16f08"}, - {file = "airbyte_cdk-5.10.3.tar.gz", hash = "sha256:ddf7fdc73786f36530da2ae68197abc590ac2e4d41293e82ac965f0bf5fb55e4"}, + {file = "airbyte_cdk-5.11.0-py3-none-any.whl", hash = "sha256:ab8ed96bc02b28a652f0b9150b289dd17cd494306fd5d349413c7997d9ccddd0"}, + {file = "airbyte_cdk-5.11.0.tar.gz", hash = "sha256:a7a12ddf40ced59bef81d3e27bf618a0a1a54e32276e97d21a38ca958d8b0da4"}, ] [package.dependencies] @@ -1734,4 +1734,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10,<3.12" -content-hash = "8c355582a10a4c2569e126ac51972f7c7e5fbc95d9b83549c4ec677959d3a977" +content-hash = "610b4cb4889d71e98b7d85a6a94ac9d75b26350f32ecfb0b3af5c798745f8aa0" diff --git a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml index e1ecc78981b33..2a4c53f7d0a65 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml +++ b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.10.3" +version = "5.11.0" name = "source-declarative-manifest" description = "Base source implementation for low-code sources." authors = ["Airbyte "] @@ -17,7 +17,7 @@ include = "source_declarative_manifest" [tool.poetry.dependencies] python = "^3.10,<3.12" -airbyte-cdk = "5.10.3" +airbyte-cdk = "5.11.0" [tool.poetry.scripts] source-declarative-manifest = "source_declarative_manifest.run:run" diff --git a/docs/integrations/sources/low-code.md b/docs/integrations/sources/low-code.md index 0ab1500933da4..fec12d8dabd99 100644 --- a/docs/integrations/sources/low-code.md +++ b/docs/integrations/sources/low-code.md @@ -9,6 +9,7 @@ The changelog below is automatically updated by the `bump_version` command as pa | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------- | +| 5.11.0 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.11.0 | | 5.10.3 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.3 | | 5.10.2 | 2024-10-03 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.2 | | 5.10.1 | 2024-10-02 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.1 | From 99f94674f6ac08a7ac4d2dca0aca2196680370f4 Mon Sep 17 00:00:00 2001 From: Patrick Nilan Date: Mon, 7 Oct 2024 15:16:49 -0700 Subject: [PATCH 176/379] [airbyte-cdk] - Consolidate `decoder` selection in low-code CDK (#46313) --- .../declarative/auth/token_provider.py | 6 +- .../declarative_component_schema.yaml | 21 ++-- .../sources/declarative/decoders/decoder.py | 4 +- .../declarative/extractors/dpath_extractor.py | 9 +- .../models/declarative_component_schema.py | 116 ++++++++---------- .../parsers/model_to_component_factory.py | 21 ++-- .../test_model_to_component_factory.py | 27 +++- 7 files changed, 100 insertions(+), 104 deletions(-) diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/auth/token_provider.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/auth/token_provider.py index 80bd0c2bddfe9..c3c2a41f555e1 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/auth/token_provider.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/auth/token_provider.py @@ -35,8 +35,8 @@ class SessionTokenProvider(TokenProvider): expiration_duration: Optional[Union[datetime.timedelta, Duration]] parameters: InitVar[Mapping[str, Any]] message_repository: MessageRepository = NoopMessageRepository() + decoder: Decoder = field(default_factory=lambda: JsonDecoder(parameters={})) - _decoder: Decoder = field(default_factory=lambda: JsonDecoder(parameters={})) _next_expiration_time: Optional[DateTime] = None _token: Optional[str] = None @@ -62,10 +62,10 @@ def _refresh(self) -> None: ) if response is None: raise ReadException("Failed to get session token, response got ignored by requester") - session_token = dpath.get(next(self._decoder.decode(response)), self.session_token_path) + session_token = dpath.get(next(self.decoder.decode(response)), self.session_token_path) if self.expiration_duration is not None: self._next_expiration_time = pendulum.now() + self.expiration_duration - self._token = session_token + self._token = session_token # type: ignore # Returned decoded response will be Mapping and therefore session_token will be str or None @dataclass diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml b/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml index af85f298ca310..b774dab1e535e 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml @@ -384,10 +384,6 @@ definitions: examples: - "{{ response.data.has_more is false }}" - "{{ 'next' not in headers['link'] }}" - decoder: - title: Decoder - description: Component decoding the response so records can be extracted. - "$ref": "#/definitions/JsonDecoder" $parameters: type: object additionalProperties: true @@ -1266,10 +1262,6 @@ definitions: - "$ref": "#/definitions/CustomPaginationStrategy" - "$ref": "#/definitions/OffsetIncrement" - "$ref": "#/definitions/PageIncrement" - decoder: - title: Decoder - description: Component decoding the response so records can be extracted. - "$ref": "#/definitions/JsonDecoder" page_size_option: "$ref": "#/definitions/RequestOption" page_token_option: @@ -1303,12 +1295,6 @@ definitions: - ["data", "records"] - ["data", "{{ parameters.name }}"] - ["data", "*", "record"] - decoder: - title: Decoder - anyOf: - - "$ref": "#/definitions/JsonDecoder" - - "$ref": "#/definitions/JsonlDecoder" - - "$ref": "#/definitions/IterableDecoder" $parameters: type: object additionalProperties: true @@ -1383,6 +1369,11 @@ definitions: anyOf: - "$ref": "#/definitions/SessionTokenRequestApiKeyAuthenticator" - "$ref": "#/definitions/SessionTokenRequestBearerAuthenticator" + decoder: + title: Decoder + description: Component used to decode the response. + anyOf: + - "$ref": "#/definitions/JsonDecoder" $parameters: type: object additionalProperties: true @@ -2399,6 +2390,8 @@ definitions: - creation_requester - polling_requester - download_requester + - status_extractor + - urls_extractor properties: type: type: string diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/decoder.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/decoder.py index 01e6fd2112c2d..4e8fdd64444f9 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/decoder.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/decoder.py @@ -4,7 +4,7 @@ from abc import abstractmethod from dataclasses import dataclass -from typing import Any, Generator, Mapping +from typing import Any, Generator, MutableMapping import requests @@ -22,7 +22,7 @@ def is_stream_response(self) -> bool: """ @abstractmethod - def decode(self, response: requests.Response) -> Generator[Mapping[str, Any], None, None]: + def decode(self, response: requests.Response) -> Generator[MutableMapping[str, Any], None, None]: """ Decodes a requests.Response into a Mapping[str, Any] or an array :param response: the response to decode diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py index 8e56e41d98f53..512d6919d07f2 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py @@ -3,12 +3,11 @@ # from dataclasses import InitVar, dataclass, field -from typing import Any, Iterable, List, Mapping, Union +from typing import Any, Iterable, List, Mapping, MutableMapping, Union import dpath import requests -from airbyte_cdk.sources.declarative.decoders.decoder import Decoder -from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder +from airbyte_cdk.sources.declarative.decoders import Decoder, JsonDecoder from airbyte_cdk.sources.declarative.extractors.record_extractor import RecordExtractor from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString from airbyte_cdk.sources.types import Config @@ -64,7 +63,7 @@ def __post_init__(self, parameters: Mapping[str, Any]) -> None: if isinstance(self.field_path[path_index], str): self._field_path[path_index] = InterpolatedString.create(self.field_path[path_index], parameters=parameters) - def extract_records(self, response: requests.Response) -> Iterable[Mapping[str, Any]]: + def extract_records(self, response: requests.Response) -> Iterable[MutableMapping[Any, Any]]: for body in self.decoder.decode(response): if len(self._field_path) == 0: extracted = body @@ -73,7 +72,7 @@ def extract_records(self, response: requests.Response) -> Iterable[Mapping[str, if "*" in path: extracted = dpath.values(body, path) else: - extracted = dpath.get(body, path, default=[]) + extracted = dpath.get(body, path, default=[]) # type: ignore # extracted will be a MutableMapping, given input data structure if isinstance(extracted, list): yield from extracted elif extracted: diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py index 2a98dc92b533d..1b1e0220a1f13 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py @@ -64,6 +64,36 @@ class ConstantBackoffStrategy(BaseModel): parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') +class CursorPagination(BaseModel): + type: Literal['CursorPagination'] + cursor_value: str = Field( + ..., + description='Value of the cursor defining the next page to fetch.', + examples=[ + '{{ headers.link.next.cursor }}', + "{{ last_record['key'] }}", + "{{ response['nextPage'] }}", + ], + title='Cursor Value', + ) + page_size: Optional[int] = Field( + None, + description='The number of records to include in each pages.', + examples=[100], + title='Page Size', + ) + stop_condition: Optional[str] = Field( + None, + description='Template string evaluating when to stop paginating.', + examples=[ + '{{ response.data.has_more is false }}', + "{{ 'next' not in headers['link'] }}", + ], + title='Stop Condition', + ) + parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') + + class CustomAuthenticator(BaseModel): class Config: extra = Extra.allow @@ -507,6 +537,22 @@ class OAuthAuthenticator(BaseModel): parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') +class DpathExtractor(BaseModel): + type: Literal['DpathExtractor'] + field_path: List[str] = Field( + ..., + description='List of potentially nested fields describing the full path of the field to extract. Use "*" to extract all values from an array. See more info in the [docs](https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/record-selector).', + examples=[ + ['data'], + ['data', 'records'], + ['data', '{{ parameters.name }}'], + ['data', '*', 'record'], + ], + title='Field Path', + ) + parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') + + class ExponentialBackoffStrategy(BaseModel): type: Literal['ExponentialBackoffStrategy'] factor: Optional[Union[float, str]] = Field( @@ -1028,41 +1074,6 @@ class AuthFlow(BaseModel): oauth_config_specification: Optional[OAuthConfigSpecification] = None -class CursorPagination(BaseModel): - type: Literal['CursorPagination'] - cursor_value: str = Field( - ..., - description='Value of the cursor defining the next page to fetch.', - examples=[ - '{{ headers.link.next.cursor }}', - "{{ last_record['key'] }}", - "{{ response['nextPage'] }}", - ], - title='Cursor Value', - ) - page_size: Optional[int] = Field( - None, - description='The number of records to include in each pages.', - examples=[100], - title='Page Size', - ) - stop_condition: Optional[str] = Field( - None, - description='Template string evaluating when to stop paginating.', - examples=[ - '{{ response.data.has_more is false }}', - "{{ 'next' not in headers['link'] }}", - ], - title='Stop Condition', - ) - decoder: Optional[JsonDecoder] = Field( - None, - description='Component decoding the response so records can be extracted.', - title='Decoder', - ) - parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') - - class DatetimeBasedCursor(BaseModel): type: Literal['DatetimeBasedCursor'] cursor_field: str = Field( @@ -1197,35 +1208,11 @@ class DefaultPaginator(BaseModel): description='Strategy defining how records are paginated.', title='Pagination Strategy', ) - decoder: Optional[JsonDecoder] = Field( - None, - description='Component decoding the response so records can be extracted.', - title='Decoder', - ) page_size_option: Optional[RequestOption] = None page_token_option: Optional[Union[RequestOption, RequestPath]] = None parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') -class DpathExtractor(BaseModel): - type: Literal['DpathExtractor'] - field_path: List[str] = Field( - ..., - description='List of potentially nested fields describing the full path of the field to extract. Use "*" to extract all values from an array. See more info in the [docs](https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/record-selector).', - examples=[ - ['data'], - ['data', 'records'], - ['data', '{{ parameters.name }}'], - ['data', '*', 'record'], - ], - title='Field Path', - ) - decoder: Optional[Union[JsonDecoder, JsonlDecoder, IterableDecoder]] = Field( - None, title='Decoder' - ) - parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') - - class SessionTokenRequestApiKeyAuthenticator(BaseModel): type: Literal['ApiKey'] inject_into: RequestOption = Field( @@ -1453,6 +1440,9 @@ class SessionTokenAuthenticator(BaseModel): description='Authentication method to use for requests sent to the API, specifying how to inject the session token.', title='Data Request Authentication', ) + decoder: Optional[JsonDecoder] = Field( + None, description='Component decoding the response', title='Decoder' + ) parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') @@ -1634,11 +1624,11 @@ class AsyncRetriever(BaseModel): status_mapping: AsyncJobStatusMap = Field( ..., description='Async Job Status to Airbyte CDK Async Job Status mapping.' ) - status_extractor: Optional[Union[CustomRecordExtractor, DpathExtractor]] = Field( - None, description='Responsible for fetching the actual status of the async job.' + status_extractor: Union[CustomRecordExtractor, DpathExtractor] = Field( + ..., description='Responsible for fetching the actual status of the async job.' ) - urls_extractor: Optional[Union[CustomRecordExtractor, DpathExtractor]] = Field( - None, + urls_extractor: Union[CustomRecordExtractor, DpathExtractor] = Field( + ..., description='Responsible for fetching the final result `urls` provided by the completed / finished / ready async job.', ) creation_requester: Union[CustomRequester, HttpRequester] = Field( diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py index 3b42be5d46f1b..abb2029c3670f 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py @@ -379,8 +379,11 @@ def create_legacy_to_per_partition_state_migration( return LegacyToPerPartitionStateMigration(declarative_stream.retriever.partition_router, declarative_stream.incremental_sync, config, declarative_stream.parameters) # type: ignore # The retriever type was already checked def create_session_token_authenticator( - self, model: SessionTokenAuthenticatorModel, config: Config, name: str, decoder: Decoder, **kwargs: Any + self, model: SessionTokenAuthenticatorModel, config: Config, name: str, **kwargs: Any ) -> Union[ApiKeyAuthenticator, BearerAuthenticator]: + decoder = self._create_component_from_model(model=model.decoder, config=config) if model.decoder else JsonDecoder(parameters={}) + if not isinstance(decoder, JsonDecoder): + raise ValueError(f"Provided decoder of {type(model.decoder)=} is not supported. Please set JsonDecoder instead.") login_requester = self._create_component_from_model( model=model.login_requester, config=config, name=f"{name}_login_requester", decoder=decoder ) @@ -390,6 +393,7 @@ def create_session_token_authenticator( expiration_duration=parse_duration(model.expiration_duration) if model.expiration_duration else None, parameters=model.parameters or {}, message_repository=self._message_repository, + decoder=decoder, ) if model.request_authentication.type == "Bearer": return ModelToComponentFactory.create_bearer_authenticator( @@ -808,15 +812,9 @@ def create_default_paginator( decoder: Optional[Decoder] = None, cursor_used_for_stop_condition: Optional[DeclarativeCursor] = None, ) -> Union[DefaultPaginator, PaginatorTestReadDecorator]: - if decoder: - decoder_to_use = decoder - elif model.decoder: - decoder_to_use = self._create_component_from_model(model=model.decoder, config=config) - else: - decoder_to_use = JsonDecoder(parameters={}) + decoder_to_use = decoder if decoder else JsonDecoder(parameters={}) if not isinstance(decoder_to_use, JsonDecoder): raise ValueError(f"Provided decoder of {type(decoder_to_use)=} is not supported. Please set JsonDecoder instead.") - page_size_option = ( self._create_component_from_model(model=model.page_size_option, config=config) if model.page_size_option else None ) @@ -844,12 +842,7 @@ def create_default_paginator( def create_dpath_extractor( self, model: DpathExtractorModel, config: Config, decoder: Optional[Decoder] = None, **kwargs: Any ) -> DpathExtractor: - if decoder: - decoder_to_use = decoder - elif model.decoder: - decoder_to_use = self._create_component_from_model(model=model.decoder, config=config) - else: - decoder_to_use = JsonDecoder(parameters={}) + decoder_to_use = decoder if decoder else JsonDecoder(parameters={}) model_field_path: List[Union[InterpolatedString, str]] = [x for x in model.field_path] return DpathExtractor(decoder=decoder_to_use, field_path=model_field_path, config=config, parameters=model.parameters or {}) diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py b/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py index 85b90752f3e72..ada4f47ec18c5 100644 --- a/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py +++ b/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py @@ -586,7 +586,6 @@ def test_stream_with_incremental_and_retriever_with_partition_router(): type: JsonDecoder extractor: type: DpathExtractor - decoder: "#/decoder" selector: type: RecordSelector record_filter: @@ -598,8 +597,26 @@ def test_stream_with_incremental_and_retriever_with_partition_router(): url_base: "https://api.sendgrid.com/v3/" http_method: "GET" authenticator: - type: BearerAuthenticator - api_token: "{{ config['apikey'] }}" + type: SessionTokenAuthenticator + decoder: + type: JsonDecoder + expiration_duration: P10D + login_requester: + path: /session + type: HttpRequester + url_base: 'https://api.sendgrid.com' + http_method: POST + request_body_json: + password: '{{ config.apikey }}' + username: '{{ parameters.name }}' + session_token_path: + - id + request_authentication: + type: ApiKey + inject_into: + type: RequestOption + field_name: X-Metabase-Session + inject_into: header request_parameters: unit: "day" list_stream: @@ -628,6 +645,8 @@ def test_stream_with_incremental_and_retriever_with_partition_router(): retriever: type: SimpleRetriever name: "{{ parameters['name'] }}" + decoder: + $ref: "#/decoder" partition_router: type: ListPartitionRouter values: "{{config['repos']}}" @@ -1216,6 +1235,8 @@ def test_create_request_with_session_authenticator(): url_base: "https://api.sendgrid.com" authenticator: type: SessionTokenAuthenticator + decoder: + type: JsonDecoder expiration_duration: P10D login_requester: path: /session From 47d691fd06bcba86cf33dff9c160bba23ae8539c Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Mon, 7 Oct 2024 15:17:02 -0700 Subject: [PATCH 177/379] make sure config stays consistent between v1 and v2 (#45942) --- .../connectors/source-mysql-v2/metadata.yaml | 2 +- .../source/mysql/MysqlSourceConfiguration.kt | 15 +- .../MysqlSourceConfigurationSpecification.kt | 138 ++++------ .../source/mysql/MysqlCdcIntegrationTest.kt | 4 +- ...sqlSourceConfigurationSpecificationTest.kt | 13 +- .../mysql/MysqlSourceConfigurationTest.kt | 61 ++++- .../src/test/resources/expected-spec.json | 245 ++++++++---------- 7 files changed, 230 insertions(+), 248 deletions(-) diff --git a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml index 9d0476c9309f5..74b8eacf50cc4 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml +++ b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: 561393ed-7e3a-4d0d-8b8b-90ded371754c - dockerImageTag: 0.0.15 + dockerImageTag: 0.0.16 dockerRepository: airbyte/source-mysql-v2 documentationUrl: https://docs.airbyte.com/integrations/sources/mysql githubIssueLabel: source-mysql-v2 diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt index 6cf699981b0d2..079c9cadd6ee4 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt @@ -27,7 +27,7 @@ data class MysqlSourceConfiguration( override val jdbcUrlFmt: String, override val jdbcProperties: Map, override val namespaces: Set, - val cursorConfiguration: CursorConfiguration, + val cursorMethodConfiguration: CursorMethodConfiguration, override val maxConcurrency: Int, override val resourceAcquisitionHeartbeat: Duration = Duration.ofMillis(100L), override val checkpointTargetInterval: Duration, @@ -35,7 +35,7 @@ data class MysqlSourceConfiguration( override val debeziumHeartbeatInterval: Duration = Duration.ofSeconds(10), val debeziumKeepAliveInterval: Duration = Duration.ofMinutes(1), ) : JdbcSourceConfiguration, CdcSourceConfiguration { - override val global = cursorConfiguration is CdcCursor + override val global = cursorMethodConfiguration is CdcCursor /** Required to inject [MysqlSourceConfiguration] directly. */ @Factory @@ -80,14 +80,13 @@ class MysqlSourceConfigurationFactory : } // Determine protocol and configure encryption. val encryption: Encryption = pojo.getEncryptionValue() - val sslMode = SSLMode.fromJdbcPropertyName(pojo.encryption.encryptionMethod) val jdbcEncryption = when (encryption) { - is EncryptionPreferred, - is EncryptionRequired -> MysqlJdbcEncryption(sslMode = sslMode) + is EncryptionPreferred -> MysqlJdbcEncryption(sslMode = SSLMode.PREFERRED) + is EncryptionRequired -> MysqlJdbcEncryption(sslMode = SSLMode.REQUIRED) is SslVerifyCertificate -> MysqlJdbcEncryption( - sslMode = sslMode, + sslMode = SSLMode.VERIFY_CA, caCertificate = encryption.sslCertificate, clientCertificate = encryption.sslClientCertificate, clientKey = encryption.sslClientKey, @@ -95,7 +94,7 @@ class MysqlSourceConfigurationFactory : ) is SslVerifyIdentity -> MysqlJdbcEncryption( - sslMode = sslMode, + sslMode = SSLMode.VERIFY_IDENTITY, caCertificate = encryption.sslCertificate, clientCertificate = encryption.sslClientCertificate, clientKey = encryption.sslClientKey, @@ -128,7 +127,7 @@ class MysqlSourceConfigurationFactory : jdbcUrlFmt = jdbcUrlFmt, jdbcProperties = jdbcProperties, namespaces = setOf(pojo.database), - cursorConfiguration = pojo.getCursorConfigurationValue(), + cursorMethodConfiguration = pojo.getCursorMethodConfigurationValue(), checkpointTargetInterval = checkpointTargetInterval, maxConcurrency = maxConcurrency, checkPrivileges = pojo.checkPrivileges ?: true, diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecification.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecification.kt index 2f02b59ec4389..6ab78608d8705 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecification.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecification.kt @@ -36,17 +36,7 @@ import jakarta.inject.Singleton @JsonSchemaTitle("Mysql Source Spec") @JsonPropertyOrder( value = - [ - "host", - "port", - "username", - "password", - "database", - "jdbc_url_params", - "encryption", - "tunnel_method", - "cursor", - ], + ["host", "port", "database", "username", "tunnel_method", "ssl_mode", "replication_method"], ) @Singleton @ConfigurationProperties(CONNECTOR_CONFIG_PREFIX) @@ -96,17 +86,17 @@ class MysqlSourceConfigurationSpecification : ConfigurationSpecification() { var jdbcUrlParams: String? = null @JsonIgnore - @ConfigurationBuilder(configurationPrefix = "encryption") - val encryption = MicronautPropertiesFriendlyEncryption() + @ConfigurationBuilder(configurationPrefix = "ssl_mode") + var encryption = MicronautPropertiesFriendlyEncryption() @JsonIgnore var encryptionJson: Encryption? = null - @JsonSetter("encryption") + @JsonSetter("ssl_mode") fun setEncryptionValue(value: Encryption) { encryptionJson = value } - @JsonGetter("encryption") + @JsonGetter("ssl_mode") @JsonSchemaTitle("Encryption") @JsonPropertyDescription( "The encryption method with is used when communicating with the database.", @@ -136,22 +126,22 @@ class MysqlSourceConfigurationSpecification : ConfigurationSpecification() { tunnelMethodJson ?: tunnelMethod.asSshTunnelMethod() @JsonIgnore - @ConfigurationBuilder(configurationPrefix = "cursor") - val cursor = MicronautPropertiesFriendlyCursorConfiguration() + @ConfigurationBuilder(configurationPrefix = "replication_method") + var replicationMethod = MicronautPropertiesFriendlyCursorMethodConfiguration() - @JsonIgnore var cursorJson: CursorConfiguration? = null + @JsonIgnore var replicationMethodJson: CursorMethodConfiguration? = null - @JsonSetter("cursor") - fun setCursorMethodValue(value: CursorConfiguration) { - cursorJson = value + @JsonSetter("replication_method") + fun setMethodValue(value: CursorMethodConfiguration) { + replicationMethodJson = value } - @JsonGetter("cursor") + @JsonGetter("replication_method") @JsonSchemaTitle("Update Method") @JsonPropertyDescription("Configures how data is extracted from the database.") @JsonSchemaInject(json = """{"order":10,"display_type":"radio"}""") - fun getCursorConfigurationValue(): CursorConfiguration = - cursorJson ?: cursor.asCursorConfiguration() + fun getCursorMethodConfigurationValue(): CursorMethodConfiguration = + replicationMethodJson ?: replicationMethod.asCursorMethodConfiguration() @JsonProperty("checkpoint_target_interval_seconds") @JsonSchemaTitle("Checkpoint Target Time Interval") @@ -193,7 +183,7 @@ class MysqlSourceConfigurationSpecification : ConfigurationSpecification() { } } -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "encryption_method") +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "mode") @JsonSubTypes( JsonSubTypes.Type(value = EncryptionPreferred::class, name = "preferred"), JsonSubTypes.Type(value = EncryptionRequired::class, name = "required"), @@ -222,7 +212,7 @@ data object EncryptionRequired : Encryption ) @SuppressFBWarnings(value = ["NP_NONNULL_RETURN_VIOLATION"], justification = "Micronaut DI") class SslVerifyCertificate : Encryption { - @JsonProperty("ssl_certificate", required = true) + @JsonProperty("ca_certificate", required = true) @JsonSchemaTitle("CA certificate") @JsonPropertyDescription( "CA certificate", @@ -230,7 +220,7 @@ class SslVerifyCertificate : Encryption { @JsonSchemaInject(json = """{"airbyte_secret":true,"multiline":true}""") lateinit var sslCertificate: String - @JsonProperty("ssl_client_certificate", required = false) + @JsonProperty("client_certificate", required = false) @JsonSchemaTitle("Client certificate File") @JsonPropertyDescription( "Client certificate (this is not a required field, but if you want to use it, you will need to add the Client key as well)", @@ -238,7 +228,7 @@ class SslVerifyCertificate : Encryption { @JsonSchemaInject(json = """{"airbyte_secret":true,"multiline":true}""") var sslClientCertificate: String? = null - @JsonProperty("ssl_client_key") + @JsonProperty("client_key") @JsonSchemaTitle("Client Key") @JsonPropertyDescription( "Client key (this is not a required field, but if you want to use it, you will need to add the Client certificate as well)", @@ -246,7 +236,7 @@ class SslVerifyCertificate : Encryption { @JsonSchemaInject(json = """{"airbyte_secret":true,"multiline":true}""") var sslClientKey: String? = null - @JsonProperty("ssl_client_key_password") + @JsonProperty("client_key_password") @JsonSchemaTitle("Client key password") @JsonPropertyDescription( "Password for keystorage. This field is optional. If you do not add it - the password will be generated automatically.", @@ -261,7 +251,7 @@ class SslVerifyCertificate : Encryption { ) @SuppressFBWarnings(value = ["NP_NONNULL_RETURN_VIOLATION"], justification = "Micronaut DI") class SslVerifyIdentity : Encryption { - @JsonProperty("ssl_certificate", required = true) + @JsonProperty("ca_certificate", required = true) @JsonSchemaTitle("CA certificate") @JsonPropertyDescription( "CA certificate", @@ -269,7 +259,7 @@ class SslVerifyIdentity : Encryption { @JsonSchemaInject(json = """{"airbyte_secret":true,"multiline":true}""") lateinit var sslCertificate: String - @JsonProperty("ssl_client_certificate", required = false) + @JsonProperty("client_certificate", required = false) @JsonSchemaTitle("Client certificate File") @JsonPropertyDescription( "Client certificate (this is not a required field, but if you want to use it, you will need to add the Client key as well)", @@ -277,7 +267,7 @@ class SslVerifyIdentity : Encryption { @JsonSchemaInject(json = """{"airbyte_secret":true,"multiline":true}""") var sslClientCertificate: String? = null - @JsonProperty("ssl_client_key") + @JsonProperty("client_key") @JsonSchemaTitle("Client Key") @JsonPropertyDescription( "Client key (this is not a required field, but if you want to use it, you will need to add the Client certificate as well)", @@ -285,7 +275,7 @@ class SslVerifyIdentity : Encryption { @JsonSchemaInject(json = """{"airbyte_secret":true,"multiline":true}""") var sslClientKey: String? = null - @JsonProperty("ssl_client_key_password") + @JsonProperty("client_key_password") @JsonSchemaTitle("Client key password") @JsonPropertyDescription( "Password for keystorage. This field is optional. If you do not add it - the password will be generated automatically.", @@ -294,7 +284,7 @@ class SslVerifyIdentity : Encryption { var sslClientPassword: String? = null } -@ConfigurationProperties("$CONNECTOR_CONFIG_PREFIX.encryption") +@ConfigurationProperties("$CONNECTOR_CONFIG_PREFIX.ssl_mode") class MicronautPropertiesFriendlyEncryption { var encryptionMethod: String = "preferred" var sslCertificate: String? = null @@ -310,15 +300,14 @@ class MicronautPropertiesFriendlyEncryption { } } -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "cursor_method") +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "method") @JsonSubTypes( - JsonSubTypes.Type(value = UserDefinedCursor::class, name = "user_defined"), - JsonSubTypes.Type(value = CdcCursor::class, name = "cdc") - // TODO: port over additional Cdc options - ) + JsonSubTypes.Type(value = UserDefinedCursor::class, name = "STANDARD"), + JsonSubTypes.Type(value = CdcCursor::class, name = "CDC") +) @JsonSchemaTitle("Update Method") @JsonSchemaDescription("Configures how data is extracted from the database.") -sealed interface CursorConfiguration +sealed interface CursorMethodConfiguration @JsonSchemaTitle("Scan Changes with User Defined Cursor") @JsonSchemaDescription( @@ -327,7 +316,7 @@ sealed interface CursorConfiguration "#user-defined-cursor\">cursor column chosen when configuring a connection " + "(e.g. created_at, updated_at).", ) -data object UserDefinedCursor : CursorConfiguration +data object UserDefinedCursor : CursorMethodConfiguration @JsonSchemaTitle("Read Changes using Change Data Capture (CDC)") @JsonSchemaDescription( @@ -336,7 +325,7 @@ data object UserDefinedCursor : CursorConfiguration "\"https://docs.airbyte.com/integrations/sources/mssql/#change-data-capture-cdc\"" + "> change data capture feature. This must be enabled on your database.", ) -class CdcCursor : CursorConfiguration { +class CdcCursor : CursorMethodConfiguration { @JsonProperty("initial_waiting_seconds") @JsonSchemaTitle("Initial Waiting Time in Seconds (Advanced)") @JsonSchemaDefault("300") @@ -356,25 +345,16 @@ class CdcCursor : CursorConfiguration { @JsonSchemaInject(json = """{"order":2,"always_show":true}""") var serverTimezone: String? = null - @JsonIgnore - @ConfigurationBuilder(configurationPrefix = "invalid_cdc_behavior") - var invalidCdcBehavior = MicronautPropertiesFriendlyInvalidCdcBehaviorConfiguration() - - @JsonIgnore var invalidCdcPositionBehaviorJson: InvalidCdcPositionBehavior? = null - - @JsonSetter("invalid_cdc_behavior") - fun setInvalidCdcBehaviorValue(value: InvalidCdcPositionBehavior) { - invalidCdcPositionBehaviorJson = value - } - - @JsonGetter("invalid_cdc_behavior") - @JsonSchemaTitle("Invalid CDC position behavior (Advanced)") + @JsonProperty("invalid_cdc_cursor_position_behavior") + @JsonSchemaTitle("Configured server timezone for the MySQL source (Advanced)") @JsonPropertyDescription( - "Determines whether Airbyte should fail or re-sync data in case of an stale/invalid cursor value into the WAL. If 'Fail sync' is chosen, a user will have to manually reset the connection before being able to continue syncing data. If 'Re-sync data' is chosen, Airbyte will automatically trigger a refresh but could lead to higher cloud costs and data loss.", + "Enter the configured MySQL server timezone. This should only be done if the configured timezone in your MySQL instance does not conform to IANNA standard.", + ) + @JsonSchemaDefault("Fail sync") + @JsonSchemaInject( + json = """{"order":3,"always_show":true, "enum": ["Fail sync","Re-sync data"]}""" ) - @JsonSchemaInject(json = """{"order":3, "always_show": true}""") - fun getInvalidCdcBehaviorValue(): InvalidCdcPositionBehavior? = - invalidCdcPositionBehaviorJson ?: invalidCdcBehavior.asInvalidCdcPositionBehavior() + var invalidCdcCursorPositionBehavior: String? = "Fail sync" @JsonProperty("initial_load_timeout_hours") @JsonSchemaTitle("Initial Load Timeout in Hours (Advanced)") @@ -386,38 +366,14 @@ class CdcCursor : CursorConfiguration { var initialLoadTimeoutHours: Int? = 8 } -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "invalid_cdc_cursor_position_behavior") -@JsonSubTypes( - JsonSubTypes.Type(value = FailSync::class, name = "fail_sync"), - JsonSubTypes.Type(value = ResyncData::class, name = "resync") -) -@JsonSchemaTitle("Update Method") -sealed interface InvalidCdcPositionBehavior - -@JsonSchemaTitle("Fail sync") data object FailSync : InvalidCdcPositionBehavior - -@JsonSchemaTitle("Re-sync data") data object ResyncData : InvalidCdcPositionBehavior - -@ConfigurationProperties("$CONNECTOR_CONFIG_PREFIX.invalid_cdc_cursor_position_behavior") -class MicronautPropertiesFriendlyInvalidCdcBehaviorConfiguration { - var invalidCdcBehavior: String = "fail_sync" - - fun asInvalidCdcPositionBehavior(): InvalidCdcPositionBehavior = - when (invalidCdcBehavior) { - "fail_sync" -> FailSync - "resync" -> ResyncData - else -> throw ConfigErrorException("invalid value $invalidCdcBehavior") - } -} - -@ConfigurationProperties("$CONNECTOR_CONFIG_PREFIX.cursor") -class MicronautPropertiesFriendlyCursorConfiguration { - var cursorMethod: String = "user_defined" +@ConfigurationProperties("$CONNECTOR_CONFIG_PREFIX.replication_method") +class MicronautPropertiesFriendlyCursorMethodConfiguration { + var method: String = "STANDARD" - fun asCursorConfiguration(): CursorConfiguration = - when (cursorMethod) { - "user_defined" -> UserDefinedCursor - "cdc" -> CdcCursor() - else -> throw ConfigErrorException("invalid value $cursorMethod") + fun asCursorMethodConfiguration(): CursorMethodConfiguration = + when (method) { + "STANDARD" -> UserDefinedCursor + "CDC" -> CdcCursor() + else -> throw ConfigErrorException("invalid value $method") } } diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt index e31c8c0b80693..9319149a6280e 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt @@ -54,7 +54,7 @@ class MysqlCdcIntegrationTest { { val invalidConfig: MysqlSourceConfigurationSpecification = MysqlContainerFactory.config(nonCdcDbContainer).apply { - setCursorMethodValue(CdcCursor()) + setMethodValue(CdcCursor()) } val nonCdcConnectionFactory = @@ -113,7 +113,7 @@ class MysqlCdcIntegrationTest { lateinit var dbContainer: MySQLContainer<*> fun config(): MysqlSourceConfigurationSpecification = - MysqlContainerFactory.config(dbContainer).apply { setCursorMethodValue(CdcCursor()) } + MysqlContainerFactory.config(dbContainer).apply { setMethodValue(CdcCursor()) } val connectionFactory: JdbcConnectionFactory by lazy { JdbcConnectionFactory(MysqlSourceConfigurationFactory().make(config())) diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecificationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecificationTest.kt index c063017f0df18..4f887d2a86dac 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecificationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationSpecificationTest.kt @@ -13,7 +13,7 @@ import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test @MicronautTest(environments = [Environment.TEST], rebuildContext = true) -class MysqlSourceConfigurationSpecificationTest { +class MysqlSourceConfigurationSpecificationTestTest { @Inject lateinit var supplier: ConfigurationSpecificationSupplier @@ -43,7 +43,7 @@ class MysqlSourceConfigurationSpecificationTest { } } -const val CONFIG_JSON = +const val CONFIG_JSON: String = """ { "host": "localhost", @@ -51,8 +51,8 @@ const val CONFIG_JSON = "username": "FOO", "password": "BAR", "database": "SYSTEM", - "encryption": { - "encryption_method": "preferred" + "ssl_mode": { + "mode": "preferred" }, "tunnel_method": { "tunnel_method": "SSH_PASSWORD_AUTH", @@ -61,10 +61,11 @@ const val CONFIG_JSON = "tunnel_user": "sshuser", "tunnel_user_password": "***" }, - "cursor": { - "cursor_method": "user_defined" + "replication_method": { + "method": "STANDARD" }, "checkpoint_target_interval_seconds": 60, + "jdbc_url_params": "theAnswerToLiveAndEverything=42&sessionVariables=max_execution_time=10000&foo=bar&", "concurrency": 2 } """ diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt index 1a9a4265d33fb..121526b9e7fd8 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt @@ -3,6 +3,8 @@ package io.airbyte.integrations.source.mysql import io.airbyte.cdk.command.ConfigurationSpecificationSupplier import io.airbyte.cdk.command.SourceConfigurationFactory +import io.airbyte.cdk.ssh.SshNoTunnelMethod +import io.airbyte.cdk.ssh.SshPasswordAuthTunnelMethod import io.micronaut.context.annotation.Property import io.micronaut.context.env.Environment import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -30,6 +32,7 @@ class MysqlSourceConfigurationTest { Assertions.assertEquals(config.realHost, "localhost") Assertions.assertEquals(config.realPort, 12345) Assertions.assertEquals(config.namespaces, setOf("SYSTEM")) + Assertions.assertTrue(config.sshTunnel is SshPasswordAuthTunnelMethod) Assertions.assertEquals(config.jdbcProperties["user"], "FOO") Assertions.assertEquals(config.jdbcProperties["password"], "BAR") @@ -38,11 +41,34 @@ class MysqlSourceConfigurationTest { Assertions.assertEquals(config.jdbcProperties["useCursorFetch"], "true") Assertions.assertEquals(config.jdbcProperties["sessionVariables"], "autocommit=0") - Assertions.assertEquals(config.jdbcProperties["foo"], "bar") - Assertions.assertEquals(config.jdbcProperties["theAnswerToLiveAndEverything"], "42") Assertions.assertEquals(config.jdbcProperties["foo"], "bar") } + + @Test + @Property(name = "airbyte.connector.config.json", value = CONFIG_V1) + fun testParseConfigFromV1() { + val pojo: MysqlSourceConfigurationSpecification = pojoSupplier.get() + + val config = factory.makeWithoutExceptionHandling(pojo) + + Assertions.assertEquals(config.realHost, "localhost") + Assertions.assertEquals(config.realPort, 12345) + Assertions.assertEquals(config.namespaces, setOf("SYSTEM")) + + Assertions.assertEquals(config.jdbcProperties["user"], "FOO") + Assertions.assertEquals(config.jdbcProperties["password"], "BAR") + Assertions.assertEquals(config.jdbcProperties["sslMode"], "required") + Assertions.assertTrue(config.cursorMethodConfiguration is CdcCursor) + + val cdcCursor = config.cursorMethodConfiguration as CdcCursor + + Assertions.assertEquals(cdcCursor.initialWaitTimeInSeconds, 300) + Assertions.assertEquals(cdcCursor.initialLoadTimeoutHours, 8) + Assertions.assertEquals(cdcCursor.invalidCdcCursorPositionBehavior, "Re-sync data") + + Assertions.assertTrue(config.sshTunnel is SshNoTunnelMethod) + } } const val CONFIG: String = @@ -53,8 +79,8 @@ const val CONFIG: String = "username": "FOO", "password": "BAR", "database": "SYSTEM", - "encryption": { - "encryption_method": "preferred" + "ssl_mode": { + "mode": "preferred" }, "tunnel_method": { "tunnel_method": "SSH_PASSWORD_AUTH", @@ -63,11 +89,34 @@ const val CONFIG: String = "tunnel_user": "sshuser", "tunnel_user_password": "***" }, - "cursor": { - "cursor_method": "user_defined" + "replication_method": { + "method": "STANDARD" }, "checkpoint_target_interval_seconds": 60, "jdbc_url_params": "theAnswerToLiveAndEverything=42&sessionVariables=max_execution_time=10000&foo=bar&", "concurrency": 2 } """ + +const val CONFIG_V1: String = + """ +{ + "host": "localhost", + "port": 12345, + "database": "SYSTEM", + "password": "BAR", + "ssl_mode": { + "mode": "required" + }, + "username": "FOO", + "tunnel_method": { + "tunnel_method": "NO_TUNNEL" + }, + "replication_method": { + "method": "CDC", + "initial_waiting_seconds": 300, + "initial_load_timeout_hours": 8, + "invalid_cdc_cursor_position_behavior": "Re-sync data" + } +} +""" diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/resources/expected-spec.json b/airbyte-integrations/connectors/source-mysql-v2/src/test/resources/expected-spec.json index eb6aee1e69264..dd46104f416bc 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/resources/expected-spec.json +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/resources/expected-spec.json @@ -7,11 +7,11 @@ "required": [ "host", "port", - "username", "database", - "encryption", + "username", "tunnel_method", - "cursor" + "ssl_mode", + "replication_method" ], "properties": { "host": { @@ -29,105 +29,6 @@ "minimum": 0, "description": "Port of the database." }, - "cursor": { - "type": "object", - "oneOf": [ - { - "type": "object", - "title": "Scan Changes with User Defined Cursor", - "required": ["cursor_method"], - "properties": { - "cursor_method": { - "enum": ["user_defined"], - "type": "string", - "default": "user_defined" - } - }, - "description": "Incrementally detects new inserts and updates using the cursor column chosen when configuring a connection (e.g. created_at, updated_at).", - "additionalProperties": true - }, - { - "type": "object", - "title": "Read Changes using Change Data Capture (CDC)", - "required": ["cursor_method"], - "properties": { - "cursor_method": { - "enum": ["cdc"], - "type": "string", - "default": "cdc" - }, - "server_timezone": { - "type": "string", - "order": 2, - "title": "Configured server timezone for the MySQL source (Advanced)", - "always_show": true, - "description": "Enter the configured MySQL server timezone. This should only be done if the configured timezone in your MySQL instance does not conform to IANNA standard." - }, - "invalid_cdc_behavior": { - "type": "object", - "oneOf": [ - { - "type": "object", - "title": "Fail sync", - "required": ["invalid_cdc_cursor_position_behavior"], - "properties": { - "invalid_cdc_cursor_position_behavior": { - "enum": ["fail_sync"], - "type": "string", - "default": "fail_sync" - } - }, - "additionalProperties": true - }, - { - "type": "object", - "title": "Re-sync data", - "required": ["invalid_cdc_cursor_position_behavior"], - "properties": { - "invalid_cdc_cursor_position_behavior": { - "enum": ["resync"], - "type": "string", - "default": "resync" - } - }, - "additionalProperties": true - } - ], - "order": 3, - "title": "Invalid CDC position behavior (Advanced)", - "always_show": true, - "description": "Determines whether Airbyte should fail or re-sync data in case of an stale/invalid cursor value into the WAL. If 'Fail sync' is chosen, a user will have to manually reset the connection before being able to continue syncing data. If 'Re-sync data' is chosen, Airbyte will automatically trigger a refresh but could lead to higher cloud costs and data loss." - }, - "initial_waiting_seconds": { - "max": 1200, - "min": 120, - "type": "integer", - "order": 1, - "title": "Initial Waiting Time in Seconds (Advanced)", - "default": 300, - "always_show": true, - "description": "The amount of time the connector will wait when it launches to determine if there is new data to sync or not. Defaults to 300 seconds. Valid range: 120 seconds to 1200 seconds. Read about initial waiting time." - }, - "initial_load_timeout_hours": { - "max": 24, - "min": 4, - "type": "integer", - "order": 4, - "title": "Initial Load Timeout in Hours (Advanced)", - "default": 8, - "always_show": true, - "description": "The amount of time an initial load is allowed to continue for before catching up on CDC logs." - } - }, - "description": "Recommended - Incrementally reads new inserts, updates, and deletes using Mysql's change data capture feature. This must be enabled on your database.", - "additionalProperties": true - } - ], - "order": 10, - "title": "Update Method", - "description": "Configures how data is extracted from the database.", - "display_type": "radio" - }, "database": { "type": "string", "order": 6, @@ -143,21 +44,15 @@ "description": "The password associated with the username.", "airbyte_secret": true }, - "username": { - "type": "string", - "order": 4, - "title": "User", - "description": "The username which is used to access the database." - }, - "encryption": { + "ssl_mode": { "type": "object", "oneOf": [ { "type": "object", "title": "preferred", - "required": ["encryption_method"], + "required": ["mode"], "properties": { - "encryption_method": { + "mode": { "enum": ["preferred"], "type": "string", "default": "preferred" @@ -169,9 +64,9 @@ { "type": "object", "title": "required", - "required": ["encryption_method"], + "required": ["mode"], "properties": { - "encryption_method": { + "mode": { "enum": ["required"], "type": "string", "default": "required" @@ -183,35 +78,35 @@ { "type": "object", "title": "verify_ca", - "required": ["encryption_method", "ssl_certificate"], + "required": ["mode", "ca_certificate"], "properties": { - "ssl_client_key": { + "mode": { + "enum": ["verify_ca"], + "type": "string", + "default": "verify_ca" + }, + "client_key": { "type": "string", "title": "Client Key", "multiline": true, "description": "Client key (this is not a required field, but if you want to use it, you will need to add the Client certificate as well)", "airbyte_secret": true }, - "ssl_certificate": { + "ca_certificate": { "type": "string", "title": "CA certificate", "multiline": true, "description": "CA certificate", "airbyte_secret": true }, - "encryption_method": { - "enum": ["verify_ca"], - "type": "string", - "default": "verify_ca" - }, - "ssl_client_certificate": { + "client_certificate": { "type": "string", "title": "Client certificate File", "multiline": true, "description": "Client certificate (this is not a required field, but if you want to use it, you will need to add the Client key as well)", "airbyte_secret": true }, - "ssl_client_key_password": { + "client_key_password": { "type": "string", "title": "Client key password", "multiline": true, @@ -225,35 +120,35 @@ { "type": "object", "title": "verify_identity", - "required": ["encryption_method", "ssl_certificate"], + "required": ["mode", "ca_certificate"], "properties": { - "ssl_client_key": { + "mode": { + "enum": ["verify_identity"], + "type": "string", + "default": "verify_identity" + }, + "client_key": { "type": "string", "title": "Client Key", "multiline": true, "description": "Client key (this is not a required field, but if you want to use it, you will need to add the Client certificate as well)", "airbyte_secret": true }, - "ssl_certificate": { + "ca_certificate": { "type": "string", "title": "CA certificate", "multiline": true, "description": "CA certificate", "airbyte_secret": true }, - "encryption_method": { - "enum": ["verify_identity"], - "type": "string", - "default": "verify_identity" - }, - "ssl_client_certificate": { + "client_certificate": { "type": "string", "title": "Client certificate File", "multiline": true, "description": "Client certificate (this is not a required field, but if you want to use it, you will need to add the Client key as well)", "airbyte_secret": true }, - "ssl_client_key_password": { + "client_key_password": { "type": "string", "title": "Client key password", "multiline": true, @@ -269,6 +164,12 @@ "title": "Encryption", "description": "The encryption method with is used when communicating with the database." }, + "username": { + "type": "string", + "order": 4, + "title": "User", + "description": "The username which is used to access the database." + }, "concurrency": { "type": "integer", "order": 12, @@ -409,6 +310,79 @@ "description": "When this feature is enabled, during schema discovery the connector will query each table or view individually to check access privileges and inaccessible tables, views, or columns therein will be removed. In large schemas, this might cause schema discovery to take too long, in which case it might be advisable to disable this feature.", "display_type": "check" }, + "replication_method": { + "type": "object", + "oneOf": [ + { + "type": "object", + "title": "Scan Changes with User Defined Cursor", + "required": ["method"], + "properties": { + "method": { + "enum": ["STANDARD"], + "type": "string", + "default": "STANDARD" + } + }, + "description": "Incrementally detects new inserts and updates using the cursor column chosen when configuring a connection (e.g. created_at, updated_at).", + "additionalProperties": true + }, + { + "type": "object", + "title": "Read Changes using Change Data Capture (CDC)", + "required": ["method"], + "properties": { + "method": { + "enum": ["CDC"], + "type": "string", + "default": "CDC" + }, + "server_timezone": { + "type": "string", + "order": 2, + "title": "Configured server timezone for the MySQL source (Advanced)", + "always_show": true, + "description": "Enter the configured MySQL server timezone. This should only be done if the configured timezone in your MySQL instance does not conform to IANNA standard." + }, + "initial_waiting_seconds": { + "max": 1200, + "min": 120, + "type": "integer", + "order": 1, + "title": "Initial Waiting Time in Seconds (Advanced)", + "default": 300, + "always_show": true, + "description": "The amount of time the connector will wait when it launches to determine if there is new data to sync or not. Defaults to 300 seconds. Valid range: 120 seconds to 1200 seconds. Read about initial waiting time." + }, + "initial_load_timeout_hours": { + "max": 24, + "min": 4, + "type": "integer", + "order": 4, + "title": "Initial Load Timeout in Hours (Advanced)", + "default": 8, + "always_show": true, + "description": "The amount of time an initial load is allowed to continue for before catching up on CDC logs." + }, + "invalid_cdc_cursor_position_behavior": { + "enum": ["Fail sync", "Re-sync data"], + "default": "Fail sync", + "type": "string", + "order": 3, + "title": "Configured server timezone for the MySQL source (Advanced)", + "always_show": true, + "description": "Enter the configured MySQL server timezone. This should only be done if the configured timezone in your MySQL instance does not conform to IANNA standard." + } + }, + "description": "Recommended - Incrementally reads new inserts, updates, and deletes using Mysql's change data capture feature. This must be enabled on your database.", + "additionalProperties": true + } + ], + "order": 10, + "title": "Update Method", + "description": "Configures how data is extracted from the database.", + "display_type": "radio" + }, "checkpoint_target_interval_seconds": { "type": "integer", "order": 11, @@ -418,5 +392,8 @@ } }, "additionalProperties": true - } + }, + "supportsNormalization": false, + "supportsDBT": false, + "supported_destination_sync_modes": [] } From 7b5851594c95adfa7689c085b1616fe476aedd88 Mon Sep 17 00:00:00 2001 From: pnilan Date: Mon, 7 Oct 2024 22:20:21 +0000 Subject: [PATCH 178/379] =?UTF-8?q?=F0=9F=A4=96=20patch=20bump=20Python=20?= =?UTF-8?q?CDK=20to=20version=205.11.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-cdk/python/CHANGELOG.md | 3 +++ airbyte-cdk/python/pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/airbyte-cdk/python/CHANGELOG.md b/airbyte-cdk/python/CHANGELOG.md index e9f18d4dcc622..90a7a141b0f7a 100644 --- a/airbyte-cdk/python/CHANGELOG.md +++ b/airbyte-cdk/python/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 5.11.1 +Low Code: Consolidate manifest decoder selection under , , and + ## 5.11.0 concurrent-cdk: add per slice tracking of the most recent cursor diff --git a/airbyte-cdk/python/pyproject.toml b/airbyte-cdk/python/pyproject.toml index 5e682d826c57a..4b216b2a0028d 100644 --- a/airbyte-cdk/python/pyproject.toml +++ b/airbyte-cdk/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-cdk" -version = "5.11.0" +version = "5.11.1" description = "A framework for writing Airbyte Connectors." authors = ["Airbyte "] license = "MIT" From 2abba2da1de633fbbd7b82b6736e3d51a78ccafd Mon Sep 17 00:00:00 2001 From: pnilan Date: Mon, 7 Oct 2024 22:26:29 +0000 Subject: [PATCH 179/379] =?UTF-8?q?=F0=9F=A4=96=20Cut=20version=205.11.1?= =?UTF-8?q?=20of=20source-declarative-manifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-declarative-manifest/metadata.yaml | 2 +- .../connectors/source-declarative-manifest/poetry.lock | 8 ++++---- .../connectors/source-declarative-manifest/pyproject.toml | 4 ++-- docs/integrations/sources/low-code.md | 1 + 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml index c13ea73c47860..7652a80123c66 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml +++ b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml @@ -8,7 +8,7 @@ data: connectorType: source definitionId: 64a2f99c-542f-4af8-9a6f-355f1217b436 # This version should not be updated manually - it is updated by the CDK release workflow. - dockerImageTag: 5.11.0 + dockerImageTag: 5.11.1 dockerRepository: airbyte/source-declarative-manifest # This page is hidden from the docs for now, since the connector is not in any Airbyte registries. documentationUrl: https://docs.airbyte.com/integrations/sources/low-code diff --git a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock index 4e56b8d9a2e23..d7e57bf141fff 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock +++ b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.11.0" +version = "5.11.1" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.11.0-py3-none-any.whl", hash = "sha256:ab8ed96bc02b28a652f0b9150b289dd17cd494306fd5d349413c7997d9ccddd0"}, - {file = "airbyte_cdk-5.11.0.tar.gz", hash = "sha256:a7a12ddf40ced59bef81d3e27bf618a0a1a54e32276e97d21a38ca958d8b0da4"}, + {file = "airbyte_cdk-5.11.1-py3-none-any.whl", hash = "sha256:efddee85179128cb7d65b11a9a4aba353ea5b01daaa56fc3069d12ce156d2857"}, + {file = "airbyte_cdk-5.11.1.tar.gz", hash = "sha256:0cc1cdc1d50909bbb2791a9c389c0f3db32474502addf65eb745d87af7d36fd9"}, ] [package.dependencies] @@ -1734,4 +1734,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10,<3.12" -content-hash = "610b4cb4889d71e98b7d85a6a94ac9d75b26350f32ecfb0b3af5c798745f8aa0" +content-hash = "72f8e394847086ab4840af7a04b4c64d0a3219ac254a1a673f0d89f434d44ef7" diff --git a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml index 2a4c53f7d0a65..0d78f613be439 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml +++ b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.11.0" +version = "5.11.1" name = "source-declarative-manifest" description = "Base source implementation for low-code sources." authors = ["Airbyte "] @@ -17,7 +17,7 @@ include = "source_declarative_manifest" [tool.poetry.dependencies] python = "^3.10,<3.12" -airbyte-cdk = "5.11.0" +airbyte-cdk = "5.11.1" [tool.poetry.scripts] source-declarative-manifest = "source_declarative_manifest.run:run" diff --git a/docs/integrations/sources/low-code.md b/docs/integrations/sources/low-code.md index fec12d8dabd99..3da07dded290d 100644 --- a/docs/integrations/sources/low-code.md +++ b/docs/integrations/sources/low-code.md @@ -9,6 +9,7 @@ The changelog below is automatically updated by the `bump_version` command as pa | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------- | +| 5.11.1 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.11.1 | | 5.11.0 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.11.0 | | 5.10.3 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.3 | | 5.10.2 | 2024-10-03 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.2 | From bff4613868423ded82dad97cfe3d1fb74a947a13 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Mon, 7 Oct 2024 15:28:21 -0700 Subject: [PATCH 180/379] Bulk Load CDK: Restore additional properties to checkpoint output (#46560) --- .../kotlin/io/airbyte/cdk/message/DestinationMessage.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt index 73d0ad3f907de..154f61a1af18b 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt @@ -193,6 +193,9 @@ data class StreamCheckpoint( AirbyteStateStats() .withRecordCount(destinationStats.recordCount.toDouble()) } + it.additionalProperties.forEach { (key, value) -> + it.withAdditionalProperty(key, value) + } } return AirbyteMessage().withType(AirbyteMessage.Type.STATE).withState(stateMessage) } @@ -232,6 +235,9 @@ data class GlobalCheckpoint( AirbyteStateStats() .withRecordCount(destinationStats.recordCount.toDouble()) } + it.additionalProperties.forEach { (key, value) -> + it.withAdditionalProperty(key, value) + } } return AirbyteMessage().withType(AirbyteMessage.Type.STATE).withState(stateMessage) } From 32297adb458fc36c2db604c343efda238299ba9f Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants <36314070+artem1205@users.noreply.github.com> Date: Tue, 8 Oct 2024 13:57:32 +0200 Subject: [PATCH 181/379] ref(source-google-ads): raise exception on missing stream (#46543) Signed-off-by: Artem Inzhyyants --- .../source-google-ads/metadata.yaml | 2 +- .../connectors/source-google-ads/poetry.lock | 424 +++++++++++++----- .../source-google-ads/pyproject.toml | 6 +- .../source_google_ads/config_migrations.py | 16 +- .../source_google_ads/source.py | 4 +- .../source_google_ads/streams.py | 3 +- .../unit_tests/test_config_migrations.py | 11 +- .../unit_tests/test_source.py | 8 +- docs/integrations/sources/google-ads.md | 15 +- 9 files changed, 344 insertions(+), 145 deletions(-) diff --git a/airbyte-integrations/connectors/source-google-ads/metadata.yaml b/airbyte-integrations/connectors/source-google-ads/metadata.yaml index ded4f2bf43944..642140892cf99 100644 --- a/airbyte-integrations/connectors/source-google-ads/metadata.yaml +++ b/airbyte-integrations/connectors/source-google-ads/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 253487c0-2246-43ba-a21f-5116b20a2c50 - dockerImageTag: 3.7.5 + dockerImageTag: 3.7.6 dockerRepository: airbyte/source-google-ads documentationUrl: https://docs.airbyte.com/integrations/sources/google-ads githubIssueLabel: source-google-ads diff --git a/airbyte-integrations/connectors/source-google-ads/poetry.lock b/airbyte-integrations/connectors/source-google-ads/poetry.lock index 76abaeb490450..d1986bcd0cc0a 100644 --- a/airbyte-integrations/connectors/source-google-ads/poetry.lock +++ b/airbyte-integrations/connectors/source-google-ads/poetry.lock @@ -1,18 +1,18 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "4.6.2" +version = "5.10.3" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-4.6.2-py3-none-any.whl", hash = "sha256:3a37bd96c4b4f874b15fc18839b1e163eb30d1e4ef80d7dde2854e6a48efe934"}, - {file = "airbyte_cdk-4.6.2.tar.gz", hash = "sha256:c034f11ba6abe73dd7346ce2bc7017ff71ef0db1fd1ae86fb86beaeae35d8baf"}, + {file = "airbyte_cdk-5.10.3-py3-none-any.whl", hash = "sha256:af0c7974357c787a5e7c51f66788b594b5a5b60c43fad8f5ce16288c6ba16f08"}, + {file = "airbyte_cdk-5.10.3.tar.gz", hash = "sha256:ddf7fdc73786f36530da2ae68197abc590ac2e4d41293e82ac965f0bf5fb55e4"}, ] [package.dependencies] -airbyte-protocol-models-pdv2 = ">=0.12.2,<0.13.0" +airbyte-protocol-models-dataclasses = ">=0.13,<0.14" backoff = "*" cachetools = "*" cryptography = ">=42.0.5,<43.0.0" @@ -26,6 +26,7 @@ jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" nltk = "3.8.1" orjson = ">=3.10.7,<4.0.0" +pandas = "2.2.2" pendulum = "<3.0.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" @@ -35,27 +36,25 @@ pytz = "2024.1" PyYAML = ">=6.0.1,<7.0.0" requests = "*" requests_cache = "*" +serpyco-rs = ">=1.10.2,<2.0.0" wcmatch = "8.4" [package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pandas (==2.2.0)", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] [[package]] -name = "airbyte-protocol-models-pdv2" -version = "0.12.2" -description = "Declares the Airbyte Protocol." +name = "airbyte-protocol-models-dataclasses" +version = "0.13.0" +description = "Declares the Airbyte Protocol using Python Dataclasses. Dataclasses in Python have less performance overhead compared to Pydantic models, making them a more efficient choice for scenarios where speed and memory usage are critical" optional = false python-versions = ">=3.8" files = [ - {file = "airbyte_protocol_models_pdv2-0.12.2-py3-none-any.whl", hash = "sha256:8b3f9d0388928547cdf2e9134c0d589e4bcaa6f63bf71a21299f6824bfb7ad0e"}, - {file = "airbyte_protocol_models_pdv2-0.12.2.tar.gz", hash = "sha256:130c9ab289f3f53749ce63ff1abbfb67a44b7e5bd2794865315a2976138b672b"}, + {file = "airbyte_protocol_models_dataclasses-0.13.0-py3-none-any.whl", hash = "sha256:0aedb99ffc4f9aab0ce91bba2c292fa17cd8fd4b42eeba196d6a16c20bbbd7a5"}, + {file = "airbyte_protocol_models_dataclasses-0.13.0.tar.gz", hash = "sha256:72e67850d661e2808406aec5839b3158ebb94d3553b798dbdae1b4a278548d2f"}, ] -[package.dependencies] -pydantic = ">=2.7.2,<3.0.0" - [[package]] name = "annotated-types" version = "0.7.0" @@ -90,13 +89,14 @@ test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypo trio = ["trio (>=0.26.1)"] [[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." +name = "attributes-doc" +version = "0.4.0" +description = "PEP 224 implementation" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, + {file = "attributes-doc-0.4.0.tar.gz", hash = "sha256:b1576c94a714e9fc2c65c47cf10d0c8e1a5f7c4f5ae7f69006be108d95cbfbfb"}, + {file = "attributes_doc-0.4.0-py2.py3-none-any.whl", hash = "sha256:4c3007d9e58f3a6cb4b9c614c4d4ce2d92161581f28e594ddd8241cc3a113bdd"}, ] [[package]] @@ -131,13 +131,13 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -153,13 +153,13 @@ files = [ [[package]] name = "cattrs" -version = "24.1.1" +version = "24.1.2" description = "Composable complex class support for attrs and dataclasses." optional = false python-versions = ">=3.8" files = [ - {file = "cattrs-24.1.1-py3-none-any.whl", hash = "sha256:ec8ce8fdc725de9d07547cd616f968670687c6fa7a2e263b088370c46d834d97"}, - {file = "cattrs-24.1.1.tar.gz", hash = "sha256:16e94a13f9aaf6438bd5be5df521e072b1b00481b4cf807bcb1acbd49f814c08"}, + {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, + {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, ] [package.dependencies] @@ -618,61 +618,70 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "grpcio" -version = "1.66.1" +version = "1.66.2" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.66.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:4877ba180591acdf127afe21ec1c7ff8a5ecf0fe2600f0d3c50e8c4a1cbc6492"}, - {file = "grpcio-1.66.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:3750c5a00bd644c75f4507f77a804d0189d97a107eb1481945a0cf3af3e7a5ac"}, - {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:a013c5fbb12bfb5f927444b477a26f1080755a931d5d362e6a9a720ca7dbae60"}, - {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1b24c23d51a1e8790b25514157d43f0a4dce1ac12b3f0b8e9f66a5e2c4c132f"}, - {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7ffb8ea674d68de4cac6f57d2498fef477cef582f1fa849e9f844863af50083"}, - {file = "grpcio-1.66.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:307b1d538140f19ccbd3aed7a93d8f71103c5d525f3c96f8616111614b14bf2a"}, - {file = "grpcio-1.66.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1c17ebcec157cfb8dd445890a03e20caf6209a5bd4ac5b040ae9dbc59eef091d"}, - {file = "grpcio-1.66.1-cp310-cp310-win32.whl", hash = "sha256:ef82d361ed5849d34cf09105d00b94b6728d289d6b9235513cb2fcc79f7c432c"}, - {file = "grpcio-1.66.1-cp310-cp310-win_amd64.whl", hash = "sha256:292a846b92cdcd40ecca46e694997dd6b9be6c4c01a94a0dfb3fcb75d20da858"}, - {file = "grpcio-1.66.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:c30aeceeaff11cd5ddbc348f37c58bcb96da8d5aa93fed78ab329de5f37a0d7a"}, - {file = "grpcio-1.66.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8a1e224ce6f740dbb6b24c58f885422deebd7eb724aff0671a847f8951857c26"}, - {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:a66fe4dc35d2330c185cfbb42959f57ad36f257e0cc4557d11d9f0a3f14311df"}, - {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3ba04659e4fce609de2658fe4dbf7d6ed21987a94460f5f92df7579fd5d0e22"}, - {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4573608e23f7e091acfbe3e84ac2045680b69751d8d67685ffa193a4429fedb1"}, - {file = "grpcio-1.66.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7e06aa1f764ec8265b19d8f00140b8c4b6ca179a6dc67aa9413867c47e1fb04e"}, - {file = "grpcio-1.66.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3885f037eb11f1cacc41f207b705f38a44b69478086f40608959bf5ad85826dd"}, - {file = "grpcio-1.66.1-cp311-cp311-win32.whl", hash = "sha256:97ae7edd3f3f91480e48ede5d3e7d431ad6005bfdbd65c1b56913799ec79e791"}, - {file = "grpcio-1.66.1-cp311-cp311-win_amd64.whl", hash = "sha256:cfd349de4158d797db2bd82d2020554a121674e98fbe6b15328456b3bf2495bb"}, - {file = "grpcio-1.66.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:a92c4f58c01c77205df6ff999faa008540475c39b835277fb8883b11cada127a"}, - {file = "grpcio-1.66.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fdb14bad0835914f325349ed34a51940bc2ad965142eb3090081593c6e347be9"}, - {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f03a5884c56256e08fd9e262e11b5cfacf1af96e2ce78dc095d2c41ccae2c80d"}, - {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ca2559692d8e7e245d456877a85ee41525f3ed425aa97eb7a70fc9a79df91a0"}, - {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ca1be089fb4446490dd1135828bd42a7c7f8421e74fa581611f7afdf7ab761"}, - {file = "grpcio-1.66.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:d639c939ad7c440c7b2819a28d559179a4508783f7e5b991166f8d7a34b52815"}, - {file = "grpcio-1.66.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b9feb4e5ec8dc2d15709f4d5fc367794d69277f5d680baf1910fc9915c633524"}, - {file = "grpcio-1.66.1-cp312-cp312-win32.whl", hash = "sha256:7101db1bd4cd9b880294dec41a93fcdce465bdbb602cd8dc5bd2d6362b618759"}, - {file = "grpcio-1.66.1-cp312-cp312-win_amd64.whl", hash = "sha256:b0aa03d240b5539648d996cc60438f128c7f46050989e35b25f5c18286c86734"}, - {file = "grpcio-1.66.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:ecfe735e7a59e5a98208447293ff8580e9db1e890e232b8b292dc8bd15afc0d2"}, - {file = "grpcio-1.66.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4825a3aa5648010842e1c9d35a082187746aa0cdbf1b7a2a930595a94fb10fce"}, - {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:f517fd7259fe823ef3bd21e508b653d5492e706e9f0ef82c16ce3347a8a5620c"}, - {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1fe60d0772831d96d263b53d83fb9a3d050a94b0e94b6d004a5ad111faa5b5b"}, - {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31a049daa428f928f21090403e5d18ea02670e3d5d172581670be006100db9ef"}, - {file = "grpcio-1.66.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f914386e52cbdeb5d2a7ce3bf1fdfacbe9d818dd81b6099a05b741aaf3848bb"}, - {file = "grpcio-1.66.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bff2096bdba686019fb32d2dde45b95981f0d1490e054400f70fc9a8af34b49d"}, - {file = "grpcio-1.66.1-cp38-cp38-win32.whl", hash = "sha256:aa8ba945c96e73de29d25331b26f3e416e0c0f621e984a3ebdb2d0d0b596a3b3"}, - {file = "grpcio-1.66.1-cp38-cp38-win_amd64.whl", hash = "sha256:161d5c535c2bdf61b95080e7f0f017a1dfcb812bf54093e71e5562b16225b4ce"}, - {file = "grpcio-1.66.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:d0cd7050397b3609ea51727b1811e663ffda8bda39c6a5bb69525ef12414b503"}, - {file = "grpcio-1.66.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0e6c9b42ded5d02b6b1fea3a25f036a2236eeb75d0579bfd43c0018c88bf0a3e"}, - {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:c9f80f9fad93a8cf71c7f161778ba47fd730d13a343a46258065c4deb4b550c0"}, - {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dd67ed9da78e5121efc5c510f0122a972216808d6de70953a740560c572eb44"}, - {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48b0d92d45ce3be2084b92fb5bae2f64c208fea8ceed7fccf6a7b524d3c4942e"}, - {file = "grpcio-1.66.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4d813316d1a752be6f5c4360c49f55b06d4fe212d7df03253dfdae90c8a402bb"}, - {file = "grpcio-1.66.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c9bebc6627873ec27a70fc800f6083a13c70b23a5564788754b9ee52c5aef6c"}, - {file = "grpcio-1.66.1-cp39-cp39-win32.whl", hash = "sha256:30a1c2cf9390c894c90bbc70147f2372130ad189cffef161f0432d0157973f45"}, - {file = "grpcio-1.66.1-cp39-cp39-win_amd64.whl", hash = "sha256:17663598aadbedc3cacd7bbde432f541c8e07d2496564e22b214b22c7523dac8"}, - {file = "grpcio-1.66.1.tar.gz", hash = "sha256:35334f9c9745add3e357e3372756fd32d925bd52c41da97f4dfdafbde0bf0ee2"}, + {file = "grpcio-1.66.2-cp310-cp310-linux_armv7l.whl", hash = "sha256:fe96281713168a3270878255983d2cb1a97e034325c8c2c25169a69289d3ecfa"}, + {file = "grpcio-1.66.2-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:73fc8f8b9b5c4a03e802b3cd0c18b2b06b410d3c1dcbef989fdeb943bd44aff7"}, + {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:03b0b307ba26fae695e067b94cbb014e27390f8bc5ac7a3a39b7723fed085604"}, + {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d69ce1f324dc2d71e40c9261d3fdbe7d4c9d60f332069ff9b2a4d8a257c7b2b"}, + {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05bc2ceadc2529ab0b227b1310d249d95d9001cd106aa4d31e8871ad3c428d73"}, + {file = "grpcio-1.66.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ac475e8da31484efa25abb774674d837b343afb78bb3bcdef10f81a93e3d6bf"}, + {file = "grpcio-1.66.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0be4e0490c28da5377283861bed2941d1d20ec017ca397a5df4394d1c31a9b50"}, + {file = "grpcio-1.66.2-cp310-cp310-win32.whl", hash = "sha256:4e504572433f4e72b12394977679161d495c4c9581ba34a88d843eaf0f2fbd39"}, + {file = "grpcio-1.66.2-cp310-cp310-win_amd64.whl", hash = "sha256:2018b053aa15782db2541ca01a7edb56a0bf18c77efed975392583725974b249"}, + {file = "grpcio-1.66.2-cp311-cp311-linux_armv7l.whl", hash = "sha256:2335c58560a9e92ac58ff2bc5649952f9b37d0735608242973c7a8b94a6437d8"}, + {file = "grpcio-1.66.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:45a3d462826f4868b442a6b8fdbe8b87b45eb4f5b5308168c156b21eca43f61c"}, + {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:a9539f01cb04950fd4b5ab458e64a15f84c2acc273670072abe49a3f29bbad54"}, + {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce89f5876662f146d4c1f695dda29d4433a5d01c8681fbd2539afff535da14d4"}, + {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25a14af966438cddf498b2e338f88d1c9706f3493b1d73b93f695c99c5f0e2a"}, + {file = "grpcio-1.66.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6001e575b8bbd89eee11960bb640b6da6ae110cf08113a075f1e2051cc596cae"}, + {file = "grpcio-1.66.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4ea1d062c9230278793820146c95d038dc0f468cbdd172eec3363e42ff1c7d01"}, + {file = "grpcio-1.66.2-cp311-cp311-win32.whl", hash = "sha256:38b68498ff579a3b1ee8f93a05eb48dc2595795f2f62716e797dc24774c1aaa8"}, + {file = "grpcio-1.66.2-cp311-cp311-win_amd64.whl", hash = "sha256:6851de821249340bdb100df5eacfecfc4e6075fa85c6df7ee0eb213170ec8e5d"}, + {file = "grpcio-1.66.2-cp312-cp312-linux_armv7l.whl", hash = "sha256:802d84fd3d50614170649853d121baaaa305de7b65b3e01759247e768d691ddf"}, + {file = "grpcio-1.66.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:80fd702ba7e432994df208f27514280b4b5c6843e12a48759c9255679ad38db8"}, + {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:12fda97ffae55e6526825daf25ad0fa37483685952b5d0f910d6405c87e3adb6"}, + {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:950da58d7d80abd0ea68757769c9db0a95b31163e53e5bb60438d263f4bed7b7"}, + {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e636ce23273683b00410f1971d209bf3689238cf5538d960adc3cdfe80dd0dbd"}, + {file = "grpcio-1.66.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a917d26e0fe980b0ac7bfcc1a3c4ad6a9a4612c911d33efb55ed7833c749b0ee"}, + {file = "grpcio-1.66.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49f0ca7ae850f59f828a723a9064cadbed90f1ece179d375966546499b8a2c9c"}, + {file = "grpcio-1.66.2-cp312-cp312-win32.whl", hash = "sha256:31fd163105464797a72d901a06472860845ac157389e10f12631025b3e4d0453"}, + {file = "grpcio-1.66.2-cp312-cp312-win_amd64.whl", hash = "sha256:ff1f7882e56c40b0d33c4922c15dfa30612f05fb785074a012f7cda74d1c3679"}, + {file = "grpcio-1.66.2-cp313-cp313-linux_armv7l.whl", hash = "sha256:3b00efc473b20d8bf83e0e1ae661b98951ca56111feb9b9611df8efc4fe5d55d"}, + {file = "grpcio-1.66.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1caa38fb22a8578ab8393da99d4b8641e3a80abc8fd52646f1ecc92bcb8dee34"}, + {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:c408f5ef75cfffa113cacd8b0c0e3611cbfd47701ca3cdc090594109b9fcbaed"}, + {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c806852deaedee9ce8280fe98955c9103f62912a5b2d5ee7e3eaa284a6d8d8e7"}, + {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f145cc21836c332c67baa6fc81099d1d27e266401565bf481948010d6ea32d46"}, + {file = "grpcio-1.66.2-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:73e3b425c1e155730273f73e419de3074aa5c5e936771ee0e4af0814631fb30a"}, + {file = "grpcio-1.66.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:9c509a4f78114cbc5f0740eb3d7a74985fd2eff022971bc9bc31f8bc93e66a3b"}, + {file = "grpcio-1.66.2-cp313-cp313-win32.whl", hash = "sha256:20657d6b8cfed7db5e11b62ff7dfe2e12064ea78e93f1434d61888834bc86d75"}, + {file = "grpcio-1.66.2-cp313-cp313-win_amd64.whl", hash = "sha256:fb70487c95786e345af5e854ffec8cb8cc781bcc5df7930c4fbb7feaa72e1cdf"}, + {file = "grpcio-1.66.2-cp38-cp38-linux_armv7l.whl", hash = "sha256:a18e20d8321c6400185b4263e27982488cb5cdd62da69147087a76a24ef4e7e3"}, + {file = "grpcio-1.66.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:02697eb4a5cbe5a9639f57323b4c37bcb3ab2d48cec5da3dc2f13334d72790dd"}, + {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:99a641995a6bc4287a6315989ee591ff58507aa1cbe4c2e70d88411c4dcc0839"}, + {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ed71e81782966ffead60268bbda31ea3f725ebf8aa73634d5dda44f2cf3fb9c"}, + {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbd27c24a4cc5e195a7f56cfd9312e366d5d61b86e36d46bbe538457ea6eb8dd"}, + {file = "grpcio-1.66.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d9a9724a156c8ec6a379869b23ba3323b7ea3600851c91489b871e375f710bc8"}, + {file = "grpcio-1.66.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d8d4732cc5052e92cea2f78b233c2e2a52998ac40cd651f40e398893ad0d06ec"}, + {file = "grpcio-1.66.2-cp38-cp38-win32.whl", hash = "sha256:7b2c86457145ce14c38e5bf6bdc19ef88e66c5fee2c3d83285c5aef026ba93b3"}, + {file = "grpcio-1.66.2-cp38-cp38-win_amd64.whl", hash = "sha256:e88264caad6d8d00e7913996030bac8ad5f26b7411495848cc218bd3a9040b6c"}, + {file = "grpcio-1.66.2-cp39-cp39-linux_armv7l.whl", hash = "sha256:c400ba5675b67025c8a9f48aa846f12a39cf0c44df5cd060e23fda5b30e9359d"}, + {file = "grpcio-1.66.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:66a0cd8ba6512b401d7ed46bb03f4ee455839957f28b8d61e7708056a806ba6a"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:06de8ec0bd71be123eec15b0e0d457474931c2c407869b6c349bd9bed4adbac3"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb57870449dfcfac428afbb5a877829fcb0d6db9d9baa1148705739e9083880e"}, + {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b672abf90a964bfde2d0ecbce30f2329a47498ba75ce6f4da35a2f4532b7acbc"}, + {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ad2efdbe90c73b0434cbe64ed372e12414ad03c06262279b104a029d1889d13e"}, + {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c3a99c519f4638e700e9e3f83952e27e2ea10873eecd7935823dab0c1c9250e"}, + {file = "grpcio-1.66.2-cp39-cp39-win32.whl", hash = "sha256:78fa51ebc2d9242c0fc5db0feecc57a9943303b46664ad89921f5079e2e4ada7"}, + {file = "grpcio-1.66.2-cp39-cp39-win_amd64.whl", hash = "sha256:728bdf36a186e7f51da73be7f8d09457a03061be848718d0edf000e709418987"}, + {file = "grpcio-1.66.2.tar.gz", hash = "sha256:563588c587b75c34b928bc428548e5b00ea38c46972181a4d8b75ba7e3f24231"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.66.1)"] +protobuf = ["grpcio-tools (>=1.66.2)"] [[package]] name = "grpcio-status" @@ -703,13 +712,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -720,7 +729,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -895,13 +904,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.125" +version = "0.1.131" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.125-py3-none-any.whl", hash = "sha256:74ce8eb2663e1ed20bfcfc88d41e0712879306956c9938d1cdbab7d60458bdca"}, - {file = "langsmith-0.1.125.tar.gz", hash = "sha256:2c0eb0c3cbf22cff55bf519b8e889041f9a591bcf97af5152c8e130333c5940e"}, + {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, + {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, ] [package.dependencies] @@ -909,6 +918,7 @@ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" @@ -1004,6 +1014,68 @@ plot = ["matplotlib"] tgrep = ["pyparsing"] twitter = ["twython"] +[[package]] +name = "numpy" +version = "2.1.2" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30d53720b726ec36a7f88dc873f0eec8447fbc93d93a8f079dfac2629598d6ee"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8d3ca0a72dd8846eb6f7dfe8f19088060fcb76931ed592d29128e0219652884"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:fc44e3c68ff00fd991b59092a54350e6e4911152682b4782f68070985aa9e648"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7c1c60328bd964b53f8b835df69ae8198659e2b9302ff9ebb7de4e5a5994db3d"}, + {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cdb606a7478f9ad91c6283e238544451e3a95f30fb5467fbf715964341a8a86"}, + {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d666cb72687559689e9906197e3bec7b736764df6a2e58ee265e360663e9baf7"}, + {file = "numpy-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c6eef7a2dbd0abfb0d9eaf78b73017dbfd0b54051102ff4e6a7b2980d5ac1a03"}, + {file = "numpy-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:12edb90831ff481f7ef5f6bc6431a9d74dc0e5ff401559a71e5e4611d4f2d466"}, + {file = "numpy-2.1.2-cp310-cp310-win32.whl", hash = "sha256:a65acfdb9c6ebb8368490dbafe83c03c7e277b37e6857f0caeadbbc56e12f4fb"}, + {file = "numpy-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:860ec6e63e2c5c2ee5e9121808145c7bf86c96cca9ad396c0bd3e0f2798ccbe2"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b42a1a511c81cc78cbc4539675713bbcf9d9c3913386243ceff0e9429ca892fe"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:faa88bc527d0f097abdc2c663cddf37c05a1c2f113716601555249805cf573f1"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c82af4b2ddd2ee72d1fc0c6695048d457e00b3582ccde72d8a1c991b808bb20f"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:13602b3174432a35b16c4cfb5de9a12d229727c3dd47a6ce35111f2ebdf66ff4"}, + {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ebec5fd716c5a5b3d8dfcc439be82a8407b7b24b230d0ad28a81b61c2f4659a"}, + {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2b49c3c0804e8ecb05d59af8386ec2f74877f7ca8fd9c1e00be2672e4d399b1"}, + {file = "numpy-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cbba4b30bf31ddbe97f1c7205ef976909a93a66bb1583e983adbd155ba72ac2"}, + {file = "numpy-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8e00ea6fc82e8a804433d3e9cedaa1051a1422cb6e443011590c14d2dea59146"}, + {file = "numpy-2.1.2-cp311-cp311-win32.whl", hash = "sha256:5006b13a06e0b38d561fab5ccc37581f23c9511879be7693bd33c7cd15ca227c"}, + {file = "numpy-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:f1eb068ead09f4994dec71c24b2844f1e4e4e013b9629f812f292f04bd1510d9"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7bf0a4f9f15b32b5ba53147369e94296f5fffb783db5aacc1be15b4bf72f43b"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b1d0fcae4f0949f215d4632be684a539859b295e2d0cb14f78ec231915d644db"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f751ed0a2f250541e19dfca9f1eafa31a392c71c832b6bb9e113b10d050cb0f1"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:bd33f82e95ba7ad632bc57837ee99dba3d7e006536200c4e9124089e1bf42426"}, + {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8cde4f11f0a975d1fd59373b32e2f5a562ade7cde4f85b7137f3de8fbb29a0"}, + {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d95f286b8244b3649b477ac066c6906fbb2905f8ac19b170e2175d3d799f4df"}, + {file = "numpy-2.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ab4754d432e3ac42d33a269c8567413bdb541689b02d93788af4131018cbf366"}, + {file = "numpy-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e585c8ae871fd38ac50598f4763d73ec5497b0de9a0ab4ef5b69f01c6a046142"}, + {file = "numpy-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9c6c754df29ce6a89ed23afb25550d1c2d5fdb9901d9c67a16e0b16eaf7e2550"}, + {file = "numpy-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:456e3b11cb79ac9946c822a56346ec80275eaf2950314b249b512896c0d2505e"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a84498e0d0a1174f2b3ed769b67b656aa5460c92c9554039e11f20a05650f00d"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4d6ec0d4222e8ffdab1744da2560f07856421b367928026fb540e1945f2eeeaf"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:259ec80d54999cc34cd1eb8ded513cb053c3bf4829152a2e00de2371bd406f5e"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:675c741d4739af2dc20cd6c6a5c4b7355c728167845e3c6b0e824e4e5d36a6c3"}, + {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b2d4e667895cc55e3ff2b56077e4c8a5604361fc21a042845ea3ad67465aa8"}, + {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43cca367bf94a14aca50b89e9bc2061683116cfe864e56740e083392f533ce7a"}, + {file = "numpy-2.1.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:76322dcdb16fccf2ac56f99048af32259dcc488d9b7e25b51e5eca5147a3fb98"}, + {file = "numpy-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:32e16a03138cabe0cb28e1007ee82264296ac0983714094380b408097a418cfe"}, + {file = "numpy-2.1.2-cp313-cp313-win32.whl", hash = "sha256:242b39d00e4944431a3cd2db2f5377e15b5785920421993770cddb89992c3f3a"}, + {file = "numpy-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:f2ded8d9b6f68cc26f8425eda5d3877b47343e68ca23d0d0846f4d312ecaa445"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ffef621c14ebb0188a8633348504a35c13680d6da93ab5cb86f4e54b7e922b5"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ad369ed238b1959dfbade9018a740fb9392c5ac4f9b5173f420bd4f37ba1f7a0"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d82075752f40c0ddf57e6e02673a17f6cb0f8eb3f587f63ca1eaab5594da5b17"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:1600068c262af1ca9580a527d43dc9d959b0b1d8e56f8a05d830eea39b7c8af6"}, + {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a26ae94658d3ba3781d5e103ac07a876b3e9b29db53f68ed7df432fd033358a8"}, + {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13311c2db4c5f7609b462bc0f43d3c465424d25c626d95040f073e30f7570e35"}, + {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:2abbf905a0b568706391ec6fa15161fad0fb5d8b68d73c461b3c1bab6064dd62"}, + {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ef444c57d664d35cac4e18c298c47d7b504c66b17c2ea91312e979fcfbdfb08a"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bdd407c40483463898b84490770199d5714dcc9dd9b792f6c6caccc523c00952"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:da65fb46d4cbb75cb417cddf6ba5e7582eb7bb0b47db4b99c9fe5787ce5d91f5"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c193d0b0238638e6fc5f10f1b074a6993cb13b0b431f64079a509d63d3aa8b7"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a7d80b2e904faa63068ead63107189164ca443b42dd1930299e0d1cb041cec2e"}, + {file = "numpy-2.1.2.tar.gz", hash = "sha256:13532a088217fa624c99b843eeb54640de23b3414b14aa66d023805eb731066c"}, +] + [[package]] name = "oauthlib" version = "3.2.2" @@ -1097,6 +1169,78 @@ files = [ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] +[[package]] +name = "pandas" +version = "2.2.2" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + [[package]] name = "pendulum" version = "2.1.2" @@ -1199,17 +1343,6 @@ files = [ {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, ] -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - [[package]] name = "pyasn1" version = "0.6.1" @@ -1442,27 +1575,25 @@ files = [ [[package]] name = "pytest" -version = "6.2.5" +version = "7.4.4" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, ] [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-mock" @@ -1768,6 +1899,20 @@ requests = ">=2.0.0" [package.extras] rsa = ["oauthlib[signedtoken] (>=3.0.0)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "rsa" version = "4.9" @@ -1782,6 +1927,60 @@ files = [ [package.dependencies] pyasn1 = ">=0.1.3" +[[package]] +name = "serpyco-rs" +version = "1.11.0" +description = "" +optional = false +python-versions = ">=3.9" +files = [ + {file = "serpyco_rs-1.11.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4b2bd933539bd8c84315e2fb5ae52ef7a58ace5a6dfe3f8b73f74dc71216779e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:627f957889ff73c4d2269fc7b6bba93212381befe03633e7cb5495de66ba9a33"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0933620abc01434023e0e3e22255b7e4ab9b427b5a9a5ee00834656d792377a"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9ce46683d92e34abb20304817fc5ac6cb141a06fc7468dedb1d8865a8a9682f6"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bda437d86e8859bf91c189c1f4650899822f6d6d7b02b48f5729da904eb7bb7d"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a72bfbd282af17ebe76d122639013e802c09902543fdbbd828fb2159ec9755e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d4808df5384e3e8581e31a90ba7a1fa501c0837b1f174284bb8a4555b6864ea"}, + {file = "serpyco_rs-1.11.0-cp310-none-win_amd64.whl", hash = "sha256:c7b60aef4c16d68efb0d6241f05d0a434d873d98449cbb4366b0d385f0a7172b"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d47ee577cf4d69b53917615cb031ad8708eb2f59fe78194b1968c13130fc2f7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6090d9a1487237cdd4e9362a823eede23249602019b917e7bd57846179286e79"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7192eb3df576386fefd595ea31ae25c62522841ffec7e7aeb37a80b55bdc3213"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b52ef8affb7e71b9b98a7d5216d6a7ad03b04e990acb147cd9211c8b931c5487"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3480e09e473560c60e74aaa789e6b4d079637371aae0a98235440111464bbba7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c92e36b0ab6fe866601c2331f7e99c809a126d21963c03d8a5c29331526deed"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84f497361952d4566bc1f77e9e15a84a2614f593cc671fbf0a0fa80046f9c3d7"}, + {file = "serpyco_rs-1.11.0-cp311-none-win_amd64.whl", hash = "sha256:37fc1cf192bef9784fbf1f4e03cec21750b9e704bef55cc0442f71a715eee920"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3ea93d485f03dc8b0cfb0d477f0ad2e86e78f0461b53010656ab5b4db1b41fb0"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7772410d15694b03f9c5500a2c47d62eed76e191bea4087ad042250346b1a38e"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42118463c1679846cffd2f06f47744c9b9eb33c5d0448afd88ea19e1a81a8ddd"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:79481a455b76cc56021dc55bb6d5bdda1b2b32bcb6a1ee711b597140d112e9b1"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8fd79051f9af9591fc03cf7d3033ff180416301f6a4fd3d1e3d92ebd2d68697"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d29c8f9aeed734a3b51f7349d04ec9063516ffa4e10b632d75e9b1309e4930e4"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15609158b0d9591ffa118302cd9d0039970cb3faf91dce32975f7d276e7411d5"}, + {file = "serpyco_rs-1.11.0-cp312-none-win_amd64.whl", hash = "sha256:00081eae77fbf4c5d88371c5586317ab02ccb293a330b460869a283edf2b7b69"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3028893366a1985adcedb13fa8f6f98c087c185efc427f94c2ccdafa40f45832"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c18bf511316f3abf648a68ee62ef88617bec57d3fcde69466b4361102715ae5"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7dde9ef09cdfaf7c62378186b9e29f54ec76114be4c347be6a06dd559c5681e"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:18500ebc5e75285841e35585a238629a990b709e14f68933233640d15ca17d5f"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47c23132d4e03982703a7630aa09877b41e499722142f76b6153f6619b612f3"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5f8e6ba499f6a0825bee0d8f8764569d367af871b563fc6512c171474e8e5383"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15438a076047c34cff6601a977df54948e8d39d1a86f89d05c48bc60f4c12a61"}, + {file = "serpyco_rs-1.11.0-cp313-none-win_amd64.whl", hash = "sha256:84ee2c109415bd81904fc9abb9aec86a5dd13166808c21142cf23ec639f683bd"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5c97c16c865261577fac4effeccc7ef5e0a1e8e35e7a3ee6c90c77c3a4cd7ff9"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47825e70f86fd6ef7c4a835dea3d6e8eef4fee354ed7b39ced99f31aba74a86e"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24d220220365110edba2f778f41ab3cf396883da0f26e1361a3ada9bd0227f73"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3a46f334af5a9d77acc6e1e58f355ae497900a2798929371f0545e274f6e6166"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d72b748acce4b4e3c7c9724e1eb33d033a1c26b08a698b393e0288060e0901"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2b8b6f205e8cc038d4d30dd0e70eece7bbecc816eb2f3787c330dc2218e232d"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038d748bfff31f150f0c3edab2766b8843edb952cb1bd3bf547886beb0912dae"}, + {file = "serpyco_rs-1.11.0-cp39-none-win_amd64.whl", hash = "sha256:0fee1c89ec2cb013dc232e4ebef88e2844357ce8631063b56639dbfb83762f20"}, + {file = "serpyco_rs-1.11.0.tar.gz", hash = "sha256:70a844615ffb229e6e89c204b3ab7404aacaf2838911814c7d847969b8da2e3a"}, +] + +[package.dependencies] +attributes-doc = "*" +typing-extensions = "*" + [[package]] name = "setuptools" version = "75.1.0" @@ -1840,14 +2039,14 @@ doc = ["reno", "sphinx"] test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" +name = "tomli" +version = "2.0.2" +description = "A lil' TOML parser" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = ">=3.8" files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -1881,6 +2080,17 @@ files = [ {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "tzdata" +version = "2024.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, +] + [[package]] name = "url-normalize" version = "1.4.3" @@ -2008,4 +2218,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10,<3.12" -content-hash = "9d1d09fbaad68d5bcfdbf7c2b8ebdcaa161d4024e1e22bdd477a40bb0a4e3e24" +content-hash = "cc7253c544be1449a237a59818d26645525da0a64fda01cf22b6b824db2fef7f" diff --git a/airbyte-integrations/connectors/source-google-ads/pyproject.toml b/airbyte-integrations/connectors/source-google-ads/pyproject.toml index 875e9c6329d8d..eaa813f5a9be3 100644 --- a/airbyte-integrations/connectors/source-google-ads/pyproject.toml +++ b/airbyte-integrations/connectors/source-google-ads/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "3.7.5" +version = "3.7.6" name = "source-google-ads" description = "Source implementation for Google Ads." authors = [ "Airbyte ",] @@ -19,7 +19,7 @@ include = "source_google_ads" python = "^3.10,<3.12" google-ads = "==25.0.0" protobuf = "==4.25.2" -airbyte-cdk = "^4" +airbyte-cdk = "^5" [tool.poetry.scripts] source-google-ads = "source_google_ads.run:run" @@ -28,4 +28,4 @@ source-google-ads = "source_google_ads.run:run" pytest-mock = "^3.12.0" requests-mock = "^1.11.0" freezegun = "^1.4.0" -pytest = "^6.1" +pytest = "^7" diff --git a/airbyte-integrations/connectors/source-google-ads/source_google_ads/config_migrations.py b/airbyte-integrations/connectors/source-google-ads/source_google_ads/config_migrations.py index 81fcfb195f139..81bae9ceb5cb7 100644 --- a/airbyte-integrations/connectors/source-google-ads/source_google_ads/config_migrations.py +++ b/airbyte-integrations/connectors/source-google-ads/source_google_ads/config_migrations.py @@ -5,7 +5,7 @@ from typing import Any, List, Mapping -from airbyte_cdk.config_observation import create_connector_config_control_message +from airbyte_cdk.config_observation import create_connector_config_control_message, emit_configuration_as_airbyte_control_message from airbyte_cdk.entrypoint import AirbyteEntrypoint from airbyte_cdk.models import FailureType from airbyte_cdk.sources import Source @@ -96,18 +96,6 @@ def modify_and_save(cls, config_path: str, source: Source, config: Mapping[str, source.write_config(migrated_config, config_path) return migrated_config - @classmethod - def emit_control_message(cls, migrated_config: Mapping[str, Any]) -> None: - """ - Emits the control messages related to configuration migration. - - Args: - - migrated_config (Mapping[str, Any]): The migrated configuration. - """ - cls.message_repository.emit_message(create_connector_config_control_message(migrated_config)) - for message in cls.message_repository._message_queue: - print(message.json(exclude_unset=True)) - @classmethod def migrate(cls, args: List[str], source: Source) -> None: """ @@ -125,4 +113,4 @@ def migrate(cls, args: List[str], source: Source) -> None: if config_path: config = source.read_config(config_path) if cls.should_migrate(config): - cls.emit_control_message(cls.modify_and_save(config_path, source, config)) + emit_configuration_as_airbyte_control_message(cls.modify_and_save(config_path, source, config)) diff --git a/airbyte-integrations/connectors/source-google-ads/source_google_ads/source.py b/airbyte-integrations/connectors/source-google-ads/source_google_ads/source.py index e5624b2a1644f..8f1acf2ecfbd8 100644 --- a/airbyte-integrations/connectors/source-google-ads/source_google_ads/source.py +++ b/airbyte-integrations/connectors/source-google-ads/source_google_ads/source.py @@ -49,8 +49,8 @@ class SourceGoogleAds(AbstractSource): - # Skip exceptions on missing streams - raise_exception_on_missing_stream = False + # Raise exceptions on missing streams + raise_exception_on_missing_stream = True @staticmethod def _validate_and_transform(config: Mapping[str, Any]): diff --git a/airbyte-integrations/connectors/source-google-ads/source_google_ads/streams.py b/airbyte-integrations/connectors/source-google-ads/source_google_ads/streams.py index b61596ee6c71f..0dc3374548fae 100644 --- a/airbyte-integrations/connectors/source-google-ads/source_google_ads/streams.py +++ b/airbyte-integrations/connectors/source-google-ads/source_google_ads/streams.py @@ -8,11 +8,10 @@ import backoff import pendulum -from airbyte_cdk.models import SyncMode +from airbyte_cdk.models import FailureType, SyncMode from airbyte_cdk.sources.streams import CheckpointMixin, Stream from airbyte_cdk.sources.utils.transform import TransformConfig, TypeTransformer from airbyte_cdk.utils import AirbyteTracedException -from airbyte_protocol.models import FailureType from google.ads.googleads.errors import GoogleAdsException from google.ads.googleads.v17.services.services.google_ads_service.pagers import SearchPager from google.ads.googleads.v17.services.types.google_ads_service import SearchGoogleAdsResponse diff --git a/airbyte-integrations/connectors/source-google-ads/unit_tests/test_config_migrations.py b/airbyte-integrations/connectors/source-google-ads/unit_tests/test_config_migrations.py index 4ca91bc77892c..a65712bf0e9d3 100644 --- a/airbyte-integrations/connectors/source-google-ads/unit_tests/test_config_migrations.py +++ b/airbyte-integrations/connectors/source-google-ads/unit_tests/test_config_migrations.py @@ -34,7 +34,7 @@ def revert_migration(config_path: str = TEST_CONFIG_PATH) -> None: updated_config.write(config) -def test_migrate_config(): +def test_migrate_config(capsys): migration_instance = MigrateCustomQuery() original_config = load_config() original_config_queries = original_config["custom_queries"].copy() @@ -54,12 +54,13 @@ def test_migrate_config(): # load the old custom reports VS migrated new_config_queries = test_migrated_config["custom_queries_array"].copy() new_config_queries[0]["query"] = new_config_queries[0]["query"].replace(", segments.date", "") - print(f"{original_config=} \n {test_migrated_config=}") assert original_config["custom_queries"] == new_config_queries # test CONTROL MESSAGE was emitted - control_msg = migration_instance.message_repository._message_queue[0] - assert control_msg.type == Type.CONTROL - assert control_msg.control.type == OrchestratorType.CONNECTOR_CONFIG + what = capsys.readouterr().out + control_msg = json.loads(what) + # control_msg = migration_instance.message_repository._message_queue[0] + assert control_msg["type"] == Type.CONTROL.value + assert control_msg["control"]["type"] == OrchestratorType.CONNECTOR_CONFIG.value # revert the test_config to the starting point revert_migration() diff --git a/airbyte-integrations/connectors/source-google-ads/unit_tests/test_source.py b/airbyte-integrations/connectors/source-google-ads/unit_tests/test_source.py index 80796e6d0b193..fd53878536cf8 100644 --- a/airbyte-integrations/connectors/source-google-ads/unit_tests/test_source.py +++ b/airbyte-integrations/connectors/source-google-ads/unit_tests/test_source.py @@ -10,7 +10,8 @@ import pendulum import pytest -from airbyte_cdk.models import AirbyteStream, ConfiguredAirbyteCatalog, ConfiguredAirbyteStream, DestinationSyncMode, SyncMode +from airbyte_cdk import AirbyteTracedException +from airbyte_cdk.models import AirbyteStream, ConfiguredAirbyteCatalog, ConfiguredAirbyteStream, DestinationSyncMode, FailureType, SyncMode from pendulum import duration, today from source_google_ads.custom_query_stream import IncrementalCustomQuery from source_google_ads.google_ads import GoogleAds @@ -139,10 +140,9 @@ def test_read_missing_stream(config, mock_get_customers): ] ) - try: + with pytest.raises(AirbyteTracedException) as e: list(source.read(logging.getLogger("airbyte"), config=config, catalog=catalog)) - except KeyError as error: - pytest.fail(str(error)) + assert e.value.failure_type == FailureType.config_error @pytest.mark.parametrize( diff --git a/docs/integrations/sources/google-ads.md b/docs/integrations/sources/google-ads.md index e2a8457e2b6a3..671bc3cf04c2f 100644 --- a/docs/integrations/sources/google-ads.md +++ b/docs/integrations/sources/google-ads.md @@ -60,9 +60,8 @@ Each Google Ads API developer token is assigned an access level and "permissible - + #### For Airbyte Cloud: - 1. [Log into your Airbyte Cloud](https://cloud.airbyte.com/workspaces) account. 2. Click Sources and then click + New source. @@ -119,6 +118,7 @@ If you are accessing your account through a Google Ads Manager account, you must + ## Supported sync modes The Google Ads source connector supports the following [sync modes](https://docs.airbyte.com/cloud/core-concepts/#connection-sync-modes): @@ -335,11 +335,12 @@ Due to a limitation in the Google Ads API which does not allow getting performan | Version | Date | Pull Request | Subject | |:----------|:-----------|:---------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------| -| 3.7.5 | 2024-09-21 | [45801](https://github.com/airbytehq/airbyte/pull/45801) | Update dependencies | -| 3.7.4 | 2024-09-20 | [44600](https://github.com/airbytehq/airbyte/pull/44600) | Update API documentation URLs | -| 3.7.3 | 2024-09-14 | [45497](https://github.com/airbytehq/airbyte/pull/45497) | Update dependencies | -| 3.7.2 | 2024-09-07 | [45263](https://github.com/airbytehq/airbyte/pull/45263) | Update dependencies | -| 3.7.1 | 2024-08-31 | [44326](https://github.com/airbytehq/airbyte/pull/44326) | Update dependencies | +| 3.7.6 | 2024-09-21 | [46543](https://github.com/airbytehq/airbyte/pull/46543) | Raise exception on missing stream | +| 3.7.5 | 2024-09-21 | [45801](https://github.com/airbytehq/airbyte/pull/45801) | Update dependencies | +| 3.7.4 | 2024-09-20 | [44600](https://github.com/airbytehq/airbyte/pull/44600) | Update API documentation URLs | +| 3.7.3 | 2024-09-14 | [45497](https://github.com/airbytehq/airbyte/pull/45497) | Update dependencies | +| 3.7.2 | 2024-09-07 | [45263](https://github.com/airbytehq/airbyte/pull/45263) | Update dependencies | +| 3.7.1 | 2024-08-31 | [44326](https://github.com/airbytehq/airbyte/pull/44326) | Update dependencies | | `3.7.0 ` | 2024-08-15 | [44095](https://github.com/airbytehq/airbyte/pull/44095) | Migrate to google-ads v17 | | `3.6.5 ` | 2024-08-12 | [43882](https://github.com/airbytehq/airbyte/pull/43882) | Update dependencies | | `3.6.4` | 2024-08-10 | [43628](https://github.com/airbytehq/airbyte/pull/43628) | Update dependencies | From d1b2855666db951b242d32f855295ead67210975 Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Tue, 8 Oct 2024 06:18:56 -0700 Subject: [PATCH 182/379] [source-mysql-v2] Delete selectquerier (#46562) --- .../connectors/source-mysql-v2/metadata.yaml | 2 +- .../source/mysql/MysqlJdbcSelectQuerier.kt | 27 ------------------- 2 files changed, 1 insertion(+), 28 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcSelectQuerier.kt diff --git a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml index 74b8eacf50cc4..e5ddf8e61a4b6 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml +++ b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: 561393ed-7e3a-4d0d-8b8b-90ded371754c - dockerImageTag: 0.0.16 + dockerImageTag: 0.0.17 dockerRepository: airbyte/source-mysql-v2 documentationUrl: https://docs.airbyte.com/integrations/sources/mysql githubIssueLabel: source-mysql-v2 diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcSelectQuerier.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcSelectQuerier.kt deleted file mode 100644 index d559f0f730df5..0000000000000 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcSelectQuerier.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2024 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.integrations.source.mysql - -import io.airbyte.cdk.read.JdbcSelectQuerier -import io.airbyte.cdk.read.SelectQuerier -import io.airbyte.cdk.read.SelectQuery -import io.github.oshai.kotlinlogging.KotlinLogging -import io.micronaut.context.annotation.Primary -import javax.inject.Singleton - -private val log = KotlinLogging.logger {} - -@Singleton -@Primary -class MysqlJdbcSelectQuerier(val base: JdbcSelectQuerier) : SelectQuerier by base { - - override fun executeQuery( - q: SelectQuery, - parameters: SelectQuerier.Parameters - ): SelectQuerier.Result { - log.info { "Executing query: ${q.sql}" } - return base.executeQuery(q, SelectQuerier.Parameters(fetchSize = Int.MIN_VALUE)) - } -} From 782cf003f3f2486d93adf2dbcf21bf7820f88707 Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Tue, 8 Oct 2024 07:19:11 -0700 Subject: [PATCH 183/379] [source-mysql-v2] - check if saved LSN has expired or not (#46547) Co-authored-by: Marius Posta --- .../cdk/read/cdc/CdcPartitionsCreator.kt | 11 +- .../cdk/read/cdc/CdcPartitionsCreatorTest.kt | 25 ++++ .../connectors/source-mysql-v2/metadata.yaml | 2 +- .../source/mysql/MysqlSourceConfiguration.kt | 40 +++++- .../mysql/MysqlSourceMetadataQuerier.kt | 3 +- .../mysql/cdc/MySqlDebeziumOperations.kt | 130 +++++++++++++++++- .../source/mysql/MysqlCdcIntegrationTest.kt | 29 ++-- .../mysql/MysqlSourceConfigurationTest.kt | 18 ++- 8 files changed, 221 insertions(+), 37 deletions(-) diff --git a/airbyte-cdk/bulk/toolkits/extract-cdc/src/main/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionsCreator.kt b/airbyte-cdk/bulk/toolkits/extract-cdc/src/main/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionsCreator.kt index 19fff3ef88d32..9a56066b1589c 100644 --- a/airbyte-cdk/bulk/toolkits/extract-cdc/src/main/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionsCreator.kt +++ b/airbyte-cdk/bulk/toolkits/extract-cdc/src/main/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionsCreator.kt @@ -4,6 +4,7 @@ package io.airbyte.cdk.read.cdc +import io.airbyte.cdk.ConfigErrorException import io.airbyte.cdk.command.OpaqueStateValue import io.airbyte.cdk.output.OutputConsumer import io.airbyte.cdk.read.ConcurrencyResource @@ -59,8 +60,16 @@ class CdcPartitionsCreator>( if (incumbentOpaqueStateValue == null) { syntheticInput } else { - creatorOps.deserialize(incumbentOpaqueStateValue, activeStreams) + // validate if existing state is still valid on DB. + try { + creatorOps.deserialize(incumbentOpaqueStateValue, activeStreams) + } catch (ex: ConfigErrorException) { + log.error(ex) { "Existing state is invalid." } + globalLockResource.markCdcAsComplete() + throw ex + } } + // Build and return PartitionReader instance, if applicable. val partitionReader = CdcPartitionReader(concurrencyResource, outputConsumer, readerOps, upperBound, input) diff --git a/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionsCreatorTest.kt b/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionsCreatorTest.kt index 7ad0b19e8dd40..1835a07038d0b 100644 --- a/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionsCreatorTest.kt +++ b/airbyte-cdk/bulk/toolkits/extract-cdc/src/test/kotlin/io/airbyte/cdk/read/cdc/CdcPartitionsCreatorTest.kt @@ -4,6 +4,7 @@ package io.airbyte.cdk.read.cdc +import io.airbyte.cdk.ConfigErrorException import io.airbyte.cdk.StreamIdentifier import io.airbyte.cdk.command.OpaqueStateValue import io.airbyte.cdk.discover.Field @@ -22,6 +23,7 @@ import io.mockk.impl.annotations.MockK import io.mockk.junit5.MockKExtension import java.util.concurrent.atomic.AtomicReference import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertThrows import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -140,4 +142,27 @@ class CdcPartitionsCreatorTest { val readers: List = runBlocking { creator.run() } Assertions.assertEquals(emptyList(), readers) } + + @Test + fun testCreateWithFailedValidation() { + every { stateQuerier.feeds } returns listOf(global, stream) + val incumbentGlobalStateValue: OpaqueStateValue = Jsons.nullNode() + every { stateQuerier.current(global) } returns incumbentGlobalStateValue + val incumbentStreamStateValue: OpaqueStateValue = Jsons.nullNode() + every { stateQuerier.current(stream) } returns incumbentStreamStateValue + val incumbentOffset = DebeziumOffset(mapOf(Jsons.nullNode() to Jsons.nullNode())) + every { creatorOps.position(incumbentOffset) } returns 123L + val syntheticOffset = DebeziumOffset(mapOf(Jsons.nullNode() to Jsons.nullNode())) + val syntheticInput = + DebeziumInput( + properties = emptyMap(), + state = DebeziumState(offset = syntheticOffset, schemaHistory = null), + isSynthetic = true, + ) + every { creatorOps.synthesize() } returns syntheticInput + every { creatorOps.deserialize(incumbentGlobalStateValue, listOf(stream)) } throws + ConfigErrorException("invalid state value") + + assertThrows(ConfigErrorException::class.java) { runBlocking { creator.run() } } + } } diff --git a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml index e5ddf8e61a4b6..baa1cd155d0c3 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml +++ b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: 561393ed-7e3a-4d0d-8b8b-90ded371754c - dockerImageTag: 0.0.17 + dockerImageTag: 0.0.18 dockerRepository: airbyte/source-mysql-v2 documentationUrl: https://docs.airbyte.com/integrations/sources/mysql githubIssueLabel: source-mysql-v2 diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt index 079c9cadd6ee4..9680a785b0cab 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfiguration.kt @@ -27,7 +27,7 @@ data class MysqlSourceConfiguration( override val jdbcUrlFmt: String, override val jdbcProperties: Map, override val namespaces: Set, - val cursorMethodConfiguration: CursorMethodConfiguration, + val incrementalConfiguration: IncrementalConfiguration, override val maxConcurrency: Int, override val resourceAcquisitionHeartbeat: Duration = Duration.ofMillis(100L), override val checkpointTargetInterval: Duration, @@ -35,7 +35,7 @@ data class MysqlSourceConfiguration( override val debeziumHeartbeatInterval: Duration = Duration.ofSeconds(10), val debeziumKeepAliveInterval: Duration = Duration.ofMinutes(1), ) : JdbcSourceConfiguration, CdcSourceConfiguration { - override val global = cursorMethodConfiguration is CdcCursor + override val global = incrementalConfiguration is CdcIncrementalConfiguration /** Required to inject [MysqlSourceConfiguration] directly. */ @Factory @@ -50,6 +50,22 @@ data class MysqlSourceConfiguration( } } +sealed interface IncrementalConfiguration + +data object UserDefinedCursorIncrementalConfiguration : IncrementalConfiguration + +data class CdcIncrementalConfiguration( + val initialWaitDuration: Duration, + val initialLoadTimeout: Duration, + val serverTimezone: String?, + val invalidCdcCursorPositionBehavior: InvalidCdcCursorPositionBehavior +) : IncrementalConfiguration + +enum class InvalidCdcCursorPositionBehavior { + FAIL_SYNC, + RESET_SYNC, +} + @Singleton class MysqlSourceConfigurationFactory : SourceConfigurationFactory { @@ -119,6 +135,24 @@ class MysqlSourceConfigurationFactory : if ((pojo.concurrency ?: 0) <= 0) { throw ConfigErrorException("Concurrency setting should be positive") } + val incrementalConfiguration: IncrementalConfiguration = + when (val incPojo = pojo.getCursorMethodConfigurationValue()) { + UserDefinedCursor -> UserDefinedCursorIncrementalConfiguration + is CdcCursor -> + CdcIncrementalConfiguration( + initialWaitDuration = + Duration.ofSeconds(incPojo.initialWaitTimeInSeconds!!.toLong()), + initialLoadTimeout = + Duration.ofHours(incPojo.initialLoadTimeoutHours!!.toLong()), + serverTimezone = incPojo.serverTimezone, + invalidCdcCursorPositionBehavior = + if (incPojo.invalidCdcCursorPositionBehavior == "Fail sync") { + InvalidCdcCursorPositionBehavior.FAIL_SYNC + } else { + InvalidCdcCursorPositionBehavior.RESET_SYNC + }, + ) + } return MysqlSourceConfiguration( realHost = realHost, realPort = realPort, @@ -127,7 +161,7 @@ class MysqlSourceConfigurationFactory : jdbcUrlFmt = jdbcUrlFmt, jdbcProperties = jdbcProperties, namespaces = setOf(pojo.database), - cursorMethodConfiguration = pojo.getCursorMethodConfigurationValue(), + incrementalConfiguration = incrementalConfiguration, checkpointTargetInterval = checkpointTargetInterval, maxConcurrency = maxConcurrency, checkPrivileges = pojo.checkPrivileges ?: true, diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceMetadataQuerier.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceMetadataQuerier.kt index 91e6c46dbb448..c1b4cd56374cc 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceMetadataQuerier.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceMetadataQuerier.kt @@ -37,6 +37,7 @@ class MysqlSourceMetadataQuerier( Pair("show variables where Variable_name = 'log_bin'", "ON"), Pair("show variables where Variable_name = 'binlog_format'", "ROW"), Pair("show variables where Variable_name = 'binlog_row_image'", "FULL"), + Pair("show variables where Variable_name = 'gtid_mode'", "ON"), ) cdcVariableCheckQueries.forEach { runVariableCheckSql(it.first, it.second, base.conn) } @@ -139,7 +140,7 @@ class MysqlSourceMetadataQuerier( .groupBy { findTableName( StreamIdentifier.from( - StreamDescriptor().withName(it.tableName).withNamespace("public"), + StreamDescriptor().withName(it.tableName).withNamespace(it.tableSchema), ), ) } diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/cdc/MySqlDebeziumOperations.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/cdc/MySqlDebeziumOperations.kt index 7065956367403..3daac283ab8ae 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/cdc/MySqlDebeziumOperations.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/cdc/MySqlDebeziumOperations.kt @@ -26,10 +26,13 @@ import io.airbyte.cdk.read.cdc.DebeziumSchemaHistory import io.airbyte.cdk.read.cdc.DebeziumState import io.airbyte.cdk.ssh.TunnelSession import io.airbyte.cdk.util.Jsons +import io.airbyte.integrations.source.mysql.CdcIncrementalConfiguration +import io.airbyte.integrations.source.mysql.InvalidCdcCursorPositionBehavior import io.airbyte.integrations.source.mysql.MysqlSourceConfiguration import io.airbyte.protocol.models.v0.AirbyteRecordMessage import io.airbyte.protocol.models.v0.AirbyteRecordMessageMeta import io.debezium.connector.mysql.MySqlConnector +import io.debezium.connector.mysql.gtid.MySqlGtidSet import io.debezium.document.DocumentReader import io.debezium.document.DocumentWriter import io.debezium.relational.history.HistoryRecord @@ -47,12 +50,13 @@ import java.util.zip.GZIPInputStream import java.util.zip.GZIPOutputStream import kotlin.random.Random import kotlin.random.nextInt +import org.apache.kafka.connect.json.JsonConverterConfig import org.apache.kafka.connect.source.SourceRecord @Singleton class MySqlDebeziumOperations( val jdbcConnectionFactory: JdbcConnectionFactory, - configuration: MysqlSourceConfiguration, + val configuration: MysqlSourceConfiguration, random: Random = Random.Default, ) : DebeziumOperations { private val log = KotlinLogging.logger {} @@ -84,6 +88,80 @@ class MySqlDebeziumOperations( return airbyteRecord.withData(data) } + /** + * Checks if GTIDs from previously saved state (debeziumInput) are still valid on DB. And also + * check if binlog exists or not. + * + * Validate is not supposed to perform on synthetic state. + */ + private fun validate(debeziumState: DebeziumState): CdcStateValidateResult { + val (_: MySqlPosition, gtidSet: String?) = queryPositionAndGtids() + if (gtidSet.isNullOrEmpty()) { + return abortCdcSync() + } + val savedStateOffset: SavedOffset = parseSavedOffset(debeziumState) + + val savedGtidSet = MySqlGtidSet(savedStateOffset.gtidSet) + val availableGtidSet = MySqlGtidSet(gtidSet) + if (!savedGtidSet.isContainedWithin(availableGtidSet)) { + log.info { + "Connector last known GTIDs are $savedGtidSet, but MySQL server only has $availableGtidSet" + } + return abortCdcSync() + } + + // newGtidSet is gtids from server that hasn't been seen by this connector yet. If the set + // exists, check that they are not purged, or we may lose those data. + val newGtidSet = availableGtidSet.subtract(savedGtidSet) + if (!newGtidSet.isEmpty) { + val purgedGtidSet = queryPurgedIds() + if (newGtidSet.subtract(purgedGtidSet).equals(newGtidSet)) { + log.info { + "Connector has not seen GTIDs $newGtidSet, but MySQL server has purged $purgedGtidSet" + } + return abortCdcSync() + } + } + val existingLogFiles: List = getBinaryLogFileNames() + val found = existingLogFiles.contains(savedStateOffset.position.fileName) + if (!found) { + log.info { + "Connector last known binlog file ${savedStateOffset.position.fileName} is not found in the server" + } + return abortCdcSync() + } + return CdcStateValidateResult.VALID + } + + private fun abortCdcSync(): CdcStateValidateResult { + val cdcIncrementalConfiguration: CdcIncrementalConfiguration = + configuration.incrementalConfiguration as CdcIncrementalConfiguration + return when (cdcIncrementalConfiguration.invalidCdcCursorPositionBehavior) { + InvalidCdcCursorPositionBehavior.FAIL_SYNC -> { + log.info { "Current position is invalid, aborting sync." } + CdcStateValidateResult.INVALID_ABORT + } + InvalidCdcCursorPositionBehavior.RESET_SYNC -> { + log.info { "Current position is invalid, resetting sync." } + CdcStateValidateResult.INVALID_RESET + } + } + } + + private fun parseSavedOffset(debeziumState: DebeziumState): SavedOffset { + val position: MySqlPosition = position(debeziumState.offset) + val gtidSet: String? = debeziumState.offset.wrapped.values.first()["gtids"]?.asText() + return SavedOffset(position, gtidSet) + } + + data class SavedOffset(val position: MySqlPosition, val gtidSet: String?) + + enum class CdcStateValidateResult { + VALID, + INVALID_ABORT, + INVALID_RESET + } + private val airbyteRecord = AirbyteRecordMessage().withMeta(AirbyteRecordMessageMeta()) override fun position(offset: DebeziumOffset): MySqlPosition { @@ -144,11 +222,11 @@ class MySqlDebeziumOperations( MySqlPosition( fileName = rs.getString(file.id)?.takeUnless { rs.wasNull() } ?: throw ConfigErrorException( - "No value for ${file.id} in: $sql" + "No value for ${file.id} in: $sql", ), position = rs.getLong(pos.id).takeUnless { rs.wasNull() || it <= 0 } ?: throw ConfigErrorException( - "No value for ${pos.id} in: $sql" + "No value for ${pos.id} in: $sql", ), ) if (rs.metaData.columnCount <= 4) { @@ -167,6 +245,32 @@ class MySqlDebeziumOperations( } } + private fun queryPurgedIds(): MySqlGtidSet { + val purgedGtidField = Field("@@global.gtid_purged", StringFieldType) + jdbcConnectionFactory.get().use { connection: Connection -> + connection.createStatement().use { stmt: Statement -> + val sql = "SELECT @@global.gtid_purged" + stmt.executeQuery(sql).use { rs: ResultSet -> + if (!rs.next()) throw ConfigErrorException("No results for query: $sql") + return MySqlGtidSet(rs.getString(purgedGtidField.id)) + } + } + } + } + + private fun getBinaryLogFileNames(): List { + val logNameField = Field("Log_name", StringFieldType) + return jdbcConnectionFactory.get().use { connection: Connection -> + connection.createStatement().use { stmt: Statement -> + val sql = "SHOW BINARY LOGS" + stmt.executeQuery(sql).use { rs: ResultSet -> + generateSequence { if (rs.next()) rs.getString(logNameField.id) else null } + .toList() + } + } + } + } + override fun deserialize( opaqueStateValue: OpaqueStateValue, streams: List @@ -177,6 +281,14 @@ class MySqlDebeziumOperations( } catch (e: Exception) { throw ConfigErrorException("Error deserializing $opaqueStateValue", e) } + val cdcValidationResult = validate(debeziumState) + if (cdcValidationResult != CdcStateValidateResult.VALID) { + if (cdcValidationResult == CdcStateValidateResult.INVALID_ABORT) { + throw ConfigErrorException("Current position is invalid.") + } + return synthesize() + } + val properties: Map = DebeziumPropertiesBuilder().with(commonProperties).withStreams(streams).buildMap() return DebeziumInput(properties, debeziumState, isSynthetic = false) @@ -271,7 +383,7 @@ class MySqlDebeziumOperations( .with("include.schema.changes", "false") .with( "connect.keep.alive.interval.ms", - configuration.debeziumKeepAliveInterval.toMillis().toString() + configuration.debeziumKeepAliveInterval.toMillis().toString(), ) .withDatabase(configuration.jdbcProperties) .withDatabase("hostname", tunnelSession.address.hostName) @@ -309,5 +421,15 @@ class MySqlDebeziumOperations( const val MYSQL_CDC_OFFSET = "mysql_cdc_offset" const val MYSQL_DB_HISTORY = "mysql_db_history" const val IS_COMPRESSED = "is_compressed" + + /** + * The name of the Debezium property that contains the unique name for the Debezium + * connector. + */ + const val CONNECTOR_NAME_PROPERTY: String = "name" + + /** Configuration for offset state key/value converters. */ + val INTERNAL_CONVERTER_CONFIG: Map = + java.util.Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, false.toString()) } } diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt index 9319149a6280e..44b12bc7aac18 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt @@ -14,11 +14,9 @@ import io.airbyte.cdk.jdbc.IntFieldType import io.airbyte.cdk.jdbc.JdbcConnectionFactory import io.airbyte.cdk.jdbc.StringFieldType import io.airbyte.cdk.output.BufferingOutputConsumer -import io.airbyte.cdk.util.Jsons import io.airbyte.integrations.source.mysql.MysqlContainerFactory.execAsRoot import io.airbyte.protocol.models.v0.AirbyteConnectionStatus import io.airbyte.protocol.models.v0.AirbyteMessage -import io.airbyte.protocol.models.v0.AirbyteStateMessage import io.airbyte.protocol.models.v0.AirbyteStream import io.airbyte.protocol.models.v0.CatalogHelpers import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog @@ -81,8 +79,7 @@ class MysqlCdcIntegrationTest { @Test fun test() { - val run1: BufferingOutputConsumer = - CliRunner.source("read", config(), configuredCatalog).run() + CliRunner.source("read", config(), configuredCatalog).run() // TODO: add assertions on run1 messages. connectionFactory.get().use { connection: Connection -> @@ -91,21 +88,6 @@ class MysqlCdcIntegrationTest { stmt.execute("INSERT INTO test.tbl (k, v) VALUES (3, 'baz')") } } - - val run2InputState: List = listOf(run1.states().last()) - val run2: BufferingOutputConsumer = - CliRunner.source("read", config(), configuredCatalog, run2InputState).run() - // TODO: add assertions on run2 messages. - - println() - println() - for (msg in run1.messages()) { - println(Jsons.valueToTree(msg)) - } - println() - for (msg in run2.messages()) { - println(Jsons.valueToTree(msg)) - } } companion object { @@ -144,7 +126,8 @@ class MysqlCdcIntegrationTest { MysqlContainerFactory.exclusive( imageName = "mysql:8.0", MysqlContainerFactory.WithNetwork, - ) + // MysqlContainerFactory.WithGtidModeOn + ) provisionTestContainer(dbContainer, connectionFactory) } @@ -152,9 +135,15 @@ class MysqlCdcIntegrationTest { targetContainer: MySQLContainer<*>, targetConnectionFactory: JdbcConnectionFactory ) { + val gtidOn = + "SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 'ON';" + + "SET @@GLOBAL.GTID_MODE = 'OFF_PERMISSIVE';" + + "SET @@GLOBAL.GTID_MODE = 'ON_PERMISSIVE';" + + "SET @@GLOBAL.GTID_MODE = 'ON';" val grant = "GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT " + "ON *.* TO '${targetContainer.username}'@'%';" + targetContainer.execAsRoot(gtidOn) targetContainer.execAsRoot(grant) targetContainer.execAsRoot("FLUSH PRIVILEGES;") diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt index 121526b9e7fd8..f58dba7930664 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceConfigurationTest.kt @@ -9,6 +9,7 @@ import io.micronaut.context.annotation.Property import io.micronaut.context.env.Environment import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject +import java.time.Duration import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test @@ -59,13 +60,16 @@ class MysqlSourceConfigurationTest { Assertions.assertEquals(config.jdbcProperties["user"], "FOO") Assertions.assertEquals(config.jdbcProperties["password"], "BAR") Assertions.assertEquals(config.jdbcProperties["sslMode"], "required") - Assertions.assertTrue(config.cursorMethodConfiguration is CdcCursor) + Assertions.assertTrue(config.incrementalConfiguration is CdcIncrementalConfiguration) - val cdcCursor = config.cursorMethodConfiguration as CdcCursor + val cdcCursor = config.incrementalConfiguration as CdcIncrementalConfiguration - Assertions.assertEquals(cdcCursor.initialWaitTimeInSeconds, 300) - Assertions.assertEquals(cdcCursor.initialLoadTimeoutHours, 8) - Assertions.assertEquals(cdcCursor.invalidCdcCursorPositionBehavior, "Re-sync data") + Assertions.assertEquals(cdcCursor.initialWaitDuration, Duration.ofSeconds(301)) + Assertions.assertEquals(cdcCursor.initialLoadTimeout, Duration.ofHours(9)) + Assertions.assertEquals( + cdcCursor.invalidCdcCursorPositionBehavior, + InvalidCdcCursorPositionBehavior.RESET_SYNC + ) Assertions.assertTrue(config.sshTunnel is SshNoTunnelMethod) } @@ -114,8 +118,8 @@ const val CONFIG_V1: String = }, "replication_method": { "method": "CDC", - "initial_waiting_seconds": 300, - "initial_load_timeout_hours": 8, + "initial_waiting_seconds": 301, + "initial_load_timeout_hours": 9, "invalid_cdc_cursor_position_behavior": "Re-sync data" } } From 5f9183270cb9ea3cfb274396bf2cb366a65e1cb9 Mon Sep 17 00:00:00 2001 From: KimPlv <67902258+KimPlv@users.noreply.github.com> Date: Tue, 8 Oct 2024 18:37:55 +0200 Subject: [PATCH 184/379] =?UTF-8?q?=F0=9F=90=9B=20Source=20Brevo=20fix=20c?= =?UTF-8?q?ompanies=20(#46587)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-brevo/manifest.yaml | 22 ++++--------------- .../connectors/source-brevo/metadata.yaml | 2 +- docs/integrations/sources/brevo.md | 3 ++- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/airbyte-integrations/connectors/source-brevo/manifest.yaml b/airbyte-integrations/connectors/source-brevo/manifest.yaml index d72a30d0d124e..8fdad3cb4d150 100644 --- a/airbyte-integrations/connectors/source-brevo/manifest.yaml +++ b/airbyte-integrations/connectors/source-brevo/manifest.yaml @@ -501,29 +501,15 @@ definitions: page_token_option: type: RequestOption inject_into: request_parameter - field_name: offset + field_name: page page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: - type: OffsetIncrement - page_size: 50 - inject_on_first_request: true - incremental_sync: - type: DatetimeBasedCursor - cursor_field: created_at - cursor_datetime_formats: - - "%Y-%m-%dT%H:%M:%S.%fZ" - datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" - start_datetime: - type: MinMaxDatetime - datetime: '{{ config["start_date"] }}' - datetime_format: "%Y-%m-%dT%H:%M:%SZ" - end_datetime: - type: MinMaxDatetime - datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" - datetime_format: "%Y-%m-%dT%H:%M:%SZ" + type: PageIncrement + start_from_page: 1 + page_size: 100 schema_loader: type: InlineSchemaLoader schema: diff --git a/airbyte-integrations/connectors/source-brevo/metadata.yaml b/airbyte-integrations/connectors/source-brevo/metadata.yaml index efc7486709416..a9b478acc4c8d 100644 --- a/airbyte-integrations/connectors/source-brevo/metadata.yaml +++ b/airbyte-integrations/connectors/source-brevo/metadata.yaml @@ -17,7 +17,7 @@ data: connectorSubtype: api connectorType: source definitionId: e2276f19-1c19-4d4e-ae6c-7df3c9c4ad49 - dockerImageTag: 0.0.1 + dockerImageTag: 0.1.0 dockerRepository: airbyte/source-brevo githubIssueLabel: source-brevo icon: icon.svg diff --git a/docs/integrations/sources/brevo.md b/docs/integrations/sources/brevo.md index 176191a3165b1..52c4804c80a44 100644 --- a/docs/integrations/sources/brevo.md +++ b/docs/integrations/sources/brevo.md @@ -26,7 +26,7 @@ Visit `https://app.brevo.com/settings/keys/api` for getting your api key. | contacts_lists_contacts | | DefaultPaginator | ✅ | ✅ | | contacts_lists | id | DefaultPaginator | ✅ | ❌ | | senders | id | DefaultPaginator | ✅ | ❌ | -| companies | id | DefaultPaginator | ✅ | ✅ | +| companies | id | DefaultPaginator | ✅ | ❌ | | companies_attributes | | DefaultPaginator | ✅ | ❌ | | crm_pipeline_stages | id | DefaultPaginator | ✅ | ❌ | | crm_pipeline_details_all | pipeline | DefaultPaginator | ✅ | ❌ | @@ -49,6 +49,7 @@ Visit `https://app.brevo.com/settings/keys/api` for getting your api key. | Version | Date | Pull Request | Subject | | ------------------ | ------------ | --- | ---------------- | +| 0.1.0 | 2024-10-08 | [46587](https://github.com/airbytehq/airbyte/pull/46587) | Fix Companies stream paginator+ remove incremental | | 0.0.1 | 2024-09-11 | [45382](https://github.com/airbytehq/airbyte/pull/45382) | Initial release by [@btkcodedev](https://github.com/btkcodedev) via Connector Builder | \ No newline at end of file From 7e0ede7922f4331059c9d7e988cd3cbe19382440 Mon Sep 17 00:00:00 2001 From: Aviraj Gour <100823015+avirajsingh7@users.noreply.github.com> Date: Tue, 8 Oct 2024 22:24:30 +0530 Subject: [PATCH 185/379] source-xsolla contribution from avirajsingh7 (#46295) Signed-off-by: Aviraj Gour <100823015+avirajsingh7@users.noreply.github.com> Signed-off-by: Marcos Marx Co-authored-by: Marcos Marx --- .../connectors/source-xsolla/README.md | 33 + .../source-xsolla/acceptance-test-config.yml | 17 + .../connectors/source-xsolla/icon.svg | 15 + .../connectors/source-xsolla/manifest.yaml | 1546 +++++++++++++++++ .../connectors/source-xsolla/metadata.yaml | 35 + docs/integrations/sources/xsolla.md | 31 + 6 files changed, 1677 insertions(+) create mode 100644 airbyte-integrations/connectors/source-xsolla/README.md create mode 100644 airbyte-integrations/connectors/source-xsolla/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-xsolla/icon.svg create mode 100644 airbyte-integrations/connectors/source-xsolla/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-xsolla/metadata.yaml create mode 100644 docs/integrations/sources/xsolla.md diff --git a/airbyte-integrations/connectors/source-xsolla/README.md b/airbyte-integrations/connectors/source-xsolla/README.md new file mode 100644 index 0000000000000..8b211c6acb977 --- /dev/null +++ b/airbyte-integrations/connectors/source-xsolla/README.md @@ -0,0 +1,33 @@ +# Xsolla +This directory contains the manifest-only connector for `source-xsolla`. + +The Xsolla Airbyte Connector enables seamless integration between Xsolla and various data destinations. This connector allows you to extract data from Xsolla’s APIs, such as Game Catalog, Virtual Items, Virtual Currency and more. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-xsolla:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-xsolla build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-xsolla test +``` + diff --git a/airbyte-integrations/connectors/source-xsolla/acceptance-test-config.yml b/airbyte-integrations/connectors/source-xsolla/acceptance-test-config.yml new file mode 100644 index 0000000000000..6a8b7e58610b2 --- /dev/null +++ b/airbyte-integrations/connectors/source-xsolla/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-xsolla:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-xsolla/icon.svg b/airbyte-integrations/connectors/source-xsolla/icon.svg new file mode 100644 index 0000000000000..037a4237d237d --- /dev/null +++ b/airbyte-integrations/connectors/source-xsolla/icon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/airbyte-integrations/connectors/source-xsolla/manifest.yaml b/airbyte-integrations/connectors/source-xsolla/manifest.yaml new file mode 100644 index 0000000000000..ca5f241768e13 --- /dev/null +++ b/airbyte-integrations/connectors/source-xsolla/manifest.yaml @@ -0,0 +1,1546 @@ +version: 5.10.2 + +type: DeclarativeSource + +description: >- + The Xsolla Airbyte Connector enables seamless integration between Xsolla and + various data destinations. This connector allows you to extract data from + Xsolla’s APIs, such as Game Catalog, Virtual Items, Virtual Currency and more. + +check: + type: CheckStream + stream_names: + - games_catalog + +definitions: + streams: + games_catalog: + type: DeclarativeStream + name: games_catalog + primary_key: + - item_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ config[\"project_id\"] }}/items/game" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + page_size: 50 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/games_catalog" + drm: + type: DeclarativeStream + name: drm + primary_key: + - drm_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ config[\"project_id\"] }}/items/game/drm" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - drm + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/drm" + virtual_items: + type: DeclarativeStream + name: virtual_items + primary_key: + - item_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ config[\"project_id\"] }}/items/virtual_items" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + page_size: 50 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/virtual_items" + virtual_currencies: + type: DeclarativeStream + name: virtual_currencies + primary_key: + - item_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ config[\"project_id\"] }}/items/virtual_currency" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + page_size: 50 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/virtual_currencies" + virtual_currency_packages: + type: DeclarativeStream + name: virtual_currency_packages + primary_key: + - item_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ config[\"project_id\"] }}/items/virtual_currency/package" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + page_size: 50 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/virtual_currency_packages" + bundles: + type: DeclarativeStream + name: bundles + primary_key: + - item_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ config[\"project_id\"] }}/items/bundle" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + page_size: 50 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/bundles" + reward_chains: + type: DeclarativeStream + name: reward_chains + primary_key: + - reward_chain_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ config[\"project_id\"] }}/user/reward_chain" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: offset + pagination_strategy: + type: OffsetIncrement + page_size: 50 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/reward_chains" + base_requester: + type: HttpRequester + url_base: https://store.xsolla.com/api/v2/project + authenticator: + type: BearerAuthenticator + api_token: "{{ config[\"api_key\"] }}" + +streams: + - $ref: "#/definitions/streams/games_catalog" + - $ref: "#/definitions/streams/drm" + - $ref: "#/definitions/streams/virtual_items" + - $ref: "#/definitions/streams/virtual_currencies" + - $ref: "#/definitions/streams/virtual_currency_packages" + - $ref: "#/definitions/streams/bundles" + - $ref: "#/definitions/streams/reward_chains" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + - project_id + properties: + api_key: + type: string + description: Go to Xsolla Dashboard and from company setting get the api_key + order: 0 + title: API Key + airbyte_secret: true + project_id: + type: number + description: >- + You can find this parameter in your Publisher Account next to the name + of the project . Example: 44056 + order: 1 + title: Project Id + additionalProperties: true + +metadata: + autoImportSchema: + games_catalog: true + drm: true + virtual_items: true + virtual_currencies: true + virtual_currency_packages: true + bundles: true + reward_chains: true + testedStreams: + games_catalog: + hasRecords: true + streamHash: faec6bf685575de259040e2e22c96d946025e499 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + drm: + hasRecords: true + streamHash: 67a6c66af617f0f780be11f5ffa1ef58615a13bc + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + virtual_items: + hasRecords: true + streamHash: ea2c3ed5569de5cbf662a75dd9b2bfe5c80db78c + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + virtual_currencies: + hasRecords: true + streamHash: 8affb3d5a7ffc9e4419a1de7620b03875d72b29e + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + virtual_currency_packages: + hasRecords: true + streamHash: 805a8d7c4e01fe7399406352af6e336068412cda + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + bundles: + hasRecords: true + streamHash: 85db979f7cbdf3ee2a5cf06170c87dca8a01502b + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + reward_chains: + hasRecords: true + streamHash: 5e585cea19508d7ba03eddc4ffbdb339a0612f85 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + assist: + docsUrl: https://developers.xsolla.com/api/igs-bb/overview/#section/Overview + +schemas: + games_catalog: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + attributes: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + external_id: + type: + - string + - "null" + name: + type: + - string + - "null" + values: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + external_id: + type: + - string + - "null" + value: + type: + - string + - "null" + groups: + type: + - array + - "null" + image_url: + type: + - string + - "null" + item_id: + type: number + name: + type: + - string + - "null" + periods: + type: + - array + - "null" + promotions: + type: + - array + - "null" + sku: + type: + - string + - "null" + unit_items: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + can_be_bought: + type: + - boolean + - "null" + drm_name: + type: + - string + - "null" + drm_sku: + type: + - string + - "null" + has_keys: + type: + - boolean + - "null" + is_free: + type: + - boolean + - "null" + is_pre_order: + type: + - boolean + - "null" + item_id: + type: + - number + - "null" + periods: + type: + - array + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + currency: + type: + - string + - "null" + promotions: + type: + - array + - "null" + release_date: + type: + - string + - "null" + sku: + type: + - string + - "null" + virtual_prices: + type: + - array + - "null" + vp_rewards: + type: + - array + - "null" + unit_type: + type: + - string + - "null" + required: + - item_id + drm: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + drm_id: + type: number + image: + type: + - string + - "null" + name: + type: + - string + - "null" + redeem_instruction_link: + type: + - string + - "null" + sku: + type: + - string + - "null" + required: + - drm_id + virtual_items: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + attributes: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + external_id: + type: + - string + - "null" + name: + type: + - string + - "null" + values: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + external_id: + type: + - string + - "null" + value: + type: + - string + - "null" + can_be_bought: + type: + - boolean + - "null" + groups: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + external_id: + type: + - string + - "null" + name: + type: + - string + - "null" + image_url: + type: + - string + - "null" + inventory_options: + type: + - object + - "null" + properties: + consumable: + type: + - object + - "null" + properties: + usages_count: + type: + - number + - "null" + expiration_period: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + value: + type: + - number + - "null" + is_free: + type: + - boolean + - "null" + item_id: + type: number + limits: + type: + - object + - "null" + properties: + per_user: + type: + - object + - "null" + properties: + available: + type: + - number + - "null" + recurrent_schedule: + type: + - object + - "null" + properties: + interval_type: + type: + - string + - "null" + reset_next_date: + type: + - number + - "null" + total: + type: + - number + - "null" + name: + type: + - string + - "null" + periods: + type: + - array + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + currency: + type: + - string + - "null" + promotions: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + bonus: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + image_url: + type: + - string + - "null" + name: + type: + - string + - "null" + quantity: + type: + - number + - "null" + sku: + type: + - string + - "null" + date_end: + type: + - string + - "null" + date_start: + type: + - string + - "null" + name: + type: + - string + - "null" + sku: + type: + - string + - "null" + virtual_item_type: + type: + - string + - "null" + virtual_prices: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + amount: + type: + - number + - "null" + amount_without_discount: + type: + - number + - "null" + calculated_price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + image_url: + type: + - string + - "null" + is_default: + type: + - boolean + - "null" + item_id: + type: + - number + - "null" + name: + type: + - string + - "null" + sku: + type: + - string + - "null" + vp_rewards: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + image_url: + type: + - string + - "null" + item_id: + type: + - number + - "null" + name: + type: + - string + - "null" + sku: + type: + - string + - "null" + required: + - item_id + virtual_currencies: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + attributes: + type: + - array + - "null" + can_be_bought: + type: + - boolean + - "null" + groups: + type: + - array + - "null" + image_url: + type: + - string + - "null" + inventory_options: + type: + - object + - "null" + properties: + consumable: + type: + - object + - "null" + properties: + usages_count: + type: + - number + - "null" + is_free: + type: + - boolean + - "null" + item_id: + type: number + name: + type: + - string + - "null" + periods: + type: + - array + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + currency: + type: + - string + - "null" + promotions: + type: + - array + - "null" + sku: + type: + - string + - "null" + virtual_prices: + type: + - array + - "null" + vp_rewards: + type: + - array + - "null" + required: + - item_id + virtual_currency_packages: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + attributes: + type: + - array + - "null" + bundle_type: + type: + - string + - "null" + can_be_bought: + type: + - boolean + - "null" + content: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + image_url: + type: + - string + - "null" + inventory_options: + type: + - object + - "null" + properties: + consumable: + type: + - object + - "null" + properties: + usages_count: + type: + - number + - "null" + item_id: + type: + - number + - "null" + name: + type: + - string + - "null" + quantity: + type: + - number + - "null" + sku: + type: + - string + - "null" + groups: + type: + - array + - "null" + image_url: + type: + - string + - "null" + is_free: + type: + - boolean + - "null" + item_id: + type: number + name: + type: + - string + - "null" + periods: + type: + - array + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + currency: + type: + - string + - "null" + promotions: + type: + - array + - "null" + sku: + type: + - string + - "null" + virtual_prices: + type: + - array + - "null" + vp_rewards: + type: + - array + - "null" + required: + - item_id + bundles: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + attributes: + type: + - array + - "null" + bundle_type: + type: + - string + - "null" + can_be_bought: + type: + - boolean + - "null" + content: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + attributes: + type: + - array + - "null" + groups: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + external_id: + type: + - string + - "null" + name: + type: + - string + - "null" + image_url: + type: + - string + - "null" + inventory_options: + type: + - object + - "null" + properties: + consumable: + type: + - object + - "null" + properties: + usages_count: + type: + - number + - "null" + is_free: + type: + - boolean + - "null" + item_id: + type: + - number + - "null" + limits: + type: + - object + - "null" + properties: + per_user: + type: + - object + - "null" + properties: + available: + type: + - number + - "null" + recurrent_schedule: + type: + - object + - "null" + properties: + interval_type: + type: + - string + - "null" + reset_next_date: + type: + - number + - "null" + total: + type: + - number + - "null" + name: + type: + - string + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + currency: + type: + - string + - "null" + quantity: + type: + - number + - "null" + sku: + type: + - string + - "null" + virtual_item_type: + type: + - string + - "null" + virtual_prices: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + amount: + type: + - number + - "null" + amount_without_discount: + type: + - number + - "null" + calculated_price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + image_url: + type: + - string + - "null" + is_default: + type: + - boolean + - "null" + item_id: + type: + - number + - "null" + name: + type: + - string + - "null" + sku: + type: + - string + - "null" + groups: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + external_id: + type: + - string + - "null" + name: + type: + - string + - "null" + image_url: + type: + - string + - "null" + is_free: + type: + - boolean + - "null" + item_id: + type: number + name: + type: + - string + - "null" + periods: + type: + - array + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + currency: + type: + - string + - "null" + promotions: + type: + - array + - "null" + sku: + type: + - string + - "null" + total_content_price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + currency: + type: + - string + - "null" + virtual_prices: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + amount: + type: + - number + - "null" + amount_without_discount: + type: + - number + - "null" + calculated_price: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + amount_without_discount: + type: + - string + - "null" + image_url: + type: + - string + - "null" + is_default: + type: + - boolean + - "null" + item_id: + type: + - number + - "null" + name: + type: + - string + - "null" + sku: + type: + - string + - "null" + vp_rewards: + type: + - array + - "null" + required: + - item_id + reward_chains: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + date_end: + type: + - string + - "null" + date_start: + type: + - string + - "null" + image_url: + type: + - string + - "null" + long_description: + type: + - string + - "null" + name: + type: + - string + - "null" + order: + type: + - number + - "null" + reward_chain_id: + type: number + steps: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + image_url: + type: + - string + - "null" + is_claimed: + type: + - boolean + - "null" + name: + type: + - string + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + reward: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + image_url: + type: + - string + - "null" + name: + type: + - string + - "null" + quantity: + type: + - number + - "null" + sku: + type: + - string + - "null" + step_id: + type: + - number + - "null" + value_point: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + amount: + type: + - number + - "null" + image_url: + type: + - string + - "null" + is_clan: + type: + - boolean + - "null" + item_id: + type: + - number + - "null" + long_description: + type: + - string + - "null" + name: + type: + - string + - "null" + sku: + type: + - string + - "null" + required: + - reward_chain_id diff --git a/airbyte-integrations/connectors/source-xsolla/metadata.yaml b/airbyte-integrations/connectors/source-xsolla/metadata.yaml new file mode 100644 index 0000000000000..d9a455cfbd493 --- /dev/null +++ b/airbyte-integrations/connectors/source-xsolla/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "store.xsolla.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-xsolla + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.11.1@sha256:f48a7ddc1f3acecbd8eb6a10a3146e8d0396e9a4dede77beafb76924f416df65 + connectorType: source + definitionId: 6ff73a16-05a8-4f7e-8771-5433764678f1 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-xsolla + githubIssueLabel: source-xsolla + icon: icon.svg + connectorSubtype: api + license: MIT + name: Xsolla + releaseDate: 2024-10-01 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/xsolla + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/xsolla.md b/docs/integrations/sources/xsolla.md new file mode 100644 index 0000000000000..b45a51b6f102d --- /dev/null +++ b/docs/integrations/sources/xsolla.md @@ -0,0 +1,31 @@ +# Xsolla +The Xsolla Airbyte Connector enables seamless integration between Xsolla and various data destinations. This connector allows you to extract data from Xsolla’s APIs, such as Game Catalog, Virtual Items, Virtual Currency and more. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. Go to Xsolla Dashboard and from company setting get the api_key | | +| `project_id` | `number` | Project Id. You can find this parameter in your Publisher Account next to the name of the project . Example: 44056 | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| Games Catalog | item_id | DefaultPaginator | ✅ | ❌ | +| DRM | drm_id | No pagination | ✅ | ❌ | +| Virtual Items | item_id | DefaultPaginator | ✅ | ❌ | +| Virtual Currency | item_id | DefaultPaginator | ✅ | ❌ | +| Virtual Currency Package | item_id | DefaultPaginator | ✅ | ❌ | +| Bundles | item_id | DefaultPaginator | ✅ | ❌ | +| Reward Chains | reward_chain_id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-01 | | Initial release by [@avirajsingh7](https://github.com/avirajsingh7) via Connector Builder | + +
From 2fc441d7b3177e39a6787eb37a04aad699413cbd Mon Sep 17 00:00:00 2001 From: Aazam Thakur <59562284+aazam-gh@users.noreply.github.com> Date: Tue, 8 Oct 2024 22:29:35 +0530 Subject: [PATCH 186/379] source-incident-io contribution from aazam-gh (#46333) Co-authored-by: Marcos Marx --- .../connectors/source-incident-io/README.md | 39 + .../acceptance-test-config.yml | 17 + .../connectors/source-incident-io/icon.svg | 6 + .../source-incident-io/manifest.yaml | 1725 +++++++++++++++++ .../source-incident-io/metadata.yaml | 35 + docs/integrations/sources/incident-io.md | 59 + 6 files changed, 1881 insertions(+) create mode 100644 airbyte-integrations/connectors/source-incident-io/README.md create mode 100644 airbyte-integrations/connectors/source-incident-io/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-incident-io/icon.svg create mode 100644 airbyte-integrations/connectors/source-incident-io/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-incident-io/metadata.yaml create mode 100644 docs/integrations/sources/incident-io.md diff --git a/airbyte-integrations/connectors/source-incident-io/README.md b/airbyte-integrations/connectors/source-incident-io/README.md new file mode 100644 index 0000000000000..34edde6e13c3d --- /dev/null +++ b/airbyte-integrations/connectors/source-incident-io/README.md @@ -0,0 +1,39 @@ +# Incident.io +This directory contains the manifest-only connector for `source-incident`. + +Source connector for Incident.io which is an on call, incident response and status pages tool. +The Incident.io source connector which ingests data from the incident API. +Incident is an on call, status pages and incident response tool. +The source supports a number of API changes. For more information, checkout the website https://incident.io/ + +An API key is required for authentication and using this connector. In order to obtain an API key, you must have a PRO or above account. +Once logged-in, you will find your API key your dashboard settings. You can find more about their API here https://api-docs.incident.io/ + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-incident:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-incident build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-incident test +``` + diff --git a/airbyte-integrations/connectors/source-incident-io/acceptance-test-config.yml b/airbyte-integrations/connectors/source-incident-io/acceptance-test-config.yml new file mode 100644 index 0000000000000..822370dc3d55f --- /dev/null +++ b/airbyte-integrations/connectors/source-incident-io/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-incident-io:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-incident-io/icon.svg b/airbyte-integrations/connectors/source-incident-io/icon.svg new file mode 100644 index 0000000000000..45966971e04ab --- /dev/null +++ b/airbyte-integrations/connectors/source-incident-io/icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/airbyte-integrations/connectors/source-incident-io/manifest.yaml b/airbyte-integrations/connectors/source-incident-io/manifest.yaml new file mode 100644 index 0000000000000..158bc60fb71e2 --- /dev/null +++ b/airbyte-integrations/connectors/source-incident-io/manifest.yaml @@ -0,0 +1,1725 @@ +version: 5.8.1 + +type: DeclarativeSource + +description: >- + The Incident.io source connector which ingests data from the incident API. + Incident.io is an on call, status pages and incident response tool. + The source supports a number of API changes. + For more information, checkout the website https://incident.io/ + + An API key is required for authentication and using this connector. + In order to obtain an API key, you must have a PRO or above account. + Once logged-in, you will find your API key your dashboard settings. + You can find more about their API here https://api-docs.incident.io/ + +check: + type: CheckStream + stream_names: + - actions + +definitions: + streams: + actions: + type: DeclarativeStream + name: actions + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/actions + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - actions + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/actions" + catalog_types: + type: DeclarativeStream + name: catalog_types + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/catalog_types + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - catalog_types + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/catalog_types" + custom_fields: + type: DeclarativeStream + name: custom_fields + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/custom_fields + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - custom_fields + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/custom_fields" + follow-ups: + type: DeclarativeStream + name: follow-ups + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/follow_ups + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - follow_ups + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/follow-ups" + incident_roles: + type: DeclarativeStream + name: incident_roles + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/incident_roles + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - incident_roles + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_roles" + incident_timestamps: + type: DeclarativeStream + name: incident_timestamps + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/incident_timestamps + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - incident_timestamps + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_timestamps" + incident_updates: + type: DeclarativeStream + name: incident_updates + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/incident_updates + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - incident_updates + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: after + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: page_size + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get('pagination_meta', {}).get('after') }}" + stop_condition: "{{ response.get('pagination_meta', {}).get('after') is none }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_updates" + incident_statuses: + type: DeclarativeStream + name: incident_statuses + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/incident_statuses + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - incident_statuses + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_statuses" + workflows: + type: DeclarativeStream + name: workflows + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/workflows + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - workflows + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/workflows" + users: + type: DeclarativeStream + name: users + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/users + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - users + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: after + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: page_size + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get('pagination_meta', {}).get('after') }}" + stop_condition: "{{ response.get('pagination_meta', {}).get('after') is none }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/users" + severities: + type: DeclarativeStream + name: severities + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/severities + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - severities + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/severities" + schedules: + type: DeclarativeStream + name: schedules + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/schedules + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - schedules + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: after + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: page_size + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get('pagination_meta', {}).get('after') }}" + stop_condition: "{{ response.get('pagination_meta', {}).get('after') is none }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/schedules" + incidents: + type: DeclarativeStream + name: incidents + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v2/incidents + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - incidents + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: after + page_size_option: + type: RequestOption + inject_into: request_parameter + field_name: page_size + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get('pagination_meta', {}).get('after') }}" + stop_condition: "{{ response.get('pagination_meta', {}).get('after') is none }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incidents" + base_requester: + type: HttpRequester + url_base: https://api.incident.io + authenticator: + type: BearerAuthenticator + api_token: "{{ config[\"api_key\"] }}" + +streams: + - $ref: "#/definitions/streams/actions" + - $ref: "#/definitions/streams/catalog_types" + - $ref: "#/definitions/streams/custom_fields" + - $ref: "#/definitions/streams/follow-ups" + - $ref: "#/definitions/streams/incident_roles" + - $ref: "#/definitions/streams/incident_timestamps" + - $ref: "#/definitions/streams/incident_updates" + - $ref: "#/definitions/streams/incident_statuses" + - $ref: "#/definitions/streams/workflows" + - $ref: "#/definitions/streams/users" + - $ref: "#/definitions/streams/severities" + - $ref: "#/definitions/streams/schedules" + - $ref: "#/definitions/streams/incidents" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + description: API key to use. Find it at https://app.incident.io/settings/api-keys + name: api_key + title: API Key + airbyte_secret: true + order: 0 + additionalProperties: true + +metadata: + autoImportSchema: + actions: true + catalog_types: true + custom_fields: true + follow-ups: true + incident_roles: true + incident_timestamps: true + incident_updates: true + incident_statuses: false + workflows: false + users: true + severities: false + schedules: false + incidents: true + testedStreams: + actions: + streamHash: 66bd85de048e14ed758adfad4f83d9ab9ef62b7e + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + catalog_types: + streamHash: 19677186cdbbea19797f9567dbd84b05d82dfcb1 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + custom_fields: + streamHash: c2a88ffab2d70b975126b050a936627226ca35e3 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + follow-ups: + streamHash: 86a85ad2e6b345fa10573511cd86d008bb7ad75a + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + incident_roles: + streamHash: f1f97627ced073f4fdc39cf7fdb9b47ff136b20e + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + incident_timestamps: + streamHash: 2bf61e3dcde3c4e8ef428f0b45d4b160f4b4092d + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + incident_updates: + streamHash: fe8303160cfdf6a56006d3fe67146c6e04dfcca9 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + incident_statuses: + streamHash: c426dd6028bbb07321bbda169c89b66f3c470c61 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + workflows: + streamHash: c3e87a0f00eae4254aa7194a93589f7761bb32b5 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + users: + streamHash: 6a6fb6e206dfd6c0860b9e11f01b5161b7281779 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + severities: + streamHash: e6a359ae7611c9c12b23c9d21a8b0504ca4e5d3b + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + schedules: + streamHash: 5f2b6b9f1068e609144643d2c205bdd4775f4d6f + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + incidents: + streamHash: c7ab9d59ffea3d32aec4306215c27a7fa5b52c30 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://api-docs.incident.io/ + +schemas: + actions: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + assignee: + type: + - object + - "null" + properties: + email: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + role: + type: + - string + - "null" + slack_user_id: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: string + incident_id: + type: + - string + - "null" + status: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + required: + - id + catalog_types: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + annotations: + type: + - object + - "null" + categories: + type: + - array + - "null" + items: + type: + - string + - "null" + color: + type: + - string + - "null" + created_at: + type: + - string + - "null" + icon: + type: + - string + - "null" + id: + type: string + is_editable: + type: + - boolean + - "null" + last_synced_at: + type: + - string + - "null" + name: + type: + - string + - "null" + ranked: + type: + - boolean + - "null" + registry_type: + type: + - string + - "null" + required_integrations: + type: + - array + - "null" + items: + type: + - string + - "null" + schema: + type: + - object + - "null" + properties: + version: + type: + - number + - "null" + attributes: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + array: + type: + - boolean + - "null" + id: + type: + - string + - "null" + mode: + type: + - string + - "null" + name: + type: + - string + - "null" + semantic_type: + type: + - string + - "null" + type_name: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + required: + - id + custom_fields: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + created_at: + type: + - string + - "null" + field_type: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + required: + - id + follow-ups: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + assignee: + type: + - object + - "null" + properties: + email: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + role: + type: + - string + - "null" + slack_user_id: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: string + incident_id: + type: + - string + - "null" + priority: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + status: + type: + - string + - "null" + title: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + required: + - id + incident_roles: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: string + instructions: + type: + - string + - "null" + name: + type: + - string + - "null" + required: + type: + - boolean + - "null" + role_type: + type: + - string + - "null" + shortform: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + required: + - id + incident_timestamps: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + id: + type: string + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + required: + - id + incident_updates: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + id: + type: string + incident_id: + type: + - string + - "null" + message: + type: + - string + - "null" + new_incident_status: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + category: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + new_severity: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + updater: + type: + - object + - "null" + properties: + user: + type: + - object + - "null" + properties: + email: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + role: + type: + - string + - "null" + slack_user_id: + type: + - string + - "null" + required: + - id + incident_statuses: + type: object + $schema: http://json-schema.org/schema# + properties: + description: + type: + - string + - "null" + category: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + required: + - id + additionalProperties: true + workflows: + type: object + $schema: http://json-schema.org/schema# + properties: + version: + type: + - number + - "null" + condition_groups: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + conditions: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + operation: + type: + - object + - "null" + properties: + label: + type: + - string + - "null" + value: + type: + - string + - "null" + param_bindings: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + array_value: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + label: + type: + - string + - "null" + literal: + type: + - string + - "null" + subject: + type: + - object + - "null" + properties: + label: + type: + - string + - "null" + reference: + type: + - string + - "null" + continue_on_step_error: + type: + - boolean + - "null" + expressions: + type: + - array + - "null" + id: + type: string + include_private_incidents: + type: + - boolean + - "null" + name: + type: + - string + - "null" + once_for: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + array: + type: + - boolean + - "null" + key: + type: + - string + - "null" + label: + type: + - string + - "null" + runs_from: + type: + - string + - "null" + runs_on_incident_modes: + type: + - array + - "null" + items: + type: + - string + - "null" + runs_on_incidents: + type: + - string + - "null" + state: + type: + - string + - "null" + steps: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + label: + type: + - string + - "null" + name: + type: + - string + - "null" + trigger: + type: + - object + - "null" + properties: + label: + type: + - string + - "null" + name: + type: + - string + - "null" + required: + - id + additionalProperties: true + users: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + base_role: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + slug: + type: + - string + - "null" + custom_roles: + type: + - array + - "null" + email: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + role: + type: + - string + - "null" + slack_user_id: + type: + - string + - "null" + required: + - id + severities: + type: object + $schema: http://json-schema.org/schema# + properties: + description: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + required: + - id + additionalProperties: true + schedules: + type: object + $schema: http://json-schema.org/schema# + properties: + annotations: + type: + - object + - "null" + config: + type: + - object + - "null" + properties: + rotations: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + handover_start_at: + type: + - string + - "null" + handovers: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + interval: + type: + - number + - "null" + interval_type: + type: + - string + - "null" + id: + type: + - string + - "null" + layers: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + name: + type: + - string + - "null" + name: + type: + - string + - "null" + created_at: + type: + - string + - "null" + current_shifts: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + end_at: + type: + - string + - "null" + fingerprint: + type: + - string + - "null" + rotation_id: + type: + - string + - "null" + start_at: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + timezone: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + required: + - id + additionalProperties: true + incidents: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + creator: + type: + - object + - "null" + properties: + user: + type: + - object + - "null" + properties: + email: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + role: + type: + - string + - "null" + slack_user_id: + type: + - string + - "null" + custom_field_entries: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + custom_field: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + field_type: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + options: + type: + - array + - "null" + values: + type: + - array + - "null" + duration_metrics: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + duration_metric: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + name: + type: + - string + - "null" + has_debrief: + type: + - boolean + - "null" + id: + type: string + incident_role_assignments: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + assignee: + type: + - object + - "null" + properties: + email: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + role: + type: + - string + - "null" + slack_user_id: + type: + - string + - "null" + role: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + instructions: + type: + - string + - "null" + name: + type: + - string + - "null" + required: + type: + - boolean + - "null" + role_type: + type: + - string + - "null" + shortform: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + incident_status: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + category: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + incident_timestamp_values: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + incident_timestamp: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + value: + type: + - object + - "null" + properties: + value: + type: + - string + - "null" + incident_type: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + create_in_triage: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + is_default: + type: + - boolean + - "null" + name: + type: + - string + - "null" + private_incidents_only: + type: + - boolean + - "null" + updated_at: + type: + - string + - "null" + mode: + type: + - string + - "null" + name: + type: + - string + - "null" + permalink: + type: + - string + - "null" + reference: + type: + - string + - "null" + severity: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + rank: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + slack_channel_id: + type: + - string + - "null" + slack_channel_name: + type: + - string + - "null" + slack_team_id: + type: + - string + - "null" + summary: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + visibility: + type: + - string + - "null" + workload_minutes_late: + type: + - number + - "null" + workload_minutes_sleeping: + type: + - number + - "null" + workload_minutes_total: + type: + - number + - "null" + workload_minutes_working: + type: + - number + - "null" + required: + - id diff --git a/airbyte-integrations/connectors/source-incident-io/metadata.yaml b/airbyte-integrations/connectors/source-incident-io/metadata.yaml new file mode 100644 index 0000000000000..9c9ecafa84525 --- /dev/null +++ b/airbyte-integrations/connectors/source-incident-io/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.incident.io" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-incident-io + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: 7926da90-399e-4f9f-9833-52d8dc3fcb29 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-incident-io + githubIssueLabel: source-incident-io + icon: icon.svg + license: MIT + name: Incident + releaseDate: 2024-10-03 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/incident-io + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/incident-io.md b/docs/integrations/sources/incident-io.md new file mode 100644 index 0000000000000..210f01d85e123 --- /dev/null +++ b/docs/integrations/sources/incident-io.md @@ -0,0 +1,59 @@ +# Incident.io + +This is the Incident.io source connector which ingests data from the incident API. +The important streams are `incidents`, `follow-ups` and `severities` + +## Prerequisites + +An API key is required for authentication and using this connector. In order to obtain an API key, you must first create an Incident.io account. +You can create an account here https://incident.io/ +Once you create an account and log in , you will find your API keys section in the settings sidebar under the `extends` heading. Make sure to provide all of the appropriate permissions. +You can find more about their API here https://api-docs.incident.io/ + +## Set up the Adjust source connector + +1. Click **Sources** and then click **+ New source**. +2. On the Set up the source page, select **Incdient.io** from the Source type dropdown. +3. Enter a name for your new source. +4. For **API Key**, enter your API key obtained in the previous step. +7. Click **Set up source**. + +## Supported sync modes + +The source connector supports the following [sync modes](https://docs.airbyte.com/cloud/core-concepts#connection-sync-modes): + +- Full Refresh + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. API key to use. Find it at https://app.incident.io/settings/api-keys | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| actions | id | No pagination | ✅ | ❌ | +| catalog_types | id | No pagination | ✅ | ❌ | +| custom_fields | id | No pagination | ✅ | ❌ | +| follow-ups | id | No pagination | ✅ | ❌ | +| incident_roles | id | No pagination | ✅ | ❌ | +| incident_timestamps | id | No pagination | ✅ | ❌ | +| incident_updates | id | DefaultPaginator | ✅ | ❌ | +| incident_statuses | id | No pagination | ✅ | ❌ | +| workflows | id | No pagination | ✅ | ❌ | +| users | id | DefaultPaginator | ✅ | ❌ | +| severities | id | No pagination | ✅ | ❌ | +| schedules | id | DefaultPaginator | ✅ | ❌ | +| incidents | id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-03 | | Initial release by [@aazam-gh](https://github.com/aazam-gh) via Connector Builder | + +
From 0c99b762e5ea4009eb9054f419cd43e9a07f50fb Mon Sep 17 00:00:00 2001 From: Parthiv Makwana <75653580+parthiv11@users.noreply.github.com> Date: Tue, 8 Oct 2024 22:51:17 +0530 Subject: [PATCH 187/379] source-thinkific contribution from parthiv11 (#46354) Co-authored-by: Marcos Marx --- .../connectors/source-thinkific/README.md | 33 + .../acceptance-test-config.yml | 17 + .../connectors/source-thinkific/icon.svg | 1 + .../connectors/source-thinkific/manifest.yaml | 1152 +++++++++++++++++ .../connectors/source-thinkific/metadata.yaml | 35 + docs/integrations/sources/thinkific.md | 35 + 6 files changed, 1273 insertions(+) create mode 100644 airbyte-integrations/connectors/source-thinkific/README.md create mode 100644 airbyte-integrations/connectors/source-thinkific/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-thinkific/icon.svg create mode 100644 airbyte-integrations/connectors/source-thinkific/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-thinkific/metadata.yaml create mode 100644 docs/integrations/sources/thinkific.md diff --git a/airbyte-integrations/connectors/source-thinkific/README.md b/airbyte-integrations/connectors/source-thinkific/README.md new file mode 100644 index 0000000000000..c00ddaa9db536 --- /dev/null +++ b/airbyte-integrations/connectors/source-thinkific/README.md @@ -0,0 +1,33 @@ +# Thinkific +This directory contains the manifest-only connector for `source-thinkific`. + +Airbyte connector for [Thinkific](https://thinkific.com/), allowing you to seamlessly sync data like users, course participants, and instructors from Thinkific to other platforms. It's designed to make managing and analyzing your online courses and communities even easier! + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-thinkific:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-thinkific build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-thinkific test +``` + diff --git a/airbyte-integrations/connectors/source-thinkific/acceptance-test-config.yml b/airbyte-integrations/connectors/source-thinkific/acceptance-test-config.yml new file mode 100644 index 0000000000000..ec529930a2c66 --- /dev/null +++ b/airbyte-integrations/connectors/source-thinkific/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-thinkific:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-thinkific/icon.svg b/airbyte-integrations/connectors/source-thinkific/icon.svg new file mode 100644 index 0000000000000..874a044caaca4 --- /dev/null +++ b/airbyte-integrations/connectors/source-thinkific/icon.svg @@ -0,0 +1 @@ + diff --git a/airbyte-integrations/connectors/source-thinkific/manifest.yaml b/airbyte-integrations/connectors/source-thinkific/manifest.yaml new file mode 100644 index 0000000000000..67ed47240a1a8 --- /dev/null +++ b/airbyte-integrations/connectors/source-thinkific/manifest.yaml @@ -0,0 +1,1152 @@ +version: 5.10.2 + +type: DeclarativeSource + +description: >- + Airbyte connector for Thinkific, allowing you to seamlessly sync data like + users, course participants, and instructors from Thinkific to other platforms. + It's designed to make managing and analyzing your online courses and + communities even easier! + +check: + type: CheckStream + stream_names: + - courses + +definitions: + streams: + courses: + type: DeclarativeStream + name: courses + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /courses + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/courses" + users: + type: DeclarativeStream + name: users + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /users + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/users" + promotions: + type: DeclarativeStream + name: promotions + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /promotions + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/promotions" + categories: + type: DeclarativeStream + name: categories + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /collections + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/categories" + reviews: + type: DeclarativeStream + name: reviews + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /course_reviews + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + request_option: + type: RequestOption + field_name: course_id + inject_into: request_parameter + partition_field: course_id + stream: + $ref: "#/definitions/streams/courses" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/reviews" + enrollments: + type: DeclarativeStream + name: enrollments + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /enrollments + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/enrollments" + groups: + type: DeclarativeStream + name: groups + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /groups + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/groups" + instructors: + type: DeclarativeStream + name: instructors + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /instructors + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/instructors" + orders: + type: DeclarativeStream + name: orders + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /orders + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/orders" + products: + type: DeclarativeStream + name: products + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /products + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/products" + coupons: + type: DeclarativeStream + name: coupons + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /coupons?promotion_id={{ stream_partition.promotion_id }} + http_method: GET + request_headers: + X-Auth-Subdomain: "{{ config['subdomain'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 250 + start_from_page: 1 + inject_on_first_request: false + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: promotion_id + stream: + $ref: "#/definitions/streams/promotions" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/coupons" + base_requester: + type: HttpRequester + url_base: https://api.thinkific.com/api/public/v1 + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"api_key\"] }}" + inject_into: + type: RequestOption + field_name: X-Auth-API-Key + inject_into: header + +streams: + - $ref: "#/definitions/streams/courses" + - $ref: "#/definitions/streams/users" + - $ref: "#/definitions/streams/promotions" + - $ref: "#/definitions/streams/categories" + - $ref: "#/definitions/streams/reviews" + - $ref: "#/definitions/streams/enrollments" + - $ref: "#/definitions/streams/groups" + - $ref: "#/definitions/streams/instructors" + - $ref: "#/definitions/streams/orders" + - $ref: "#/definitions/streams/products" + - $ref: "#/definitions/streams/coupons" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + - subdomain + properties: + api_key: + type: string + description: Your Thinkific API key for authentication. + name: api_key + order: 0 + title: API Key + airbyte_secret: true + subdomain: + type: string + description: >- + The subdomain of your Thinkific URL (e.g., if your URL is + example.thinkific.com, your subdomain is "example". + order: 1 + title: subdomain + additionalProperties: true + +metadata: + autoImportSchema: + courses: false + users: false + promotions: false + categories: false + reviews: false + enrollments: false + groups: true + instructors: false + orders: false + products: false + coupons: false + testedStreams: + courses: + hasRecords: true + streamHash: bbe44b3d7a662bcae987f8851ee08062873b35c3 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + users: + streamHash: a57762ca230a1c9bc2d1514d75cd346b2f2e5008 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + promotions: + hasRecords: true + streamHash: 55b9778d3fb6c908d1ae826801f9843f478880e7 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + categories: + hasRecords: true + streamHash: 2182340ccbd8f366f34b277c38070908b966ad09 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + reviews: + streamHash: db9558b386cf72af5f3cb7c2e4490635be63b651 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + enrollments: + hasRecords: true + streamHash: 30782f4e5191bfd1947bf9e066d55991e4b2cc4a + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + groups: + hasRecords: true + streamHash: 0c957da7bda39fc2848930da6ab8fcde0b8e001c + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + instructors: + hasRecords: true + streamHash: e024a55fda262d3d6b3b0f1134768cd8d56b3ac7 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + orders: + hasRecords: true + streamHash: 1fbeed3cd8bd39e83a6f69c14861dd28b2bf548c + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + products: + hasRecords: true + streamHash: 4b1492c51c10da781f04e47635686c627400f480 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + coupons: + hasRecords: true + streamHash: 3284853d55f1cc2850857163af5a462aabe2580e + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + assist: + docsUrl: https://developers.thinkific.com/api/api-documentation + +schemas: + courses: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + administrator_user_ids: + type: + - array + - "null" + banner_image_url: + type: + - string + - "null" + chapter_ids: + type: + - array + - "null" + items: + type: + - number + - "null" + contact_information: + type: + - string + - "null" + course_card_image_url: + type: + - string + - "null" + id: + type: number + instructor_id: + type: + - number + - "null" + name: + type: + - string + - "null" + product_id: + type: + - number + - "null" + reviews_enabled: + type: + - boolean + - "null" + slug: + type: + - string + - "null" + user_id: + type: + - number + - "null" + required: + - id + users: + type: object + $schema: http://json-schema.org/schema# + properties: + affiliate_code: + type: + - string + - "null" + affiliate_commission: + type: + - string + - "null" + affiliate_commission_type: + type: + - string + - "null" + affiliate_payout_email: + type: + - string + - "null" + company: + type: + - string + - "null" + created_at: + type: + - string + - "null" + custom_profile_fields: + type: + - array + - "null" + email: + type: + - string + - "null" + first_name: + type: + - string + - "null" + full_name: + type: + - string + - "null" + id: + type: number + last_name: + type: + - string + - "null" + roles: + type: + - array + - "null" + items: + type: + - string + - "null" + required: + - id + additionalProperties: true + promotions: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + amount: + type: + - string + - "null" + coupon_ids: + type: + - array + - "null" + items: + type: + - number + - "null" + created_at: + type: + - string + - "null" + discount_type: + type: + - string + - "null" + id: + type: number + name: + type: + - string + - "null" + required: + - id + categories: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + default: + type: + - boolean + - "null" + id: + type: number + name: + type: + - string + - "null" + product_ids: + type: + - array + - "null" + items: + type: + - number + - "null" + slug: + type: + - string + - "null" + required: + - id + reviews: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + approved: + type: + - boolean + - "null" + course_id: + type: + - number + - "null" + created_at: + type: + - string + - "null" + id: + type: number + rating: + type: + - number + - "null" + review_text: + type: + - string + - "null" + title: + type: + - string + - "null" + user_id: + type: + - number + - "null" + required: + - id + enrollments: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + activated_at: + type: + - string + - "null" + completed: + type: + - boolean + - "null" + completed_at: + type: + - string + - "null" + course_id: + type: + - number + - "null" + course_name: + type: + - string + - "null" + created_at: + type: + - string + - "null" + expired: + type: + - boolean + - "null" + id: + type: number + is_free_trial: + type: + - boolean + - "null" + percentage_completed: + type: + - string + - "null" + started_at: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + user_email: + type: + - string + - "null" + user_id: + type: + - number + - "null" + user_name: + type: + - string + - "null" + required: + - id + groups: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + id: + type: number + name: + type: + - string + - "null" + token: + type: + - string + - "null" + required: + - id + instructors: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + avatar_url: + type: + - string + - "null" + created_at: + type: + - string + - "null" + email: + type: + - string + - "null" + first_name: + type: + - string + - "null" + id: + type: number + last_name: + type: + - string + - "null" + slug: + type: + - string + - "null" + user_id: + type: + - number + - "null" + required: + - id + orders: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + amount_cents: + type: + - number + - "null" + amount_dollars: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: number + items: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + amount_cents: + type: + - number + - "null" + amount_dollars: + type: + - number + - "null" + product_id: + type: + - number + - "null" + product_name: + type: + - string + - "null" + product_id: + type: + - number + - "null" + product_name: + type: + - string + - "null" + status: + type: + - string + - "null" + subscription: + type: + - boolean + - "null" + user_email: + type: + - string + - "null" + user_id: + type: + - number + - "null" + user_name: + type: + - string + - "null" + required: + - id + products: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + card_image_url: + type: + - string + - "null" + collection_ids: + type: + - array + - "null" + items: + type: + - number + - "null" + created_at: + type: + - string + - "null" + has_certificate: + type: + - boolean + - "null" + hidden: + type: + - boolean + - "null" + id: + type: number + instructor_names: + type: + - string + - "null" + name: + type: + - string + - "null" + position: + type: + - number + - "null" + price: + type: + - string + - "null" + private: + type: + - boolean + - "null" + product_prices: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + currency: + type: + - string + - "null" + id: + type: + - number + - "null" + is_primary: + type: + - boolean + - "null" + payment_type: + type: + - string + - "null" + price: + type: + - string + - "null" + price_name: + type: + - string + - "null" + productable_id: + type: + - number + - "null" + productable_type: + type: + - string + - "null" + related_product_ids: + type: + - array + - "null" + slug: + type: + - string + - "null" + status: + type: + - string + - "null" + subscription: + type: + - boolean + - "null" + required: + - id + coupons: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + code: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: number + promotion_id: + type: + - number + - "null" + quantity: + type: + - number + - "null" + quantity_used: + type: + - number + - "null" + required: + - id diff --git a/airbyte-integrations/connectors/source-thinkific/metadata.yaml b/airbyte-integrations/connectors/source-thinkific/metadata.yaml new file mode 100644 index 0000000000000..fec84812f97e5 --- /dev/null +++ b/airbyte-integrations/connectors/source-thinkific/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.thinkific.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-thinkific + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.3@sha256:17e68ba49ad98448d350b7647510b629a099b624b77dd565fc6b47fcd107d739 + connectorSubtype: api + connectorType: source + definitionId: 80e5803c-7013-4ecc-a3b1-2344ce43e054 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-thinkific + githubIssueLabel: source-thinkific + icon: icon.svg + license: MIT + name: Thinkific + releaseDate: 2024-10-07 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/thinkific + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/thinkific.md b/docs/integrations/sources/thinkific.md new file mode 100644 index 0000000000000..472a401fe5b9c --- /dev/null +++ b/docs/integrations/sources/thinkific.md @@ -0,0 +1,35 @@ +# Thinkific +Airbyte connector for Thinkific, allowing you to seamlessly sync data like users, course participants, and instructors from Thinkific to other platforms. It's designed to make managing and analyzing your online courses and communities even easier! + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. Your Thinkific API key for authentication. | | +| `subdomain` | `string` | subdomain. The subdomain of your Thinkific URL (e.g., if your URL is example.thinkific.com, your subdomain is "example". | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| courses | id | DefaultPaginator | ✅ | ❌ | +| users | id | DefaultPaginator | ✅ | ❌ | +| promotions | id | DefaultPaginator | ✅ | ❌ | +| categories | id | DefaultPaginator | ✅ | ❌ | +| reviews | id | DefaultPaginator | ✅ | ❌ | +| enrollments | id | DefaultPaginator | ✅ | ❌ | +| groups | id | DefaultPaginator | ✅ | ❌ | +| instructors | id | DefaultPaginator | ✅ | ❌ | +| orders | id | DefaultPaginator | ✅ | ❌ | +| products | id | DefaultPaginator | ✅ | ❌ | +| coupons | id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-07 | | Initial release by [@parthiv11](https://github.com/parthiv11) via Connector Builder | + +
From ff1bf9e9f5a1c858a5869a79af6cc5d6b0b787ab Mon Sep 17 00:00:00 2001 From: William Leiby Date: Tue, 8 Oct 2024 13:42:11 -0500 Subject: [PATCH 188/379] source-countercyclical contribution from williamleiby (#46530) --- .../source-countercyclical/README.md | 33 + .../acceptance-test-config.yml | 17 + .../source-countercyclical/icon.svg | 503 +++++++++++ .../source-countercyclical/manifest.yaml | 821 ++++++++++++++++++ .../source-countercyclical/metadata.yaml | 35 + docs/integrations/sources/countercyclical.md | 26 + 6 files changed, 1435 insertions(+) create mode 100644 airbyte-integrations/connectors/source-countercyclical/README.md create mode 100644 airbyte-integrations/connectors/source-countercyclical/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-countercyclical/icon.svg create mode 100644 airbyte-integrations/connectors/source-countercyclical/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-countercyclical/metadata.yaml create mode 100644 docs/integrations/sources/countercyclical.md diff --git a/airbyte-integrations/connectors/source-countercyclical/README.md b/airbyte-integrations/connectors/source-countercyclical/README.md new file mode 100644 index 0000000000000..f21578b44d294 --- /dev/null +++ b/airbyte-integrations/connectors/source-countercyclical/README.md @@ -0,0 +1,33 @@ +# Countercyclical +This directory contains the manifest-only connector for `source-countercyclical`. + +Countercyclical is the fully end-to-end financial intelligence platform designed for modern investment teams. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-countercyclical:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-countercyclical build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-countercyclical test +``` + diff --git a/airbyte-integrations/connectors/source-countercyclical/acceptance-test-config.yml b/airbyte-integrations/connectors/source-countercyclical/acceptance-test-config.yml new file mode 100644 index 0000000000000..98e1d88cf0469 --- /dev/null +++ b/airbyte-integrations/connectors/source-countercyclical/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-countercyclical:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-countercyclical/icon.svg b/airbyte-integrations/connectors/source-countercyclical/icon.svg new file mode 100644 index 0000000000000..9045cec546d3c --- /dev/null +++ b/airbyte-integrations/connectors/source-countercyclical/icon.svg @@ -0,0 +1,503 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-countercyclical/manifest.yaml b/airbyte-integrations/connectors/source-countercyclical/manifest.yaml new file mode 100644 index 0000000000000..2d1737f29191e --- /dev/null +++ b/airbyte-integrations/connectors/source-countercyclical/manifest.yaml @@ -0,0 +1,821 @@ +version: 5.10.2 + +type: DeclarativeSource + +description: >- + Countercyclical is the fully end-to-end financial intelligence platform + designed for modern investment teams. + +check: + type: CheckStream + stream_names: + - Investments + +definitions: + streams: + Investments: + type: DeclarativeStream + name: Investments + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /investments + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/Investments" + Valuations: + type: DeclarativeStream + name: Valuations + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /valuations + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/Valuations" + Memos: + type: DeclarativeStream + name: Memos + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /memos + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/Memos" + base_requester: + type: HttpRequester + url_base: https://api.countercyclical.io/v1 + authenticator: + type: ApiKeyAuthenticator + api_token: "{{ config[\"api_key\"] }}" + inject_into: + type: RequestOption + field_name: apiKey + inject_into: request_parameter + +streams: + - $ref: "#/definitions/streams/Investments" + - $ref: "#/definitions/streams/Valuations" + - $ref: "#/definitions/streams/Memos" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + order: 0 + title: API Key + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + Investments: true + Valuations: true + Memos: true + testedStreams: + Investments: + streamHash: e16652814d801950a3566c2a519576dd88d93b0c + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + Valuations: + streamHash: 56cf354aba3632e9eeb38b6fc8d5591061011160 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + Memos: + streamHash: 093e7520467e4a57d1686ea244a427d8e180777b + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: {} + +schemas: + Investments: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + address: + type: + - string + - "null" + bannerImage: + type: + - string + - "null" + ceo: + type: + - string + - "null" + cik: + type: + - string + - "null" + clearbit: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + category: + type: + - object + - "null" + properties: + gicsCode: + type: + - string + - "null" + industry: + type: + - string + - "null" + industryGroup: + type: + - string + - "null" + naics6Codes: + type: + - array + - "null" + items: + type: + - string + - "null" + naics6Codes2022: + type: + - array + - "null" + items: + type: + - string + - "null" + naicsCode: + type: + - string + - "null" + sector: + type: + - string + - "null" + sic4Codes: + type: + - array + - "null" + items: + type: + - string + - "null" + sicCode: + type: + - string + - "null" + subIndustry: + type: + - string + - "null" + crunchbase: + type: + - object + - "null" + properties: + handle: + type: + - string + - "null" + domain: + type: + - string + - "null" + domainAliases: + type: + - array + - "null" + items: + type: + - string + - "null" + emailProvider: + type: + - boolean + - "null" + facebook: + type: + - object + - "null" + properties: + handle: + type: + - string + - "null" + likes: + type: + - number + - "null" + foundedYear: + type: + - number + - "null" + geo: + type: + - object + - "null" + properties: + city: + type: + - string + - "null" + country: + type: + - string + - "null" + countryCode: + type: + - string + - "null" + lat: + type: + - number + - "null" + lng: + type: + - number + - "null" + postalCode: + type: + - string + - "null" + state: + type: + - string + - "null" + stateCode: + type: + - string + - "null" + streetAddress: + type: + - string + - "null" + streetName: + type: + - string + - "null" + streetNumber: + type: + - string + - "null" + id: + type: + - string + - "null" + identifiers: + type: + - object + - "null" + properties: + usCIK: + type: + - string + - "null" + usEIN: + type: + - string + - "null" + indexedAt: + type: + - string + - "null" + legalName: + type: + - string + - "null" + linkedin: + type: + - object + - "null" + properties: + handle: + type: + - string + - "null" + location: + type: + - string + - "null" + logo: + type: + - string + - "null" + metrics: + type: + - object + - "null" + properties: + alexaGlobalRank: + type: + - number + - "null" + alexaUsRank: + type: + - number + - "null" + annualRevenue: + type: + - number + - "null" + employees: + type: + - number + - "null" + employeesRange: + type: + - string + - "null" + estimatedAnnualRevenue: + type: + - string + - "null" + fiscalYearEnd: + type: + - number + - "null" + marketCap: + type: + - number + - "null" + trafficRank: + type: + - string + - "null" + name: + type: + - string + - "null" + parent: + type: + - object + - "null" + properties: {} + phone: + type: + - string + - "null" + site: + type: + - object + - "null" + properties: + emailAddresses: + type: + - array + - "null" + phoneNumbers: + type: + - array + - "null" + items: + type: + - string + - "null" + tags: + type: + - array + - "null" + items: + type: + - string + - "null" + tech: + type: + - array + - "null" + items: + type: + - string + - "null" + techCategories: + type: + - array + - "null" + items: + type: + - string + - "null" + ticker: + type: + - string + - "null" + timeZone: + type: + - string + - "null" + twitter: + type: + - object + - "null" + properties: + avatar: + type: + - string + - "null" + bio: + type: + - string + - "null" + followers: + type: + - number + - "null" + following: + type: + - number + - "null" + handle: + type: + - string + - "null" + id: + type: + - string + - "null" + location: + type: + - string + - "null" + site: + type: + - string + - "null" + ultimateParent: + type: + - object + - "null" + properties: {} + utcOffset: + type: + - number + - "null" + country: + type: + - string + - "null" + createdAt: + type: + - string + - "null" + editedName: + type: + - string + - "null" + employees: + type: + - number + - "null" + exchange: + type: + - string + - "null" + figi: + type: + - string + - "null" + financingType: + type: + - string + - "null" + foundingDate: + type: + - string + - "null" + headquarters: + type: + - string + - "null" + id: + type: string + industry: + type: + - string + - "null" + ipoDate: + type: + - string + - "null" + isArchived: + type: + - boolean + - "null" + isFavorite: + type: + - boolean + - "null" + isLocked: + type: + - boolean + - "null" + issuance: + type: + - string + - "null" + lei: + type: + - string + - "null" + marketType: + type: + - string + - "null" + name: + type: + - string + - "null" + sector: + type: + - string + - "null" + tags: + type: + - array + - "null" + items: + type: + - string + - "null" + tickerSymbol: + type: + - string + - "null" + updatedAt: + type: + - string + - "null" + visibility: + type: + - string + - "null" + website: + type: + - string + - "null" + required: + - id + Valuations: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + backgroundColor: + type: + - string + - "null" + createdAt: + type: + - string + - "null" + delineation: + type: + - string + - "null" + discountRate: + type: + - string + - "null" + emoji: + type: + - string + - "null" + endingQuarter: + type: + - string + - "null" + endingYear: + type: + - string + - "null" + growthMetric: + type: + - string + - "null" + growthRate: + type: + - string + - "null" + id: + type: string + isFavorite: + type: + - boolean + - "null" + name: + type: + - string + - "null" + shareToken: + type: + - string + - "null" + startingQuarter: + type: + - string + - "null" + startingYear: + type: + - string + - "null" + status: + type: + - string + - "null" + tableData: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + lineItem: + type: + - string + - "null" + value: + type: + - number + - "null" + year: + type: + - number + - string + - "null" + terminalPeriod: + type: + - number + - "null" + terminalRate: + type: + - string + - "null" + updatedAt: + type: + - string + - "null" + required: + - id + Memos: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + archived: + type: + - boolean + - "null" + avatar: + type: + - string + - "null" + backgroundColor: + type: + - string + - "null" + banner: + type: + - string + - "null" + bannerVisible: + type: + - boolean + - "null" + body: + type: + - string + - "null" + createdAt: + type: + - string + - "null" + documentType: + type: + - string + - "null" + emoji: + type: + - string + - "null" + favorited: + type: + - boolean + - "null" + foregroundColor: + type: + - string + - "null" + icon: + type: + - string + - "null" + id: + type: string + locked: + type: + - boolean + - "null" + publiclyVisible: + type: + - boolean + - "null" + sourcesVisible: + type: + - boolean + - "null" + title: + type: + - string + - "null" + tocVisible: + type: + - boolean + - "null" + updatedAt: + type: + - string + - "null" + views: + type: + - number + - "null" + required: + - id diff --git a/airbyte-integrations/connectors/source-countercyclical/metadata.yaml b/airbyte-integrations/connectors/source-countercyclical/metadata.yaml new file mode 100644 index 0000000000000..1c199728162b1 --- /dev/null +++ b/airbyte-integrations/connectors/source-countercyclical/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.countercyclical.io" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-countercyclical + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: cd671e85-accc-4f85-8f79-b55294e95a11 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-countercyclical + githubIssueLabel: source-countercyclical + icon: icon.svg + license: MIT + name: Countercyclical + releaseDate: 2024-10-06 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/countercyclical + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/countercyclical.md b/docs/integrations/sources/countercyclical.md new file mode 100644 index 0000000000000..1eff9bdf1e55e --- /dev/null +++ b/docs/integrations/sources/countercyclical.md @@ -0,0 +1,26 @@ +# Countercyclical +Countercyclical is the fully end-to-end financial intelligence platform designed for modern investment teams. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| Investments | id | No pagination | ✅ | ❌ | +| Valuations | id | No pagination | ✅ | ❌ | +| Memos | id | No pagination | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-06 | | Initial release by [@williamleiby](https://github.com/williamleiby) via Connector Builder | + +
From e13d0c785e380a48b1f9b9c22847917e389e0103 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Tue, 8 Oct 2024 11:49:41 -0700 Subject: [PATCH 189/379] =?UTF-8?q?Bulk=20Load=20CDK:=20Fixes:=20Checkpoin?= =?UTF-8?q?tManager=20&=20OutputConsumer=20always=20flush=E2=80=A6=20(#466?= =?UTF-8?q?49)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../airbyte/cdk/message/DestinationMessage.kt | 2 +- .../io/airbyte/cdk/state/CheckpointManager.kt | 21 ++++------- .../io/airbyte/cdk/write/WriteOperation.kt | 36 +++++-------------- 3 files changed, 17 insertions(+), 42 deletions(-) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt index 154f61a1af18b..28af91cdd4b3a 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt @@ -193,7 +193,7 @@ data class StreamCheckpoint( AirbyteStateStats() .withRecordCount(destinationStats.recordCount.toDouble()) } - it.additionalProperties.forEach { (key, value) -> + additionalProperties.forEach { (key, value) -> it.withAdditionalProperty(key, value) } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt index a338c440e0f90..1b4302ae28336 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt @@ -140,24 +140,18 @@ abstract class StreamsCheckpointManager : CheckpointManager log.info { "No checkpoints to flush" } true -> flushGlobalCheckpoints() false -> flushStreamCheckpoints() } - } finally { - flushLock.unlock() } } @@ -215,7 +209,6 @@ abstract class StreamsCheckpointManager : CheckpointManager { - println("streamCheckpoints: $streamCheckpoints") streamCheckpoints .mapValues { it.value.ascendingKeySet().firstOrNull() } .filterValues { it != null } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt index 5b9a291a087ea..51704b4927558 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt @@ -5,8 +5,6 @@ package io.airbyte.cdk.write import io.airbyte.cdk.Operation -import io.airbyte.cdk.output.ExceptionHandler -import io.airbyte.cdk.output.OutputConsumer import io.airbyte.cdk.state.SyncFailure import io.airbyte.cdk.state.SyncManager import io.airbyte.cdk.state.SyncSuccess @@ -17,7 +15,6 @@ import io.micronaut.context.annotation.Requires import io.micronaut.context.annotation.Secondary import java.io.InputStream import javax.inject.Singleton -import kotlin.system.exitProcess import kotlinx.coroutines.runBlocking /** @@ -29,36 +26,21 @@ import kotlinx.coroutines.runBlocking class WriteOperation( private val taskLauncher: TaskLauncher, private val syncManager: SyncManager, - private val exceptionHandler: ExceptionHandler, - private val outputConsumer: OutputConsumer ) : Operation { val log = KotlinLogging.logger {} - override fun execute() { - runCatching { - runBlocking { - taskLauncher.start() + override fun execute() = runBlocking { + taskLauncher.start() - when (val result = syncManager.awaitSyncResult()) { - is SyncSuccess -> { - log.info { "Sync completed successfully" } - exitProcess(0) - } - is SyncFailure -> { - log.error { "Caught exception during sync: ${result.syncFailure}" } - val errorMessage = exceptionHandler.handle(result.syncFailure) - outputConsumer.accept(errorMessage) - exitProcess(1) - } - } - } + when (val result = syncManager.awaitSyncResult()) { + is SyncSuccess -> { + log.info { "Sync completed successfully" } } - .onFailure { - log.error { "Uncaught exception during sync: $it" } - val errorMessage = exceptionHandler.handle(it) - outputConsumer.accept(errorMessage) - exitProcess(1) + is SyncFailure -> { + log.info { "Sync failed with stream results ${result.streamResults}" } + throw result.syncFailure } + } } } From 8dad3a5cf521f9f62425fe43a253a077041b6fc0 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Tue, 8 Oct 2024 12:53:21 -0700 Subject: [PATCH 190/379] Destination DevNull: Pick up latest CDK changes for perf eval (#46559) --- .../destination-dev-null/metadata.yaml | 2 +- docs/integrations/destinations/dev-null.md | 47 ++++++++++--------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/airbyte-integrations/connectors/destination-dev-null/metadata.yaml b/airbyte-integrations/connectors/destination-dev-null/metadata.yaml index 7fe4e503b4116..cc57ffecbd40e 100644 --- a/airbyte-integrations/connectors/destination-dev-null/metadata.yaml +++ b/airbyte-integrations/connectors/destination-dev-null/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: file connectorType: destination definitionId: a7bcc9d8-13b3-4e49-b80d-d020b90045e3 - dockerImageTag: 0.7.2 + dockerImageTag: 0.7.3 dockerRepository: airbyte/destination-dev-null githubIssueLabel: destination-dev-null icon: airbyte.svg diff --git a/docs/integrations/destinations/dev-null.md b/docs/integrations/destinations/dev-null.md index 96c71baaa87bb..b65bb1782a716 100644 --- a/docs/integrations/destinations/dev-null.md +++ b/docs/integrations/destinations/dev-null.md @@ -47,28 +47,29 @@ This mode throws an exception after receiving a configurable number of messages. The OSS and Cloud variants have the same version number starting from version `0.2.2`. -| Version | Date | Pull Request | Subject | -|:--------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------| -| 0.7.2 | 2024-10-01 | [45929](https://github.com/airbytehq/airbyte/pull/45929) | Internal code changes | -| 0.7.1 | 2024-09-30 | [46276](https://github.com/airbytehq/airbyte/pull/46276) | Upgrade to latest bulk CDK | -| 0.7.0 | 2024-09-20 | [45704](https://github.com/airbytehq/airbyte/pull/45704) | | -| 0.6.1 | 2024-09-20 | [45715](https://github.com/airbytehq/airbyte/pull/45715) | add destination to cloud registry | -| 0.6.0 | 2024-09-18 | [45651](https://github.com/airbytehq/airbyte/pull/45651) | merge destination-e2e(OSS) and destination-dev-null(cloud) | -| 0.5.0 | 2024-09-18 | [45650](https://github.com/airbytehq/airbyte/pull/45650) | upgrade cdk | -| 0.4.1 | 2024-09-18 | [45649](https://github.com/airbytehq/airbyte/pull/45649) | convert test code to kotlin | -| 0.4.0 | 2024-09-18 | [45648](https://github.com/airbytehq/airbyte/pull/45648) | convert production code to kotlin | -| 0.3.6 | 2024-05-09 | [38097](https://github.com/airbytehq/airbyte/pull/38097) | Support dedup | -| 0.3.5 | 2024-04-29 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Support refreshes | -| 0.3.4 | 2024-04-16 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Fix NPE | -| 0.3.3 | 2024-04-16 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Fix Log trace messages | -| 0.3.2 | 2024-02-14 | [36812](https://github.com/airbytehq/airbyte/pull/36812) | Log trace messages | -| 0.3.1 | 2024-02-14 | [35278](https://github.com/airbytehq/airbyte/pull/35278) | Adopt CDK 0.20.6 | -| 0.3.0 | 2023-05-08 | [25776](https://github.com/airbytehq/airbyte/pull/25776) | Standardize spec and change property field to non-keyword | -| 0.2.4 | 2022-06-17 | [13864](https://github.com/airbytehq/airbyte/pull/13864) | Updated stacktrace format for any trace message errors | -| 0.2.3 | 2022-02-14 | [10256](https://github.com/airbytehq/airbyte/pull/10256) | Add `-XX:+ExitOnOutOfMemoryError` JVM option | -| 0.2.2 | 2022-01-29 | [\#9745](https://github.com/airbytehq/airbyte/pull/9745) | Integrate with Sentry. | -| 0.2.1 | 2021-12-19 | [\#8824](https://github.com/airbytehq/airbyte/pull/8905) | Fix documentation URL. | -| 0.2.0 | 2021-12-16 | [\#8824](https://github.com/airbytehq/airbyte/pull/8824) | Add multiple logging modes. | -| 0.1.0 | 2021-05-25 | [\#3290](https://github.com/airbytehq/airbyte/pull/3290) | Create initial version. | +| Version | Date | Pull Request | Subject | +|:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------| +| 0.7.3 | 2024-10-01 | [46559](https://github.com/airbytehq/airbyte/pull/46559) | From load CDK: async improvements, stream incomplete, additionalProperties on state messages | +| 0.7.2 | 2024-10-01 | [45929](https://github.com/airbytehq/airbyte/pull/45929) | Internal code changes | +| 0.7.1 | 2024-09-30 | [46276](https://github.com/airbytehq/airbyte/pull/46276) | Upgrade to latest bulk CDK | +| 0.7.0 | 2024-09-20 | [45704](https://github.com/airbytehq/airbyte/pull/45704) | | +| 0.6.1 | 2024-09-20 | [45715](https://github.com/airbytehq/airbyte/pull/45715) | add destination to cloud registry | +| 0.6.0 | 2024-09-18 | [45651](https://github.com/airbytehq/airbyte/pull/45651) | merge destination-e2e(OSS) and destination-dev-null(cloud) | +| 0.5.0 | 2024-09-18 | [45650](https://github.com/airbytehq/airbyte/pull/45650) | upgrade cdk | +| 0.4.1 | 2024-09-18 | [45649](https://github.com/airbytehq/airbyte/pull/45649) | convert test code to kotlin | +| 0.4.0 | 2024-09-18 | [45648](https://github.com/airbytehq/airbyte/pull/45648) | convert production code to kotlin | +| 0.3.6 | 2024-05-09 | [38097](https://github.com/airbytehq/airbyte/pull/38097) | Support dedup | +| 0.3.5 | 2024-04-29 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Support refreshes | +| 0.3.4 | 2024-04-16 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Fix NPE | +| 0.3.3 | 2024-04-16 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Fix Log trace messages | +| 0.3.2 | 2024-02-14 | [36812](https://github.com/airbytehq/airbyte/pull/36812) | Log trace messages | +| 0.3.1 | 2024-02-14 | [35278](https://github.com/airbytehq/airbyte/pull/35278) | Adopt CDK 0.20.6 | +| 0.3.0 | 2023-05-08 | [25776](https://github.com/airbytehq/airbyte/pull/25776) | Standardize spec and change property field to non-keyword | +| 0.2.4 | 2022-06-17 | [13864](https://github.com/airbytehq/airbyte/pull/13864) | Updated stacktrace format for any trace message errors | +| 0.2.3 | 2022-02-14 | [10256](https://github.com/airbytehq/airbyte/pull/10256) | Add `-XX:+ExitOnOutOfMemoryError` JVM option | +| 0.2.2 | 2022-01-29 | [\#9745](https://github.com/airbytehq/airbyte/pull/9745) | Integrate with Sentry. | +| 0.2.1 | 2021-12-19 | [\#8824](https://github.com/airbytehq/airbyte/pull/8905) | Fix documentation URL. | +| 0.2.0 | 2021-12-16 | [\#8824](https://github.com/airbytehq/airbyte/pull/8824) | Add multiple logging modes. | +| 0.1.0 | 2021-05-25 | [\#3290](https://github.com/airbytehq/airbyte/pull/3290) | Create initial version. | From 0567c798f9267dc300df6f3726eeeb58ded6eac1 Mon Sep 17 00:00:00 2001 From: Patrick Nilan Date: Tue, 8 Oct 2024 13:58:48 -0700 Subject: [PATCH 191/379] bug(source-openweather) - fixes longitude regex (#46652) --- .../connectors/source-openweather/manifest.yaml | 6 +++--- .../connectors/source-openweather/metadata.yaml | 2 +- docs/integrations/sources/openweather.md | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/airbyte-integrations/connectors/source-openweather/manifest.yaml b/airbyte-integrations/connectors/source-openweather/manifest.yaml index 6dc08685edcdf..d974f9630d7ed 100644 --- a/airbyte-integrations/connectors/source-openweather/manifest.yaml +++ b/airbyte-integrations/connectors/source-openweather/manifest.yaml @@ -138,7 +138,7 @@ spec: description: >- Latitude, decimal (-90; 90). If you need the geocoder to automatic convert city names and zip-codes to geo coordinates and the other way - around, please use our Geocoding API + around, please use the OpenWeather Geocoding API pattern: ^[-]?\d{1,2}(\.\d+)?$ examples: - "45.7603" @@ -149,8 +149,8 @@ spec: description: >- Longitude, decimal (-180; 180). If you need the geocoder to automatic convert city names and zip-codes to geo coordinates and the other way - around, please use our Geocoding API - pattern: ^[-]?\d{1,2}(\.\d+)?$ + around, please use the OpenWeather Geocoding API + pattern: ^[-]?\d{1,3}(\.\d+)?$ examples: - "4.835659" - "-70.39482074115321" diff --git a/airbyte-integrations/connectors/source-openweather/metadata.yaml b/airbyte-integrations/connectors/source-openweather/metadata.yaml index d0b244e1c7810..352ba19181497 100644 --- a/airbyte-integrations/connectors/source-openweather/metadata.yaml +++ b/airbyte-integrations/connectors/source-openweather/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: 561d7787-b45e-4f3b-af58-0163c3ba9d5a - dockerImageTag: 0.3.0 + dockerImageTag: 0.3.1 dockerRepository: airbyte/source-openweather documentationUrl: https://docs.airbyte.com/integrations/sources/openweather githubIssueLabel: source-openweather diff --git a/docs/integrations/sources/openweather.md b/docs/integrations/sources/openweather.md index 39d5b3dbadc74..76f2b2bb8d869 100644 --- a/docs/integrations/sources/openweather.md +++ b/docs/integrations/sources/openweather.md @@ -38,6 +38,7 @@ The free plan allows 60 calls per minute and 1,000,000 calls per month, you won' | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------ | +| 0.3.1 | 2024-10-08 | [46652](https://github.com/airbytehq/airbyte/pull/46652) | Fix longitude regex matching | | 0.3.0 | 2024-08-26 | [44772](https://github.com/airbytehq/airbyte/pull/44772) | Refactor connector to manifest-only format | | 0.2.17 | 2024-08-24 | [44725](https://github.com/airbytehq/airbyte/pull/44725) | Update dependencies | | 0.2.16 | 2024-08-17 | [44236](https://github.com/airbytehq/airbyte/pull/44236) | Update dependencies | From c2923bd09568e68983fbe3cd29a3862caffe8ca8 Mon Sep 17 00:00:00 2001 From: Brian Lai <51336873+brianjlai@users.noreply.github.com> Date: Tue, 8 Oct 2024 17:04:11 -0400 Subject: [PATCH 192/379] [concurrent low-code] Add concurrency_level to manifest and allow it to be parsed into a runtime object (#45943) --- .../declarative/concurrency_level/__init__.py | 7 ++ .../concurrency_level/concurrency_level.py | 42 +++++++++++ .../declarative_component_schema.yaml | 33 +++++++++ .../models/declarative_component_schema.py | 18 +++++ .../parsers/model_to_component_factory.py | 12 ++++ .../declarative/concurrency_level/__init__.py | 0 .../test_concurrency_level.py | 71 +++++++++++++++++++ .../test_model_to_component_factory.py | 14 ++++ 8 files changed, 197 insertions(+) create mode 100644 airbyte-cdk/python/airbyte_cdk/sources/declarative/concurrency_level/__init__.py create mode 100644 airbyte-cdk/python/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py create mode 100644 airbyte-cdk/python/unit_tests/sources/declarative/concurrency_level/__init__.py create mode 100644 airbyte-cdk/python/unit_tests/sources/declarative/concurrency_level/test_concurrency_level.py diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/concurrency_level/__init__.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/concurrency_level/__init__.py new file mode 100644 index 0000000000000..6c55c15c9d5e2 --- /dev/null +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/concurrency_level/__init__.py @@ -0,0 +1,7 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# + +from airbyte_cdk.sources.declarative.concurrency_level.concurrency_level import ConcurrencyLevel + +__all__ = ["ConcurrencyLevel"] diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py new file mode 100644 index 0000000000000..a86c4f8ff8c0d --- /dev/null +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py @@ -0,0 +1,42 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# + +from dataclasses import InitVar, dataclass +from typing import Any, Mapping, Optional, Union + +from airbyte_cdk.sources.declarative.interpolation import InterpolatedString +from airbyte_cdk.sources.types import Config + + +@dataclass +class ConcurrencyLevel: + """ + Returns the number of worker threads that should be used when syncing concurrent streams in parallel + + Attributes: + default_concurrency (Union[int, str]): The hardcoded integer or interpolation of how many worker threads to use during a sync + max_concurrency (Optional[int]): The maximum number of worker threads to use when the default_concurrency is exceeded + """ + + default_concurrency: Union[int, str] + max_concurrency: Optional[int] + config: Config + parameters: InitVar[Mapping[str, Any]] + + def __post_init__(self, parameters: Mapping[str, Any]) -> None: + if isinstance(self.default_concurrency, int): + self._default_concurrency: Union[int, InterpolatedString] = self.default_concurrency + elif "config" in self.default_concurrency and not self.max_concurrency: + raise ValueError("ConcurrencyLevel requires that max_concurrency be defined if the default_concurrency can be used-specified") + else: + self._default_concurrency = InterpolatedString.create(self.default_concurrency, parameters=parameters) + + def get_concurrency_level(self) -> int: + if isinstance(self._default_concurrency, InterpolatedString): + evaluated_default_concurrency = self._default_concurrency.eval(config=self.config) + if not isinstance(evaluated_default_concurrency, int): + raise ValueError("default_concurrency did not evaluate to an integer") + return min(evaluated_default_concurrency, self.max_concurrency) if self.max_concurrency else evaluated_default_concurrency + else: + return self._default_concurrency diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml b/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml index b774dab1e535e..4409ad29ee456 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml @@ -28,6 +28,8 @@ properties: type: object spec: "$ref": "#/definitions/Spec" + concurrency_level: + "$ref": "#/definitions/ConcurrencyLevel" metadata: type: object description: For internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata. @@ -315,6 +317,37 @@ definitions: $parameters: type: object additionalProperties: true + ConcurrencyLevel: + title: Concurrency Level + description: Defines the amount of parallelization for the streams that are being synced. The factor of parallelization is how many partitions or streams are synced at the same time. For example, with a concurrency_level of 10, ten streams or partitions of data will processed at the same time. + type: object + required: + - default_concurrency + properties: + type: + type: string + enum: [ConcurrencyLevel] + default_concurrency: + title: Default Concurrency + description: The amount of concurrency that will applied during a sync. This value can be hardcoded or user-defined in the config if different users have varying volume thresholds in the target API. + anyOf: + - type: integer + - type: string + interpolation_context: + - config + examples: + - 10 + - "{{ config['num_workers'] or 10 }}" + max_concurrency: + title: Max Concurrency + description: The maximum level of concurrency that will be used during a sync. This becomes a required field when the default_concurrency derives from the config, because it serves as a safeguard against a user-defined threshold that is too high. + type: integer + examples: + - 20 + - 100 + $parameters: + type: object + additionalProperties: true ConstantBackoffStrategy: title: Constant Backoff description: Backoff strategy with a constant backoff interval. diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py index 1b1e0220a1f13..9cf9fbea05ae7 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py @@ -53,6 +53,23 @@ class CheckStream(BaseModel): ) +class ConcurrencyLevel(BaseModel): + type: Optional[Literal['ConcurrencyLevel']] = None + default_concurrency: Union[int, str] = Field( + ..., + description='The amount of concurrency that will applied during a sync. This value can be hardcoded or user-defined in the config if different users have varying volume thresholds in the target API.', + examples=[10, "{{ config['num_workers'] or 10 }}"], + title='Default Concurrency', + ) + max_concurrency: Optional[int] = Field( + None, + description='The maximum level of concurrency that will be used during a sync. This becomes a required field when the default_concurrency derives from the config, because it serves as a safeguard against a user-defined threshold that is too high.', + examples=[20, 100], + title='Max Concurrency', + ) + parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') + + class ConstantBackoffStrategy(BaseModel): type: Literal['ConstantBackoffStrategy'] backoff_time_in_seconds: Union[float, str] = Field( @@ -1304,6 +1321,7 @@ class Config: schemas: Optional[Schemas] = None definitions: Optional[Dict[str, Any]] = None spec: Optional[Spec] = None + concurrency_level: Optional[ConcurrencyLevel] = None metadata: Optional[Dict[str, Any]] = Field( None, description='For internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata.', diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py index abb2029c3670f..64a1d5422adb1 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py @@ -28,6 +28,7 @@ ) from airbyte_cdk.sources.declarative.auth.token_provider import InterpolatedStringTokenProvider, SessionTokenProvider, TokenProvider from airbyte_cdk.sources.declarative.checks import CheckStream +from airbyte_cdk.sources.declarative.concurrency_level import ConcurrencyLevel from airbyte_cdk.sources.declarative.datetime import MinMaxDatetime from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream from airbyte_cdk.sources.declarative.decoders import Decoder, IterableDecoder, JsonDecoder, JsonlDecoder @@ -56,6 +57,7 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import BearerAuthenticator as BearerAuthenticatorModel from airbyte_cdk.sources.declarative.models.declarative_component_schema import CheckStream as CheckStreamModel from airbyte_cdk.sources.declarative.models.declarative_component_schema import CompositeErrorHandler as CompositeErrorHandlerModel +from airbyte_cdk.sources.declarative.models.declarative_component_schema import ConcurrencyLevel as ConcurrencyLevelModel from airbyte_cdk.sources.declarative.models.declarative_component_schema import ConstantBackoffStrategy as ConstantBackoffStrategyModel from airbyte_cdk.sources.declarative.models.declarative_component_schema import CursorPagination as CursorPaginationModel from airbyte_cdk.sources.declarative.models.declarative_component_schema import CustomAuthenticator as CustomAuthenticatorModel @@ -195,6 +197,7 @@ def _init_mappings(self) -> None: BearerAuthenticatorModel: self.create_bearer_authenticator, CheckStreamModel: self.create_check_stream, CompositeErrorHandlerModel: self.create_composite_error_handler, + ConcurrencyLevelModel: self.create_concurrency_level, ConstantBackoffStrategyModel: self.create_constant_backoff_strategy, CursorPaginationModel: self.create_cursor_pagination, CustomAuthenticatorModel: self.create_custom_component, @@ -438,6 +441,15 @@ def create_composite_error_handler(self, model: CompositeErrorHandlerModel, conf ] return CompositeErrorHandler(error_handlers=error_handlers, parameters=model.parameters or {}) + @staticmethod + def create_concurrency_level(model: ConcurrencyLevelModel, config: Config, **kwargs: Any) -> ConcurrencyLevel: + return ConcurrencyLevel( + default_concurrency=model.default_concurrency, + max_concurrency=model.max_concurrency, + config=config, + parameters={}, + ) + @staticmethod def create_constant_backoff_strategy(model: ConstantBackoffStrategyModel, config: Config, **kwargs: Any) -> ConstantBackoffStrategy: return ConstantBackoffStrategy( diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/concurrency_level/__init__.py b/airbyte-cdk/python/unit_tests/sources/declarative/concurrency_level/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/concurrency_level/test_concurrency_level.py b/airbyte-cdk/python/unit_tests/sources/declarative/concurrency_level/test_concurrency_level.py new file mode 100644 index 0000000000000..0195a71c19685 --- /dev/null +++ b/airbyte-cdk/python/unit_tests/sources/declarative/concurrency_level/test_concurrency_level.py @@ -0,0 +1,71 @@ +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. + +from typing import Any, Mapping, Optional, Type, Union + +import pytest +from airbyte_cdk.sources.declarative.concurrency_level import ConcurrencyLevel + + +@pytest.mark.parametrize( + "default_concurrency, max_concurrency, expected_concurrency", + [ + pytest.param(20, 75, 20, id="test_default_concurrency_as_int"), + pytest.param(20, 75, 20, id="test_default_concurrency_as_int_ignores_max_concurrency"), + pytest.param("{{ config['num_workers'] or 40 }}", 75, 50, id="test_default_concurrency_using_interpolation"), + pytest.param("{{ config['missing'] or 40 }}", 75, 40, id="test_default_concurrency_using_interpolation_no_value"), + pytest.param("{{ config['num_workers'] or 40 }}", 10, 10, id="test_use_max_concurrency_if_default_is_too_high"), + ], +) +def test_stream_slices(default_concurrency: Union[int, str], max_concurrency: int, expected_concurrency: int) -> None: + config = {"num_workers": 50} + concurrency_level = ConcurrencyLevel( + default_concurrency=default_concurrency, + max_concurrency=max_concurrency, + config=config, + parameters={} + ) + + actual_concurrency = concurrency_level.get_concurrency_level() + + assert actual_concurrency == expected_concurrency + + +@pytest.mark.parametrize( + "config, expected_concurrency, expected_error", + [ + pytest.param({"num_workers": "fifty five"}, None, ValueError, id="test_invalid_default_concurrency_as_string"), + pytest.param({"num_workers": "55"}, 55, None, id="test_default_concurrency_as_string_int"), + pytest.param({"num_workers": 60}, 60, None, id="test_default_concurrency_as_int"), + ], +) +def test_default_concurrency_input_types_and_errors( + config: Mapping[str, Any], + expected_concurrency: Optional[int], + expected_error: Optional[Type[Exception]], +) -> None: + concurrency_level = ConcurrencyLevel( + default_concurrency="{{ config['num_workers'] or 30 }}", + max_concurrency=65, + config=config, + parameters={} + ) + + if expected_error: + with pytest.raises(expected_error): + concurrency_level.get_concurrency_level() + else: + actual_concurrency = concurrency_level.get_concurrency_level() + + assert actual_concurrency == expected_concurrency + + +def test_max_concurrency_is_required_for_default_concurrency_using_config() -> None: + config = {"num_workers": "50"} + + with pytest.raises(ValueError): + ConcurrencyLevel( + default_concurrency="{{ config['num_workers'] or 40 }}", + max_concurrency=None, + config=config, + parameters={} + ) diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py b/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py index ada4f47ec18c5..32e3bdd46eff8 100644 --- a/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py +++ b/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py @@ -19,6 +19,7 @@ ) from airbyte_cdk.sources.declarative.auth.token_provider import SessionTokenProvider from airbyte_cdk.sources.declarative.checks import CheckStream +from airbyte_cdk.sources.declarative.concurrency_level import ConcurrencyLevel from airbyte_cdk.sources.declarative.datetime import MinMaxDatetime from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream from airbyte_cdk.sources.declarative.decoders import JsonDecoder @@ -28,6 +29,7 @@ from airbyte_cdk.sources.declarative.interpolation import InterpolatedString from airbyte_cdk.sources.declarative.models import CheckStream as CheckStreamModel from airbyte_cdk.sources.declarative.models import CompositeErrorHandler as CompositeErrorHandlerModel +from airbyte_cdk.sources.declarative.models import ConcurrencyLevel as ConcurrencyLevelModel from airbyte_cdk.sources.declarative.models import CustomErrorHandler as CustomErrorHandlerModel from airbyte_cdk.sources.declarative.models import CustomPartitionRouter as CustomPartitionRouterModel from airbyte_cdk.sources.declarative.models import CustomSchemaLoader as CustomSchemaLoaderModel @@ -197,6 +199,10 @@ def test_full_config_stream(): check: type: CheckStream stream_names: ["list_stream"] +concurrency_level: + type: ConcurrencyLevel + default_concurrency: "{{ config['num_workers'] or 10 }}" + max_concurrency: 25 spec: type: Spec documentation_url: https://airbyte.com/#yaml-from-manifest @@ -311,6 +317,14 @@ def test_full_config_stream(): advanced_auth = spec.advanced_auth assert advanced_auth.auth_flow_type.value == "oauth2.0" + concurrency_level = factory.create_component( + model_type=ConcurrencyLevelModel, component_definition=manifest["concurrency_level"], config=input_config + ) + assert isinstance(concurrency_level, ConcurrencyLevel) + assert isinstance(concurrency_level._default_concurrency, InterpolatedString) + assert concurrency_level._default_concurrency.string == "{{ config['num_workers'] or 10 }}" + assert concurrency_level.max_concurrency == 25 + def test_interpolate_config(): content = """ From 39b32b33a690577a64fa8bd5e68d2ebe313f9acb Mon Sep 17 00:00:00 2001 From: Edward Gao Date: Tue, 8 Oct 2024 14:12:35 -0700 Subject: [PATCH 193/379] Bulk CDK: Rename stuff to prevent conflicts (#46650) --- .../{AirbyteType.kt => AirbyteSchemaType.kt} | 12 +- .../cdk/discover/AirbyteStreamFactory.kt | 2 +- .../kotlin/io/airbyte/cdk/discover/Field.kt | 13 +- .../output/CatalogValidationFailureHandler.kt | 6 +- .../airbyte/cdk/read/StateManagerFactory.kt | 48 +++--- .../io/airbyte/cdk/discover/IntFieldType.kt | 6 +- .../cdk/discover/OffsetDateTimeFieldType.kt | 7 +- .../airbyte/cdk/discover/StringFieldType.kt | 6 +- .../cdk/discover/TestAirbyteStreamFactory.kt | 2 +- .../MockBasicFunctionalityIntegrationTest.kt | 10 +- .../MockDestinationBackend.kt | 6 +- .../MockDestinationChecker.kt | 4 +- .../MockDestinationConfiguration.kt | 6 +- .../MockDestinationWriter.kt | 18 +-- .../cdk/{ => load}/check/CheckOperation.kt | 6 +- .../{ => load}/check/DestinationChecker.kt | 4 +- .../{ => load}/command/DestinationCatalog.kt | 2 +- .../command/DestinationConfiguration.kt | 5 +- .../DestinationConfigurationFactory.kt | 3 +- .../{ => load}/command/DestinationStream.kt | 8 +- .../cdk/{ => load}/data/AirbyteType.kt | 2 +- .../data/AirbyteTypeToJsonSchema.kt | 2 +- .../cdk/{ => load}/data/AirbyteValue.kt | 2 +- .../cdk/{ => load}/data/AirbyteValueToJson.kt | 2 +- .../data/JsonSchemaToAirbyteType.kt | 2 +- .../cdk/{ => load}/data/JsonToAirbyteValue.kt | 2 +- .../airbyte/cdk/{ => load}/file/LocalFile.kt | 2 +- .../cdk/{ => load}/file/TempFileProvider.kt | 2 +- .../cdk/{ => load}/file/TimeProvider.kt | 2 +- .../airbyte/cdk/{ => load}/message/Batch.kt | 4 +- .../{ => load}/message/DestinationMessage.kt | 18 +-- .../message/DestinationMessageDeserializer.kt | 2 +- .../message/DestinationMessageQueues.kt | 10 +- .../cdk/{ => load}/message/MessageQueue.kt | 4 +- .../spec/DestinationSpecificationInternal.kt | 4 +- .../cdk/{ => load}/state/CheckpointManager.kt | 12 +- .../cdk/{ => load}/state/FlushStrategy.kt | 10 +- .../cdk/{ => load}/state/MemoryManager.kt | 4 +- .../cdk/{ => load}/state/StreamManager.kt | 8 +- .../cdk/{ => load}/state/SyncManager.kt | 8 +- .../task/DestinationTaskExceptionHandler.kt | 16 +- .../task/DestinationTaskLauncher.kt | 36 ++--- .../task/DestinationTaskScopeProvider.kt | 4 +- .../io/airbyte/cdk/{ => load}/task/Task.kt | 4 +- .../task/implementor/CloseStreamTask.kt | 14 +- .../task/implementor/FailStreamTask.kt | 12 +- .../task/implementor/FailSyncTask.kt | 12 +- .../task/implementor/OpenStreamTask.kt | 16 +- .../task/implementor/ProcessBatchTask.kt | 16 +- .../task/implementor/ProcessRecordsTask.kt | 30 ++-- .../{ => load}/task/implementor/SetupTask.kt | 10 +- .../task/implementor/TeardownTask.kt | 12 +- .../task/internal/FlushCheckpointsTask.kt | 8 +- .../task/internal/InputConsumerTask.kt | 56 +++---- .../task/internal/SpillToDiskTask.kt | 38 ++--- .../TimedForcedCheckpointFlushTask.kt | 18 +-- .../task/internal/UpdateCheckpointsTask.kt | 20 +-- .../cdk/{ => load}/util/CoroutineUtils.kt | 2 +- .../airbyte/cdk/{ => load}/util/RangeUtils.kt | 2 +- .../cdk/{ => load}/write/DestinationWriter.kt | 6 +- .../cdk/{ => load}/write/StreamLoader.kt | 12 +- .../cdk/{ => load}/write/WriteOperation.kt | 10 +- .../command/DestinationCatalogTest.kt | 2 +- .../command/MockDestinationCatalogFactory.kt | 10 +- .../command/MockDestinationConfiguration.kt | 2 +- .../AirbyteSchemaTypeToJsonSchemaTest.kt} | 4 +- .../{ => load}/data/AirbyteValueToJsonTest.kt | 2 +- .../JsonSchemaToAirbyteSchemaTypeTest.kt} | 4 +- .../{ => load}/data/JsonToAirbyteValueTest.kt | 2 +- .../{ => load}/file/MockTempFileProvider.kt | 2 +- .../cdk/{ => load}/file/MockTimeProvider.kt | 2 +- .../message/DestinationMessageTest.kt | 18 +-- .../{ => load}/state/CheckpointManagerTest.kt | 18 +-- .../state/DefaultFlushStrategyTest.kt | 12 +- .../cdk/{ => load}/state/MemoryManagerTest.kt | 2 +- .../{ => load}/state/MockCheckpointManager.kt | 8 +- .../cdk/{ => load}/state/StreamManagerTest.kt | 14 +- .../cdk/{ => load}/state/SyncManagerTest.kt | 10 +- .../cdk/{ => load}/state/SyncManagerUtils.kt | 10 +- .../DestinationTaskExceptionHandlerTest.kt | 34 ++--- .../task/DestinationTaskLauncherTest.kt | 96 ++++++------ .../cdk/{ => load}/task/MockScopeProvider.kt | 2 +- .../cdk/{ => load}/task/MockTaskLauncher.kt | 8 +- .../implementor/ProcessRecordsTaskTest.kt | 34 ++--- .../task/internal/InputConsumerTaskTest.kt | 141 +++++++++++------- .../ReservingDeserializingInputFlowTest.kt | 8 +- .../task/internal/SpillToDiskTaskTest.kt | 40 ++--- .../TimedForcedCheckpointFlushTaskTest.kt | 14 +- .../test/util/CoroutineTestUtils.kt | 2 +- .../{ => load}/test/util/RecordDifferTest.kt | 2 +- .../check/CheckIntegrationTest.kt | 12 +- .../cdk/{test => load}/spec/SpecTest.kt | 21 ++- .../test/util/DestinationCleaner.kt | 2 +- .../test/util/DestinationDataDumper.kt | 2 +- .../test/util/ExpectedRecordMapper.kt | 2 +- .../{ => load}/test/util/IntegrationTest.kt | 10 +- .../cdk/{ => load}/test/util/NameMapper.kt | 2 +- .../cdk/{ => load}/test/util/OutputRecord.kt | 6 +- .../cdk/{ => load}/test/util/RecordDiffer.kt | 10 +- .../destination_process/DestinationProcess.kt | 2 +- .../DockerizedDestination.kt | 2 +- .../NonDockerizedDestination.kt | 2 +- .../BasicFunctionalityIntegrationTest.kt | 45 +++--- .../cdk/discover/JdbcAirbyteStreamFactory.kt | 2 +- .../io/airbyte/cdk/jdbc/JdbcFieldTypes.kt | 79 +++++----- .../destination-dev-null/metadata.yaml | 2 +- .../destination/dev_null/DevNullChecker.kt | 2 +- .../dev_null/DevNullConfiguration.kt | 4 +- .../dev_null/DevNullSpecification.kt | 2 +- .../destination/dev_null/DevNullWriter.kt | 12 +- ...evNullBasicFunctionalityIntegrationTest.kt | 6 +- .../dev_null/DevNullCheckIntegrationTest.kt | 6 +- .../dev_null/DevNullDestinationDataDumper.kt | 4 +- .../destination/dev_null/DevNullSpecTest.kt | 2 +- .../connectors/source-mysql-v2/metadata.yaml | 2 +- .../source/mysql/MysqlJdbcStreamFactory.kt | 2 +- .../MysqlSourceDatatypeIntegrationTest.kt | 134 ++++++++++++----- docs/integrations/destinations/dev-null.md | 1 + spotbugs-exclude-filter-file.xml | 2 +- 119 files changed, 818 insertions(+), 695 deletions(-) rename airbyte-cdk/bulk/core/base/src/main/kotlin/io/airbyte/cdk/data/{AirbyteType.kt => AirbyteSchemaType.kt} (90%) rename airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/{ => load}/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt (53%) rename airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/{ => load}/mock_integration_test/MockDestinationBackend.kt (84%) rename airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/{ => load}/mock_integration_test/MockDestinationChecker.kt (71%) rename airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/{ => load}/mock_integration_test/MockDestinationConfiguration.kt (83%) rename airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/{ => load}/mock_integration_test/MockDestinationWriter.kt (82%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/check/CheckOperation.kt (92%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/check/DestinationChecker.kt (89%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/command/DestinationCatalog.kt (97%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/command/DestinationConfiguration.kt (90%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/command/DestinationConfigurationFactory.kt (87%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/command/DestinationStream.kt (95%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/data/AirbyteType.kt (96%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/data/AirbyteTypeToJsonSchema.kt (98%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/data/AirbyteValue.kt (99%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/data/AirbyteValueToJson.kt (97%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/data/JsonSchemaToAirbyteType.kt (99%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/data/JsonToAirbyteValue.kt (99%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/file/LocalFile.kt (97%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/file/TempFileProvider.kt (94%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/file/TimeProvider.kt (93%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/message/Batch.kt (97%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/message/DestinationMessage.kt (96%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/message/DestinationMessageDeserializer.kt (96%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/message/DestinationMessageQueues.kt (91%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/message/MessageQueue.kt (91%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/spec/DestinationSpecificationInternal.kt (86%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/state/CheckpointManager.kt (97%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/state/FlushStrategy.kt (87%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/state/MemoryManager.kt (97%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/state/StreamManager.kt (97%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/state/SyncManager.kt (95%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/DestinationTaskExceptionHandler.kt (92%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/DestinationTaskLauncher.kt (87%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/DestinationTaskScopeProvider.kt (97%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/Task.kt (89%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/implementor/CloseStreamTask.kt (79%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/implementor/FailStreamTask.kt (89%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/implementor/FailSyncTask.kt (85%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/implementor/OpenStreamTask.kt (78%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/implementor/ProcessBatchTask.kt (78%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/implementor/ProcessRecordsTask.kt (81%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/implementor/SetupTask.kt (80%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/implementor/TeardownTask.kt (88%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/internal/FlushCheckpointsTask.kt (81%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/internal/InputConsumerTask.kt (83%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/internal/SpillToDiskTask.kt (81%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/internal/TimedForcedCheckpointFlushTask.kt (84%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/task/internal/UpdateCheckpointsTask.kt (72%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/util/CoroutineUtils.kt (95%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/util/RangeUtils.kt (93%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/write/DestinationWriter.kt (89%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/write/StreamLoader.kt (84%) rename airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/{ => load}/write/WriteOperation.kt (87%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/command/DestinationCatalogTest.kt (98%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/command/MockDestinationCatalogFactory.kt (92%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/command/MockDestinationConfiguration.kt (95%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{data/AirbyteTypeToJsonSchemaTest.kt => load/data/AirbyteSchemaTypeToJsonSchemaTest.kt} (98%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/data/AirbyteValueToJsonTest.kt (99%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{data/JsonSchemaToAirbyteTypeTest.kt => load/data/JsonSchemaToAirbyteSchemaTypeTest.kt} (99%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/data/JsonToAirbyteValueTest.kt (99%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/file/MockTempFileProvider.kt (98%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/file/MockTimeProvider.kt (95%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/message/DestinationMessageTest.kt (95%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/state/CheckpointManagerTest.kt (98%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/state/DefaultFlushStrategyTest.kt (91%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/state/MemoryManagerTest.kt (99%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/state/MockCheckpointManager.kt (90%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/state/StreamManagerTest.kt (96%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/state/SyncManagerTest.kt (93%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/state/SyncManagerUtils.kt (75%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/DestinationTaskExceptionHandlerTest.kt (87%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/DestinationTaskLauncherTest.kt (81%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/MockScopeProvider.kt (94%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/MockTaskLauncher.kt (86%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/implementor/ProcessRecordsTaskTest.kt (79%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/internal/InputConsumerTaskTest.kt (65%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/internal/ReservingDeserializingInputFlowTest.kt (94%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/internal/SpillToDiskTaskTest.kt (77%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/task/internal/TimedForcedCheckpointFlushTaskTest.kt (89%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/test/util/CoroutineTestUtils.kt (95%) rename airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/{ => load}/test/util/RecordDifferTest.kt (99%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{test => load}/check/CheckIntegrationTest.kt (91%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{test => load}/spec/SpecTest.kt (83%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/DestinationCleaner.kt (91%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/DestinationDataDumper.kt (93%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/ExpectedRecordMapper.kt (89%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/IntegrationTest.kt (95%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/NameMapper.kt (94%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/OutputRecord.kt (93%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/RecordDiffer.kt (98%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/destination_process/DestinationProcess.kt (96%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/destination_process/DockerizedDestination.kt (97%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{ => load}/test/util/destination_process/NonDockerizedDestination.kt (98%) rename airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/{test => load}/write/BasicFunctionalityIntegrationTest.kt (76%) diff --git a/airbyte-cdk/bulk/core/base/src/main/kotlin/io/airbyte/cdk/data/AirbyteType.kt b/airbyte-cdk/bulk/core/base/src/main/kotlin/io/airbyte/cdk/data/AirbyteSchemaType.kt similarity index 90% rename from airbyte-cdk/bulk/core/base/src/main/kotlin/io/airbyte/cdk/data/AirbyteType.kt rename to airbyte-cdk/bulk/core/base/src/main/kotlin/io/airbyte/cdk/data/AirbyteSchemaType.kt index e74a74d07bf22..ed7c9426529b1 100644 --- a/airbyte-cdk/bulk/core/base/src/main/kotlin/io/airbyte/cdk/data/AirbyteType.kt +++ b/airbyte-cdk/bulk/core/base/src/main/kotlin/io/airbyte/cdk/data/AirbyteSchemaType.kt @@ -12,7 +12,7 @@ import io.airbyte.protocol.models.JsonSchemaType * This maps to the subset of [JsonSchemaType] which is used in practice. Its main reason for * existing is to provide type-safety and convenient comparisons and string representations. */ -sealed interface AirbyteType { +sealed interface AirbyteSchemaType { /** Unwraps the underlying Airbyte protocol type object. */ fun asJsonSchemaType(): JsonSchemaType @@ -20,18 +20,18 @@ sealed interface AirbyteType { fun asJsonSchema(): JsonNode = Jsons.valueToTree(asJsonSchemaType().jsonSchemaTypeMap) } -data class ArrayAirbyteType( - val item: AirbyteType, -) : AirbyteType { +data class ArrayAirbyteSchemaType( + val item: AirbyteSchemaType, +) : AirbyteSchemaType { override fun asJsonSchemaType(): JsonSchemaType = JsonSchemaType.builder(JsonSchemaPrimitiveUtil.JsonSchemaPrimitive.ARRAY) .withItems(item.asJsonSchemaType()) .build() } -enum class LeafAirbyteType( +enum class LeafAirbyteSchemaType( private val jsonSchemaType: JsonSchemaType, -) : AirbyteType { +) : AirbyteSchemaType { BOOLEAN(JsonSchemaType.BOOLEAN), STRING(JsonSchemaType.STRING), BINARY(JsonSchemaType.STRING_BASE_64), diff --git a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/discover/AirbyteStreamFactory.kt b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/discover/AirbyteStreamFactory.kt index 4dd2b568225ad..b238524f4e96a 100644 --- a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/discover/AirbyteStreamFactory.kt +++ b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/discover/AirbyteStreamFactory.kt @@ -20,7 +20,7 @@ interface AirbyteStreamFactory { discoveredStream.id.name, discoveredStream.id.namespace, discoveredStream.columns.map { - AirbyteField.of(it.id, it.type.airbyteType.asJsonSchemaType()) + AirbyteField.of(it.id, it.type.airbyteSchemaType.asJsonSchemaType()) }, ) } diff --git a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/discover/Field.kt b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/discover/Field.kt index 364c32b43bada..5eec0d556a5b4 100644 --- a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/discover/Field.kt +++ b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/discover/Field.kt @@ -1,12 +1,12 @@ /* Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ package io.airbyte.cdk.discover -import io.airbyte.cdk.data.AirbyteType +import io.airbyte.cdk.data.AirbyteSchemaType import io.airbyte.cdk.data.IntCodec import io.airbyte.cdk.data.JsonDecoder import io.airbyte.cdk.data.JsonEncoder import io.airbyte.cdk.data.JsonStringCodec -import io.airbyte.cdk.data.LeafAirbyteType +import io.airbyte.cdk.data.LeafAirbyteSchemaType import io.airbyte.cdk.data.OffsetDateTimeCodec import java.time.OffsetDateTime @@ -23,7 +23,7 @@ sealed interface FieldOrMetaField { */ interface FieldType { /** maps to [io.airbyte.protocol.models.Field.type] */ - val airbyteType: AirbyteType + val airbyteSchemaType: AirbyteSchemaType val jsonEncoder: JsonEncoder<*> } @@ -73,19 +73,20 @@ enum class CommonMetaField( } data object CdcStringMetaFieldType : LosslessFieldType { - override val airbyteType: AirbyteType = LeafAirbyteType.STRING + override val airbyteSchemaType: AirbyteSchemaType = LeafAirbyteSchemaType.STRING override val jsonEncoder: JsonEncoder = JsonStringCodec override val jsonDecoder: JsonDecoder = JsonStringCodec } data object CdcIntegerMetaFieldType : LosslessFieldType { - override val airbyteType: AirbyteType = LeafAirbyteType.INTEGER + override val airbyteSchemaType: AirbyteSchemaType = LeafAirbyteSchemaType.INTEGER override val jsonEncoder: JsonEncoder = IntCodec override val jsonDecoder: JsonDecoder = IntCodec } data object CdcOffsetDateTimeMetaFieldType : LosslessFieldType { - override val airbyteType: AirbyteType = LeafAirbyteType.TIMESTAMP_WITH_TIMEZONE + override val airbyteSchemaType: AirbyteSchemaType = + LeafAirbyteSchemaType.TIMESTAMP_WITH_TIMEZONE override val jsonEncoder: JsonEncoder = OffsetDateTimeCodec override val jsonDecoder: JsonDecoder = OffsetDateTimeCodec } diff --git a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/output/CatalogValidationFailureHandler.kt b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/output/CatalogValidationFailureHandler.kt index 5771b07934d28..61e30795488b0 100644 --- a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/output/CatalogValidationFailureHandler.kt +++ b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/output/CatalogValidationFailureHandler.kt @@ -2,7 +2,7 @@ package io.airbyte.cdk.output import io.airbyte.cdk.StreamIdentifier -import io.airbyte.cdk.data.AirbyteType +import io.airbyte.cdk.data.AirbyteSchemaType import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.DefaultImplementation import jakarta.inject.Singleton @@ -43,8 +43,8 @@ data class FieldNotFound( data class FieldTypeMismatch( override val streamID: StreamIdentifier, val fieldName: String, - val expected: AirbyteType, - val actual: AirbyteType, + val expected: AirbyteSchemaType, + val actual: AirbyteSchemaType, ) : CatalogValidationFailure data class InvalidPrimaryKey( diff --git a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StateManagerFactory.kt b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StateManagerFactory.kt index c142c92d307a9..95140bcc9724b 100644 --- a/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StateManagerFactory.kt +++ b/airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StateManagerFactory.kt @@ -10,9 +10,9 @@ import io.airbyte.cdk.command.GlobalInputState import io.airbyte.cdk.command.InputState import io.airbyte.cdk.command.SourceConfiguration import io.airbyte.cdk.command.StreamInputState -import io.airbyte.cdk.data.AirbyteType -import io.airbyte.cdk.data.ArrayAirbyteType -import io.airbyte.cdk.data.LeafAirbyteType +import io.airbyte.cdk.data.AirbyteSchemaType +import io.airbyte.cdk.data.ArrayAirbyteSchemaType +import io.airbyte.cdk.data.LeafAirbyteSchemaType import io.airbyte.cdk.discover.CommonMetaField import io.airbyte.cdk.discover.Field import io.airbyte.cdk.discover.FieldOrMetaField @@ -132,7 +132,7 @@ class StateManagerFactory( } } - val expectedSchema: Map = + val expectedSchema: Map = jsonSchemaProperties.properties().associate { (id: String, schema: JsonNode) -> id to airbyteTypeFromJsonSchema(schema) } @@ -150,15 +150,15 @@ class StateManagerFactory( handler.accept(FieldNotFound(streamID, id)) return null } - val expectedAirbyteType: AirbyteType = expectedSchema[id] ?: return null - val actualAirbyteType: AirbyteType = actualColumn.type.airbyteType - if (expectedAirbyteType != actualAirbyteType) { + val expectedAirbyteSchemaType: AirbyteSchemaType = expectedSchema[id] ?: return null + val actualAirbyteSchemaType: AirbyteSchemaType = actualColumn.type.airbyteSchemaType + if (expectedAirbyteSchemaType != actualAirbyteSchemaType) { handler.accept( FieldTypeMismatch( streamID, id, - expectedAirbyteType, - actualAirbyteType, + expectedAirbyteSchemaType, + actualAirbyteSchemaType, ), ) return null @@ -229,44 +229,44 @@ class StateManagerFactory( } /** - * Recursively re-generates the original [AirbyteType] from a catalog stream field's JSON + * Recursively re-generates the original [AirbyteSchemaType] from a catalog stream field's JSON * schema. */ - private fun airbyteTypeFromJsonSchema(jsonSchema: JsonNode): AirbyteType { + private fun airbyteTypeFromJsonSchema(jsonSchema: JsonNode): AirbyteSchemaType { fun value(key: String): String = jsonSchema[key]?.asText() ?: "" return when (value("type")) { - "array" -> ArrayAirbyteType(airbyteTypeFromJsonSchema(jsonSchema["items"])) - "null" -> LeafAirbyteType.NULL - "boolean" -> LeafAirbyteType.BOOLEAN + "array" -> ArrayAirbyteSchemaType(airbyteTypeFromJsonSchema(jsonSchema["items"])) + "null" -> LeafAirbyteSchemaType.NULL + "boolean" -> LeafAirbyteSchemaType.BOOLEAN "number" -> when (value("airbyte_type")) { "integer", - "big_integer", -> LeafAirbyteType.INTEGER - else -> LeafAirbyteType.NUMBER + "big_integer", -> LeafAirbyteSchemaType.INTEGER + else -> LeafAirbyteSchemaType.NUMBER } "string" -> when (value("format")) { - "date" -> LeafAirbyteType.DATE + "date" -> LeafAirbyteSchemaType.DATE "date-time" -> if (value("airbyte_type") == "timestamp_with_timezone") { - LeafAirbyteType.TIMESTAMP_WITH_TIMEZONE + LeafAirbyteSchemaType.TIMESTAMP_WITH_TIMEZONE } else { - LeafAirbyteType.TIMESTAMP_WITHOUT_TIMEZONE + LeafAirbyteSchemaType.TIMESTAMP_WITHOUT_TIMEZONE } "time" -> if (value("airbyte_type") == "time_with_timezone") { - LeafAirbyteType.TIME_WITH_TIMEZONE + LeafAirbyteSchemaType.TIME_WITH_TIMEZONE } else { - LeafAirbyteType.TIME_WITHOUT_TIMEZONE + LeafAirbyteSchemaType.TIME_WITHOUT_TIMEZONE } else -> if (value("contentEncoding") == "base64") { - LeafAirbyteType.BINARY + LeafAirbyteSchemaType.BINARY } else { - LeafAirbyteType.STRING + LeafAirbyteSchemaType.STRING } } - else -> LeafAirbyteType.JSONB + else -> LeafAirbyteSchemaType.JSONB } } } diff --git a/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/IntFieldType.kt b/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/IntFieldType.kt index 821082136bd26..c1bf7c442f9ef 100644 --- a/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/IntFieldType.kt +++ b/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/IntFieldType.kt @@ -4,12 +4,12 @@ package io.airbyte.cdk.discover -import io.airbyte.cdk.data.AirbyteType +import io.airbyte.cdk.data.AirbyteSchemaType import io.airbyte.cdk.data.IntCodec import io.airbyte.cdk.data.JsonEncoder -import io.airbyte.cdk.data.LeafAirbyteType +import io.airbyte.cdk.data.LeafAirbyteSchemaType data object IntFieldType : FieldType { - override val airbyteType: AirbyteType = LeafAirbyteType.INTEGER + override val airbyteSchemaType: AirbyteSchemaType = LeafAirbyteSchemaType.INTEGER override val jsonEncoder: JsonEncoder<*> = IntCodec } diff --git a/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/OffsetDateTimeFieldType.kt b/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/OffsetDateTimeFieldType.kt index ecf3c2035395b..fc25e61939fe6 100644 --- a/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/OffsetDateTimeFieldType.kt +++ b/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/OffsetDateTimeFieldType.kt @@ -4,12 +4,13 @@ package io.airbyte.cdk.discover -import io.airbyte.cdk.data.AirbyteType +import io.airbyte.cdk.data.AirbyteSchemaType import io.airbyte.cdk.data.JsonEncoder -import io.airbyte.cdk.data.LeafAirbyteType +import io.airbyte.cdk.data.LeafAirbyteSchemaType import io.airbyte.cdk.data.OffsetDateTimeCodec data object OffsetDateTimeFieldType : FieldType { - override val airbyteType: AirbyteType = LeafAirbyteType.TIMESTAMP_WITH_TIMEZONE + override val airbyteSchemaType: AirbyteSchemaType = + LeafAirbyteSchemaType.TIMESTAMP_WITH_TIMEZONE override val jsonEncoder: JsonEncoder<*> = OffsetDateTimeCodec } diff --git a/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/StringFieldType.kt b/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/StringFieldType.kt index 8f1d386cf2ef2..e5097c873e23a 100644 --- a/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/StringFieldType.kt +++ b/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/StringFieldType.kt @@ -4,12 +4,12 @@ package io.airbyte.cdk.discover -import io.airbyte.cdk.data.AirbyteType +import io.airbyte.cdk.data.AirbyteSchemaType import io.airbyte.cdk.data.JsonEncoder -import io.airbyte.cdk.data.LeafAirbyteType +import io.airbyte.cdk.data.LeafAirbyteSchemaType import io.airbyte.cdk.data.TextCodec data object StringFieldType : FieldType { - override val airbyteType: AirbyteType = LeafAirbyteType.STRING + override val airbyteSchemaType: AirbyteSchemaType = LeafAirbyteSchemaType.STRING override val jsonEncoder: JsonEncoder<*> = TextCodec } diff --git a/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/TestAirbyteStreamFactory.kt b/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/TestAirbyteStreamFactory.kt index 5b84e88c2faa9..c7d9c566460a8 100644 --- a/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/TestAirbyteStreamFactory.kt +++ b/airbyte-cdk/bulk/core/extract/src/testFixtures/kotlin/io/airbyte/cdk/discover/TestAirbyteStreamFactory.kt @@ -21,7 +21,7 @@ class TestAirbyteStreamFactory : AirbyteStreamFactory { supportedSyncModes = listOf(SyncMode.FULL_REFRESH, SyncMode.INCREMENTAL) (jsonSchema["properties"] as ObjectNode).apply { for (metaField in CommonMetaField.entries) { - set(metaField.id, metaField.type.airbyteType.asJsonSchema()) + set(metaField.id, metaField.type.airbyteSchemaType.asJsonSchema()) } } defaultCursorField = listOf(CommonMetaField.CDC_LSN.id) diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt similarity index 53% rename from airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt rename to airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt index 0513c31bdf093..ba8f1a8e315e6 100644 --- a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.mock_integration_test +package io.airbyte.cdk.load.mock_integration_test -import io.airbyte.cdk.test.util.NoopDestinationCleaner -import io.airbyte.cdk.test.util.NoopExpectedRecordMapper -import io.airbyte.cdk.test.util.NoopNameMapper -import io.airbyte.cdk.test.write.BasicFunctionalityIntegrationTest +import io.airbyte.cdk.load.test.util.NoopDestinationCleaner +import io.airbyte.cdk.load.test.util.NoopExpectedRecordMapper +import io.airbyte.cdk.load.test.util.NoopNameMapper +import io.airbyte.cdk.load.write.BasicFunctionalityIntegrationTest class MockBasicFunctionalityIntegrationTest : BasicFunctionalityIntegrationTest( diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationBackend.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationBackend.kt similarity index 84% rename from airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationBackend.kt rename to airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationBackend.kt index 99353873200fe..fb7720bac2fc0 100644 --- a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationBackend.kt +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationBackend.kt @@ -2,10 +2,10 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.mock_integration_test +package io.airbyte.cdk.load.mock_integration_test -import io.airbyte.cdk.test.util.DestinationDataDumper -import io.airbyte.cdk.test.util.OutputRecord +import io.airbyte.cdk.load.test.util.DestinationDataDumper +import io.airbyte.cdk.load.test.util.OutputRecord import java.util.concurrent.ConcurrentHashMap object MockDestinationBackend { diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationChecker.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationChecker.kt similarity index 71% rename from airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationChecker.kt rename to airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationChecker.kt index 824e880dc134f..9972357704dbd 100644 --- a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationChecker.kt +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationChecker.kt @@ -2,9 +2,9 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.mock_integration_test +package io.airbyte.cdk.load.mock_integration_test -import io.airbyte.cdk.check.DestinationChecker +import io.airbyte.cdk.load.check.DestinationChecker import javax.inject.Singleton @Singleton diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationConfiguration.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationConfiguration.kt similarity index 83% rename from airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationConfiguration.kt rename to airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationConfiguration.kt index ac92cf54aba6d..c582e5e463dfb 100644 --- a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationConfiguration.kt +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationConfiguration.kt @@ -2,11 +2,11 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.mock_integration_test +package io.airbyte.cdk.load.mock_integration_test import io.airbyte.cdk.command.ConfigurationSpecification -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationConfigurationFactory +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationConfigurationFactory import io.micronaut.context.annotation.Factory import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationWriter.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationWriter.kt similarity index 82% rename from airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationWriter.kt rename to airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationWriter.kt index 7b8c5c4522f6c..c49115cb2c1f1 100644 --- a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/mock_integration_test/MockDestinationWriter.kt +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockDestinationWriter.kt @@ -2,16 +2,16 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.mock_integration_test +package io.airbyte.cdk.load.mock_integration_test -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.data.ObjectValue -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.SimpleBatch -import io.airbyte.cdk.test.util.OutputRecord -import io.airbyte.cdk.write.DestinationWriter -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.data.ObjectValue +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.SimpleBatch +import io.airbyte.cdk.load.test.util.OutputRecord +import io.airbyte.cdk.load.write.DestinationWriter +import io.airbyte.cdk.load.write.StreamLoader import java.time.Instant import java.util.UUID import javax.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/check/CheckOperation.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/check/CheckOperation.kt similarity index 92% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/check/CheckOperation.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/check/CheckOperation.kt index eae3f262a7899..86b1c6a1befb5 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/check/CheckOperation.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/check/CheckOperation.kt @@ -2,13 +2,13 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.check +package io.airbyte.cdk.load.check import io.airbyte.cdk.Operation import io.airbyte.cdk.command.ConfigurationSpecification import io.airbyte.cdk.command.ConfigurationSpecificationSupplier -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationConfigurationFactory +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationConfigurationFactory import io.airbyte.cdk.output.ExceptionHandler import io.airbyte.cdk.output.OutputConsumer import io.airbyte.protocol.models.v0.AirbyteConnectionStatus diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/check/DestinationChecker.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/check/DestinationChecker.kt similarity index 89% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/check/DestinationChecker.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/check/DestinationChecker.kt index d3dffe060154a..bbe65d621e8ab 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/check/DestinationChecker.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/check/DestinationChecker.kt @@ -2,9 +2,9 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.check +package io.airbyte.cdk.load.check -import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationConfiguration /** * A check operation that is run before the destination is used. diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationCatalog.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationCatalog.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationCatalog.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationCatalog.kt index 9bf46fd67c0de..b771893960aa4 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationCatalog.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationCatalog.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.command +package io.airbyte.cdk.load.command import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog import io.micronaut.context.annotation.Factory diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationConfiguration.kt similarity index 90% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationConfiguration.kt index d7cc1a4f38786..8efb51666485a 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfiguration.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationConfiguration.kt @@ -2,8 +2,11 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.command +package io.airbyte.cdk.load.command +import io.airbyte.cdk.command.Configuration +import io.airbyte.cdk.command.ConfigurationSpecification +import io.airbyte.cdk.command.ConfigurationSpecificationSupplier import io.micronaut.context.annotation.Factory import jakarta.inject.Singleton import java.nio.file.Path diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfigurationFactory.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationConfigurationFactory.kt similarity index 87% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfigurationFactory.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationConfigurationFactory.kt index 937635acfdbc9..3dbf9e5999e3d 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationConfigurationFactory.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationConfigurationFactory.kt @@ -2,9 +2,10 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.command +package io.airbyte.cdk.load.command import io.airbyte.cdk.ConfigErrorException +import io.airbyte.cdk.command.ConfigurationSpecification interface DestinationConfigurationFactory< I : ConfigurationSpecification, O : DestinationConfiguration> { diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationStream.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationStream.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationStream.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationStream.kt index cf48050cc4ff2..83fedeb2d95c8 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/command/DestinationStream.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/command/DestinationStream.kt @@ -2,11 +2,11 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.command +package io.airbyte.cdk.load.command -import io.airbyte.cdk.data.AirbyteType -import io.airbyte.cdk.data.AirbyteTypeToJsonSchema -import io.airbyte.cdk.data.JsonSchemaToAirbyteType +import io.airbyte.cdk.load.data.AirbyteType +import io.airbyte.cdk.load.data.AirbyteTypeToJsonSchema +import io.airbyte.cdk.load.data.JsonSchemaToAirbyteType import io.airbyte.protocol.models.v0.AirbyteStream import io.airbyte.protocol.models.v0.ConfiguredAirbyteStream import io.airbyte.protocol.models.v0.DestinationSyncMode diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteType.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteType.kt similarity index 96% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteType.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteType.kt index 8824d1699f030..7d0ff0ec224c5 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteType.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteType.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data sealed interface AirbyteType diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteTypeToJsonSchema.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteTypeToJsonSchema.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteTypeToJsonSchema.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteTypeToJsonSchema.kt index 7fa89feba4474..93f2c5b2aa06e 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteTypeToJsonSchema.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteTypeToJsonSchema.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.node.JsonNodeFactory diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteValue.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteValue.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteValue.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteValue.kt index 4f6040bc599ee..fe8215ddb09f4 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteValue.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteValue.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import java.math.BigDecimal import java.time.LocalDate diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteValueToJson.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteValueToJson.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteValueToJson.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteValueToJson.kt index 2d79157c54a4a..d4e688dbda605 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/AirbyteValueToJson.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/AirbyteValueToJson.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.node.JsonNodeFactory diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/JsonSchemaToAirbyteType.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/JsonSchemaToAirbyteType.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/JsonSchemaToAirbyteType.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/JsonSchemaToAirbyteType.kt index 14ae1967e1df5..b6c67a6ee8a74 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/JsonSchemaToAirbyteType.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/JsonSchemaToAirbyteType.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.node.JsonNodeFactory diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/JsonToAirbyteValue.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/JsonToAirbyteValue.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/JsonToAirbyteValue.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/JsonToAirbyteValue.kt index bcce2ea1e1cc1..a0872b4e493c7 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/data/JsonToAirbyteValue.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/data/JsonToAirbyteValue.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import com.fasterxml.jackson.databind.JsonNode import java.math.BigDecimal diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/LocalFile.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/LocalFile.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/LocalFile.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/LocalFile.kt index 67ced63db7013..0701e350b499b 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/LocalFile.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/LocalFile.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.file +package io.airbyte.cdk.load.file import io.micronaut.context.annotation.DefaultImplementation import java.io.Closeable diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TempFileProvider.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/TempFileProvider.kt similarity index 94% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TempFileProvider.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/TempFileProvider.kt index 0455ec323db3d..cdb0f353cf344 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TempFileProvider.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/TempFileProvider.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.file +package io.airbyte.cdk.load.file import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TimeProvider.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/TimeProvider.kt similarity index 93% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TimeProvider.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/TimeProvider.kt index 9090007b83b48..054bd6074b295 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/file/TimeProvider.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/file/TimeProvider.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.file +package io.airbyte.cdk.load.file import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/Batch.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/Batch.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/Batch.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/Batch.kt index a99b2ad5c3d9c..41e4f38ce7370 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/Batch.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/Batch.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.message +package io.airbyte.cdk.load.message import com.google.common.collect.Range import com.google.common.collect.RangeSet import com.google.common.collect.TreeRangeSet -import io.airbyte.cdk.file.LocalFile +import io.airbyte.cdk.load.file.LocalFile /** * Represents an accumulated batch of records in some stage of processing. diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessage.kt similarity index 96% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessage.kt index 28af91cdd4b3a..2fd484bdb0ab4 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessage.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessage.kt @@ -2,17 +2,17 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.message +package io.airbyte.cdk.load.message import com.fasterxml.jackson.databind.JsonNode -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.data.AirbyteValue -import io.airbyte.cdk.data.AirbyteValueToJson -import io.airbyte.cdk.data.JsonToAirbyteValue -import io.airbyte.cdk.data.ObjectTypeWithoutSchema -import io.airbyte.cdk.message.CheckpointMessage.Checkpoint -import io.airbyte.cdk.message.CheckpointMessage.Stats +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.data.AirbyteValue +import io.airbyte.cdk.load.data.AirbyteValueToJson +import io.airbyte.cdk.load.data.JsonToAirbyteValue +import io.airbyte.cdk.load.data.ObjectTypeWithoutSchema +import io.airbyte.cdk.load.message.CheckpointMessage.Checkpoint +import io.airbyte.cdk.load.message.CheckpointMessage.Stats import io.airbyte.protocol.models.Jsons import io.airbyte.protocol.models.v0.AirbyteGlobalState import io.airbyte.protocol.models.v0.AirbyteMessage diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageDeserializer.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessageDeserializer.kt similarity index 96% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageDeserializer.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessageDeserializer.kt index d052dd388cc33..81a7f5a4fd811 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageDeserializer.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessageDeserializer.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.message +package io.airbyte.cdk.load.message import io.airbyte.cdk.util.Jsons import io.airbyte.protocol.models.v0.AirbyteMessage diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueues.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessageQueues.kt similarity index 91% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueues.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessageQueues.kt index 8043d199c702d..aa9099044b246 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/DestinationMessageQueues.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/DestinationMessageQueues.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.message +package io.airbyte.cdk.load.message -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.state.MemoryManager -import io.airbyte.cdk.state.Reserved +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.state.MemoryManager +import io.airbyte.cdk.load.state.Reserved import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton import java.util.concurrent.ConcurrentHashMap diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/MessageQueue.kt similarity index 91% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/MessageQueue.kt index 7f15270aa8604..2fe9488d03a4b 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/message/MessageQueue.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/message/MessageQueue.kt @@ -2,9 +2,9 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.message +package io.airbyte.cdk.load.message -import io.airbyte.cdk.util.CloseableCoroutine +import io.airbyte.cdk.load.util.CloseableCoroutine import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.receiveAsFlow diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/spec/DestinationSpecificationInternal.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/spec/DestinationSpecificationInternal.kt similarity index 86% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/spec/DestinationSpecificationInternal.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/spec/DestinationSpecificationInternal.kt index 944a05a131f0c..780b4b51681c4 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/spec/DestinationSpecificationInternal.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/spec/DestinationSpecificationInternal.kt @@ -2,8 +2,10 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.spec +package io.airbyte.cdk.load.spec +import io.airbyte.cdk.spec.IdentitySpecificationExtender +import io.airbyte.cdk.spec.SpecificationExtender import io.airbyte.protocol.models.v0.ConnectorSpecification import io.airbyte.protocol.models.v0.DestinationSyncMode import io.micronaut.context.annotation.Replaces diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt index 1b4302ae28336..a945b27271af4 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/CheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt @@ -2,14 +2,14 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import edu.umd.cs.findbugs.annotations.SuppressFBWarnings -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.file.TimeProvider -import io.airbyte.cdk.message.CheckpointMessage -import io.airbyte.cdk.util.use +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.file.TimeProvider +import io.airbyte.cdk.load.message.CheckpointMessage +import io.airbyte.cdk.load.util.use import io.airbyte.protocol.models.v0.AirbyteMessage import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/FlushStrategy.kt similarity index 87% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/FlushStrategy.kt index cc8949aa619b7..a6177ae8d88f6 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/FlushStrategy.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/FlushStrategy.kt @@ -2,14 +2,14 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import com.google.common.collect.Range import edu.umd.cs.findbugs.annotations.SuppressFBWarnings -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.QueueReader -import io.airbyte.cdk.task.internal.ForceFlushEvent +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.QueueReader +import io.airbyte.cdk.load.task.internal.ForceFlushEvent import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton import java.util.concurrent.ConcurrentHashMap diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/MemoryManager.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/MemoryManager.kt index f3c40acf1433d..99ed41d73cefd 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/MemoryManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/MemoryManager.kt @@ -2,9 +2,9 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state -import io.airbyte.cdk.util.CloseableCoroutine +import io.airbyte.cdk.load.util.CloseableCoroutine import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton import java.util.concurrent.atomic.AtomicBoolean diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/StreamManager.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/StreamManager.kt index ee5546a5704f7..3931a60ccdfa5 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/StreamManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/StreamManager.kt @@ -2,14 +2,14 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import com.google.common.collect.Range import com.google.common.collect.RangeSet import com.google.common.collect.TreeRangeSet -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.BatchEnvelope import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/SyncManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/SyncManager.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/SyncManager.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/SyncManager.kt index 431ed0c99837e..2f972f5a6137a 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/state/SyncManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/SyncManager.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import edu.umd.cs.findbugs.annotations.SuppressFBWarnings -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.write.StreamLoader import io.micronaut.context.annotation.Factory import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandler.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskExceptionHandler.kt similarity index 92% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandler.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskExceptionHandler.kt index 889bb51b0798c..0712eb0f34fdb 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandler.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskExceptionHandler.kt @@ -2,16 +2,16 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.load.task import edu.umd.cs.findbugs.annotations.SuppressFBWarnings -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.state.StreamSucceeded -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.state.SyncSuccess -import io.airbyte.cdk.task.implementor.FailStreamTaskFactory -import io.airbyte.cdk.task.implementor.FailSyncTaskFactory +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.state.StreamSucceeded +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.state.SyncSuccess +import io.airbyte.cdk.load.task.implementor.FailStreamTaskFactory +import io.airbyte.cdk.load.task.implementor.FailSyncTaskFactory import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskLauncher.kt similarity index 87% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskLauncher.kt index df989c67c1eaa..efcb9d8ed5066 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskLauncher.kt @@ -2,26 +2,26 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.load.task import edu.umd.cs.findbugs.annotations.SuppressFBWarnings -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.SpilledRawMessagesLocalFile -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.implementor.CloseStreamTaskFactory -import io.airbyte.cdk.task.implementor.OpenStreamTaskFactory -import io.airbyte.cdk.task.implementor.ProcessBatchTaskFactory -import io.airbyte.cdk.task.implementor.ProcessRecordsTaskFactory -import io.airbyte.cdk.task.implementor.SetupTaskFactory -import io.airbyte.cdk.task.implementor.TeardownTaskFactory -import io.airbyte.cdk.task.internal.FlushCheckpointsTaskFactory -import io.airbyte.cdk.task.internal.InputConsumerTask -import io.airbyte.cdk.task.internal.SpillToDiskTaskFactory -import io.airbyte.cdk.task.internal.TimedForcedCheckpointFlushTask -import io.airbyte.cdk.task.internal.UpdateCheckpointsTask +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.SpilledRawMessagesLocalFile +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.implementor.CloseStreamTaskFactory +import io.airbyte.cdk.load.task.implementor.OpenStreamTaskFactory +import io.airbyte.cdk.load.task.implementor.ProcessBatchTaskFactory +import io.airbyte.cdk.load.task.implementor.ProcessRecordsTaskFactory +import io.airbyte.cdk.load.task.implementor.SetupTaskFactory +import io.airbyte.cdk.load.task.implementor.TeardownTaskFactory +import io.airbyte.cdk.load.task.internal.FlushCheckpointsTaskFactory +import io.airbyte.cdk.load.task.internal.InputConsumerTask +import io.airbyte.cdk.load.task.internal.SpillToDiskTaskFactory +import io.airbyte.cdk.load.task.internal.TimedForcedCheckpointFlushTask +import io.airbyte.cdk.load.task.internal.UpdateCheckpointsTask import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskScopeProvider.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskScopeProvider.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskScopeProvider.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskScopeProvider.kt index 39778e2642e82..bdfd7e16a14f6 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/DestinationTaskScopeProvider.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/DestinationTaskScopeProvider.kt @@ -2,9 +2,9 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.load.task -import io.airbyte.cdk.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationConfiguration import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/Task.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/Task.kt similarity index 89% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/Task.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/Task.kt index 53e356eefba6a..df9c6fc1b0e60 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/Task.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/Task.kt @@ -2,9 +2,9 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.load.task -import io.airbyte.cdk.util.CloseableCoroutine +import io.airbyte.cdk.load.util.CloseableCoroutine interface Task { suspend fun execute() diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/CloseStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/CloseStreamTask.kt similarity index 79% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/CloseStreamTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/CloseStreamTask.kt index 20ca9bc7627e3..c99aa8385a8b8 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/CloseStreamTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/CloseStreamTask.kt @@ -2,14 +2,14 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.DestinationTaskLauncher -import io.airbyte.cdk.task.ImplementorTask -import io.airbyte.cdk.task.StreamTask -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.DestinationTaskLauncher +import io.airbyte.cdk.load.task.ImplementorTask +import io.airbyte.cdk.load.task.StreamTask +import io.airbyte.cdk.load.write.StreamLoader import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/FailStreamTask.kt similarity index 89% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailStreamTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/FailStreamTask.kt index 2e7f027734b93..404cdf961f1ed 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailStreamTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/FailStreamTask.kt @@ -2,13 +2,13 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.state.StreamIncompleteResult -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.DestinationTaskExceptionHandler -import io.airbyte.cdk.task.ImplementorTask +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.state.StreamIncompleteResult +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.DestinationTaskExceptionHandler +import io.airbyte.cdk.load.task.ImplementorTask import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailSyncTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/FailSyncTask.kt similarity index 85% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailSyncTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/FailSyncTask.kt index 5cd10ab7f3dea..fb87c84cafed3 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/FailSyncTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/FailSyncTask.kt @@ -2,13 +2,13 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.DestinationTaskExceptionHandler -import io.airbyte.cdk.task.ImplementorTask -import io.airbyte.cdk.util.setOnce -import io.airbyte.cdk.write.DestinationWriter +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.DestinationTaskExceptionHandler +import io.airbyte.cdk.load.task.ImplementorTask +import io.airbyte.cdk.load.util.setOnce +import io.airbyte.cdk.load.write.DestinationWriter import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/OpenStreamTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/OpenStreamTask.kt similarity index 78% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/OpenStreamTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/OpenStreamTask.kt index ce70140b51fac..ba996bcde4366 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/OpenStreamTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/OpenStreamTask.kt @@ -2,15 +2,15 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.DestinationTaskLauncher -import io.airbyte.cdk.task.ImplementorTask -import io.airbyte.cdk.task.StreamTask -import io.airbyte.cdk.write.DestinationWriter -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.DestinationTaskLauncher +import io.airbyte.cdk.load.task.ImplementorTask +import io.airbyte.cdk.load.task.StreamTask +import io.airbyte.cdk.load.write.DestinationWriter +import io.airbyte.cdk.load.write.StreamLoader import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessBatchTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/ProcessBatchTask.kt similarity index 78% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessBatchTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/ProcessBatchTask.kt index 7b319256c3e33..2b959d43ffbe3 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessBatchTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/ProcessBatchTask.kt @@ -2,15 +2,15 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.DestinationTaskLauncher -import io.airbyte.cdk.task.ImplementorTask -import io.airbyte.cdk.task.StreamTask -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.DestinationTaskLauncher +import io.airbyte.cdk.load.task.ImplementorTask +import io.airbyte.cdk.load.task.StreamTask +import io.airbyte.cdk.load.write.StreamLoader import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/ProcessRecordsTask.kt similarity index 81% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/ProcessRecordsTask.kt index d642e6a490008..2ce758b5f3fa0 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/ProcessRecordsTask.kt @@ -2,22 +2,22 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.Deserializer -import io.airbyte.cdk.message.DestinationMessage -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.DestinationStreamAffinedMessage -import io.airbyte.cdk.message.DestinationStreamComplete -import io.airbyte.cdk.message.DestinationStreamIncomplete -import io.airbyte.cdk.message.SpilledRawMessagesLocalFile -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.DestinationTaskLauncher -import io.airbyte.cdk.task.ImplementorTask -import io.airbyte.cdk.task.StreamTask -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.Deserializer +import io.airbyte.cdk.load.message.DestinationMessage +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.DestinationStreamAffinedMessage +import io.airbyte.cdk.load.message.DestinationStreamComplete +import io.airbyte.cdk.load.message.DestinationStreamIncomplete +import io.airbyte.cdk.load.message.SpilledRawMessagesLocalFile +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.DestinationTaskLauncher +import io.airbyte.cdk.load.task.ImplementorTask +import io.airbyte.cdk.load.task.StreamTask +import io.airbyte.cdk.load.write.StreamLoader import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/SetupTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/SetupTask.kt similarity index 80% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/SetupTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/SetupTask.kt index b6a48a4174b99..33d949ea1f9ff 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/SetupTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/SetupTask.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor -import io.airbyte.cdk.task.DestinationTaskLauncher -import io.airbyte.cdk.task.ImplementorTask -import io.airbyte.cdk.task.SyncTask -import io.airbyte.cdk.write.DestinationWriter +import io.airbyte.cdk.load.task.DestinationTaskLauncher +import io.airbyte.cdk.load.task.ImplementorTask +import io.airbyte.cdk.load.task.SyncTask +import io.airbyte.cdk.load.write.DestinationWriter import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/TeardownTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/TeardownTask.kt similarity index 88% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/TeardownTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/TeardownTask.kt index 7455a13eeb391..1a361deb0af5d 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/implementor/TeardownTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/TeardownTask.kt @@ -2,13 +2,13 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor -import io.airbyte.cdk.state.CheckpointManager -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.DestinationTaskLauncher -import io.airbyte.cdk.task.SyncTask -import io.airbyte.cdk.write.DestinationWriter +import io.airbyte.cdk.load.state.CheckpointManager +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.DestinationTaskLauncher +import io.airbyte.cdk.load.task.SyncTask +import io.airbyte.cdk.load.write.DestinationWriter import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/FlushCheckpointsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/FlushCheckpointsTask.kt similarity index 81% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/FlushCheckpointsTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/FlushCheckpointsTask.kt index 9484bcbad0c70..18273d9242f9d 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/FlushCheckpointsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/FlushCheckpointsTask.kt @@ -2,11 +2,11 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal -import io.airbyte.cdk.state.CheckpointManager -import io.airbyte.cdk.task.InternalTask -import io.airbyte.cdk.task.SyncTask +import io.airbyte.cdk.load.state.CheckpointManager +import io.airbyte.cdk.load.task.InternalTask +import io.airbyte.cdk.load.task.SyncTask import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/InputConsumerTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTask.kt similarity index 83% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/InputConsumerTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTask.kt index 249515121cbea..27d2e7f72646c 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/InputConsumerTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTask.kt @@ -2,36 +2,36 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal import edu.umd.cs.findbugs.annotations.SuppressFBWarnings -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.CheckpointMessage -import io.airbyte.cdk.message.CheckpointMessageWrapped -import io.airbyte.cdk.message.Deserializer -import io.airbyte.cdk.message.DestinationMessage -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.DestinationRecordWrapped -import io.airbyte.cdk.message.DestinationStreamAffinedMessage -import io.airbyte.cdk.message.DestinationStreamComplete -import io.airbyte.cdk.message.DestinationStreamIncomplete -import io.airbyte.cdk.message.GlobalCheckpoint -import io.airbyte.cdk.message.GlobalCheckpointWrapped -import io.airbyte.cdk.message.MessageQueueSupplier -import io.airbyte.cdk.message.QueueWriter -import io.airbyte.cdk.message.StreamCheckpoint -import io.airbyte.cdk.message.StreamCheckpointWrapped -import io.airbyte.cdk.message.StreamCompleteWrapped -import io.airbyte.cdk.message.StreamRecordWrapped -import io.airbyte.cdk.message.Undefined -import io.airbyte.cdk.state.MemoryManager -import io.airbyte.cdk.state.Reserved -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.InternalTask -import io.airbyte.cdk.task.SyncTask -import io.airbyte.cdk.util.use +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.CheckpointMessage +import io.airbyte.cdk.load.message.CheckpointMessageWrapped +import io.airbyte.cdk.load.message.Deserializer +import io.airbyte.cdk.load.message.DestinationMessage +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.DestinationRecordWrapped +import io.airbyte.cdk.load.message.DestinationStreamAffinedMessage +import io.airbyte.cdk.load.message.DestinationStreamComplete +import io.airbyte.cdk.load.message.DestinationStreamIncomplete +import io.airbyte.cdk.load.message.GlobalCheckpoint +import io.airbyte.cdk.load.message.GlobalCheckpointWrapped +import io.airbyte.cdk.load.message.MessageQueueSupplier +import io.airbyte.cdk.load.message.QueueWriter +import io.airbyte.cdk.load.message.StreamCheckpoint +import io.airbyte.cdk.load.message.StreamCheckpointWrapped +import io.airbyte.cdk.load.message.StreamCompleteWrapped +import io.airbyte.cdk.load.message.StreamRecordWrapped +import io.airbyte.cdk.load.message.Undefined +import io.airbyte.cdk.load.state.MemoryManager +import io.airbyte.cdk.load.state.Reserved +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.InternalTask +import io.airbyte.cdk.load.task.SyncTask +import io.airbyte.cdk.load.util.use import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/SpillToDiskTask.kt similarity index 81% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/SpillToDiskTask.kt index b24de32478a89..7eddd90c250c6 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/SpillToDiskTask.kt @@ -2,27 +2,27 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal import com.google.common.collect.Range -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.file.TempFileProvider -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.DestinationRecordWrapped -import io.airbyte.cdk.message.MessageQueueSupplier -import io.airbyte.cdk.message.QueueReader -import io.airbyte.cdk.message.SpilledRawMessagesLocalFile -import io.airbyte.cdk.message.StreamCompleteWrapped -import io.airbyte.cdk.message.StreamRecordWrapped -import io.airbyte.cdk.state.FlushStrategy -import io.airbyte.cdk.state.Reserved -import io.airbyte.cdk.task.DestinationTaskLauncher -import io.airbyte.cdk.task.InternalTask -import io.airbyte.cdk.task.StreamTask -import io.airbyte.cdk.util.takeUntilInclusive -import io.airbyte.cdk.util.use -import io.airbyte.cdk.util.withNextAdjacentValue +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.file.TempFileProvider +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.DestinationRecordWrapped +import io.airbyte.cdk.load.message.MessageQueueSupplier +import io.airbyte.cdk.load.message.QueueReader +import io.airbyte.cdk.load.message.SpilledRawMessagesLocalFile +import io.airbyte.cdk.load.message.StreamCompleteWrapped +import io.airbyte.cdk.load.message.StreamRecordWrapped +import io.airbyte.cdk.load.state.FlushStrategy +import io.airbyte.cdk.load.state.Reserved +import io.airbyte.cdk.load.task.DestinationTaskLauncher +import io.airbyte.cdk.load.task.InternalTask +import io.airbyte.cdk.load.task.StreamTask +import io.airbyte.cdk.load.util.takeUntilInclusive +import io.airbyte.cdk.load.util.use +import io.airbyte.cdk.load.util.withNextAdjacentValue import io.github.oshai.kotlinlogging.KotlinLogging import jakarta.inject.Singleton import kotlinx.coroutines.flow.last diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/TimedForcedCheckpointFlushTask.kt similarity index 84% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/TimedForcedCheckpointFlushTask.kt index 335b4fcb3914c..cfeb2048163be 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/TimedForcedCheckpointFlushTask.kt @@ -2,16 +2,16 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.file.TimeProvider -import io.airbyte.cdk.message.ChannelMessageQueue -import io.airbyte.cdk.message.QueueWriter -import io.airbyte.cdk.state.CheckpointManager -import io.airbyte.cdk.task.SyncTask -import io.airbyte.cdk.util.use +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.file.TimeProvider +import io.airbyte.cdk.load.message.ChannelMessageQueue +import io.airbyte.cdk.load.message.QueueWriter +import io.airbyte.cdk.load.state.CheckpointManager +import io.airbyte.cdk.load.task.SyncTask +import io.airbyte.cdk.load.util.use import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/UpdateCheckpointsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/UpdateCheckpointsTask.kt similarity index 72% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/UpdateCheckpointsTask.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/UpdateCheckpointsTask.kt index d81a167df7541..949cc8fed032e 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/task/internal/UpdateCheckpointsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/UpdateCheckpointsTask.kt @@ -2,17 +2,17 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.CheckpointMessage -import io.airbyte.cdk.message.CheckpointMessageWrapped -import io.airbyte.cdk.message.GlobalCheckpointWrapped -import io.airbyte.cdk.message.MessageQueue -import io.airbyte.cdk.message.StreamCheckpointWrapped -import io.airbyte.cdk.state.CheckpointManager -import io.airbyte.cdk.state.Reserved -import io.airbyte.cdk.task.SyncTask +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.CheckpointMessage +import io.airbyte.cdk.load.message.CheckpointMessageWrapped +import io.airbyte.cdk.load.message.GlobalCheckpointWrapped +import io.airbyte.cdk.load.message.MessageQueue +import io.airbyte.cdk.load.message.StreamCheckpointWrapped +import io.airbyte.cdk.load.state.CheckpointManager +import io.airbyte.cdk.load.state.Reserved +import io.airbyte.cdk.load.task.SyncTask import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/util/CoroutineUtils.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/util/CoroutineUtils.kt index e6d916a0cef2f..4644b29f8868e 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/CoroutineUtils.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/util/CoroutineUtils.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.util +package io.airbyte.cdk.load.util import java.util.concurrent.atomic.AtomicBoolean import kotlinx.coroutines.flow.Flow diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/RangeUtils.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/util/RangeUtils.kt similarity index 93% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/RangeUtils.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/util/RangeUtils.kt index e17f36334ac1a..e4d7ec1c85816 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/util/RangeUtils.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/util/RangeUtils.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.util +package io.airbyte.cdk.load.util import com.google.common.collect.Range diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/DestinationWriter.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/DestinationWriter.kt similarity index 89% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/DestinationWriter.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/DestinationWriter.kt index 50018395d580f..7ad369a3623dc 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/DestinationWriter.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/DestinationWriter.kt @@ -2,10 +2,10 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.write +package io.airbyte.cdk.load.write -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.state.SyncFailure +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.state.SyncFailure import io.micronaut.context.annotation.Secondary import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/StreamLoader.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/StreamLoader.kt similarity index 84% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/StreamLoader.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/StreamLoader.kt index ed28623a3dd8d..d7b0581590df7 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/StreamLoader.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/StreamLoader.kt @@ -2,13 +2,13 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.write +package io.airbyte.cdk.load.write -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.SimpleBatch -import io.airbyte.cdk.state.StreamIncompleteResult +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.SimpleBatch +import io.airbyte.cdk.load.state.StreamIncompleteResult /** * Implementor interface. The framework calls open and close once per stream at the beginning and diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/WriteOperation.kt similarity index 87% rename from airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt rename to airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/WriteOperation.kt index 51704b4927558..6955da322fb1e 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/write/WriteOperation.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/write/WriteOperation.kt @@ -2,13 +2,13 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.write +package io.airbyte.cdk.load.write import io.airbyte.cdk.Operation -import io.airbyte.cdk.state.SyncFailure -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.state.SyncSuccess -import io.airbyte.cdk.task.TaskLauncher +import io.airbyte.cdk.load.state.SyncFailure +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.state.SyncSuccess +import io.airbyte.cdk.load.task.TaskLauncher import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Factory import io.micronaut.context.annotation.Requires diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/DestinationCatalogTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/DestinationCatalogTest.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/DestinationCatalogTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/DestinationCatalogTest.kt index d6db2d9601c94..c21f0775ffe0c 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/DestinationCatalogTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/DestinationCatalogTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.command +package io.airbyte.cdk.load.command import io.airbyte.protocol.models.Jsons import io.airbyte.protocol.models.v0.AirbyteStream diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationCatalogFactory.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/MockDestinationCatalogFactory.kt similarity index 92% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationCatalogFactory.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/MockDestinationCatalogFactory.kt index bb57923822c63..7076f46b81dff 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationCatalogFactory.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/MockDestinationCatalogFactory.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.command +package io.airbyte.cdk.load.command -import io.airbyte.cdk.data.FieldType -import io.airbyte.cdk.data.IntegerType -import io.airbyte.cdk.data.ObjectType -import io.airbyte.cdk.data.StringType +import io.airbyte.cdk.load.data.FieldType +import io.airbyte.cdk.load.data.IntegerType +import io.airbyte.cdk.load.data.ObjectType +import io.airbyte.cdk.load.data.StringType import io.micronaut.context.annotation.Factory import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/MockDestinationConfiguration.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/MockDestinationConfiguration.kt index 8a7efd13bf588..a6e0c39c2349c 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/command/MockDestinationConfiguration.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/command/MockDestinationConfiguration.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.command +package io.airbyte.cdk.load.command import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/AirbyteTypeToJsonSchemaTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/AirbyteSchemaTypeToJsonSchemaTest.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/AirbyteTypeToJsonSchemaTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/AirbyteSchemaTypeToJsonSchemaTest.kt index 5005755fcda7b..52011496f2ba8 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/AirbyteTypeToJsonSchemaTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/AirbyteSchemaTypeToJsonSchemaTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.node.JsonNodeFactory @@ -10,7 +10,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test -class AirbyteTypeToJsonSchemaTest { +class AirbyteSchemaTypeToJsonSchemaTest { @Test fun testRoundTrip() { val schema = JsonNodeFactory.instance.objectNode() diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/AirbyteValueToJsonTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/AirbyteValueToJsonTest.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/AirbyteValueToJsonTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/AirbyteValueToJsonTest.kt index dedc0997a8d55..e74922f2430f2 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/AirbyteValueToJsonTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/AirbyteValueToJsonTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/JsonSchemaToAirbyteTypeTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/JsonSchemaToAirbyteSchemaTypeTest.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/JsonSchemaToAirbyteTypeTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/JsonSchemaToAirbyteSchemaTypeTest.kt index bea239ed17f7a..24847b151e0c6 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/JsonSchemaToAirbyteTypeTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/JsonSchemaToAirbyteSchemaTypeTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import com.fasterxml.jackson.databind.node.JsonNodeFactory import com.fasterxml.jackson.databind.node.ObjectNode @@ -10,7 +10,7 @@ import io.airbyte.cdk.util.Jsons import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test -class JsonSchemaToAirbyteTypeTest { +class JsonSchemaToAirbyteSchemaTypeTest { private fun ofType(type: String): ObjectNode { return JsonNodeFactory.instance.objectNode().put("type", type) } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/JsonToAirbyteValueTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/JsonToAirbyteValueTest.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/JsonToAirbyteValueTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/JsonToAirbyteValueTest.kt index 38b3259652b62..225b8d12720bf 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/data/JsonToAirbyteValueTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/data/JsonToAirbyteValueTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.data +package io.airbyte.cdk.load.data import com.fasterxml.jackson.databind.node.JsonNodeFactory import java.math.BigDecimal diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTempFileProvider.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/file/MockTempFileProvider.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTempFileProvider.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/file/MockTempFileProvider.kt index ff844ec767075..093e160f3124a 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTempFileProvider.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/file/MockTempFileProvider.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.file +package io.airbyte.cdk.load.file import io.micronaut.context.annotation.Requires import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/file/MockTimeProvider.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/file/MockTimeProvider.kt index 052efeec6f00a..7909f2bfdf24e 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/file/MockTimeProvider.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/file/MockTimeProvider.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.file +package io.airbyte.cdk.load.file import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/message/DestinationMessageTest.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/message/DestinationMessageTest.kt index c7ba1edb0009c..10b0ea1d89f61 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/message/DestinationMessageTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/message/DestinationMessageTest.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.message +package io.airbyte.cdk.load.message -import io.airbyte.cdk.command.Append -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.data.ObjectTypeWithEmptySchema +import io.airbyte.cdk.load.command.Append +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.data.ObjectTypeWithEmptySchema import io.airbyte.protocol.models.Jsons import io.airbyte.protocol.models.v0.AirbyteGlobalState import io.airbyte.protocol.models.v0.AirbyteMessage @@ -19,7 +19,7 @@ import io.airbyte.protocol.models.v0.AirbyteStateStats import io.airbyte.protocol.models.v0.AirbyteStreamState import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage import io.airbyte.protocol.models.v0.AirbyteTraceMessage -import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments @@ -47,7 +47,7 @@ class DestinationMessageTest { fun testRoundTrip(message: AirbyteMessage) { val roundTripped = factory.fromAirbyteMessage(message, Jsons.serialize(message)).asProtocolMessage() - assertEquals(message, roundTripped) + Assertions.assertEquals(message, roundTripped) } // Checkpoint messages aren't round-trippable. @@ -73,7 +73,7 @@ class DestinationMessageTest { factory.fromAirbyteMessage(inputMessage, Jsons.serialize(inputMessage)) as StreamCheckpoint - assertEquals( + Assertions.assertEquals( inputMessage.also { it.state.destinationStats = AirbyteStateStats().withRecordCount(3.0) }, @@ -110,7 +110,7 @@ class DestinationMessageTest { Jsons.serialize(inputMessage), ) as GlobalCheckpoint - assertEquals( + Assertions.assertEquals( inputMessage.also { it.state.destinationStats = AirbyteStateStats().withRecordCount(3.0) }, diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/CheckpointManagerTest.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/CheckpointManagerTest.kt index 40a409c79e4c6..2b8201112bfa2 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/CheckpointManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/CheckpointManagerTest.kt @@ -2,18 +2,18 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import com.google.common.collect.Range import com.google.common.collect.TreeRangeSet -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 -import io.airbyte.cdk.file.TimeProvider -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.SimpleBatch +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory.Companion.stream1 +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.load.file.TimeProvider +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.SimpleBatch import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/DefaultFlushStrategyTest.kt similarity index 91% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/DefaultFlushStrategyTest.kt index 5b2b640f6b70f..cc277e5e3ce9d 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/DefaultFlushStrategyTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/DefaultFlushStrategyTest.kt @@ -2,14 +2,14 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import com.google.common.collect.Range -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.MockDestinationCatalogFactory -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 -import io.airbyte.cdk.message.ChannelMessageQueue -import io.airbyte.cdk.task.internal.ForceFlushEvent +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.load.message.ChannelMessageQueue +import io.airbyte.cdk.load.task.internal.ForceFlushEvent import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/MemoryManagerTest.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/MemoryManagerTest.kt index cf53c478df3df..b2c66db6eeaf9 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MemoryManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/MemoryManagerTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import io.micronaut.context.annotation.Replaces import io.micronaut.context.annotation.Requires diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/MockCheckpointManager.kt similarity index 90% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/MockCheckpointManager.kt index 002ae813401de..ec2920fdeb9ba 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/MockCheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/MockCheckpointManager.kt @@ -2,11 +2,11 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.file.TimeProvider -import io.airbyte.cdk.message.CheckpointMessage +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.file.TimeProvider +import io.airbyte.cdk.load.message.CheckpointMessage import io.micronaut.context.annotation.Requires import jakarta.inject.Inject import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/StreamManagerTest.kt similarity index 96% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/StreamManagerTest.kt index 727041adbccd6..ceb8f009fb82b 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/StreamManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/StreamManagerTest.kt @@ -2,15 +2,15 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import com.google.common.collect.Range -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.SimpleBatch +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory.Companion.stream1 +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.SimpleBatch import java.util.stream.Stream import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.delay diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/SyncManagerTest.kt similarity index 93% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/SyncManagerTest.kt index ea017a0f934e2..8453f5d767079 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/SyncManagerTest.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 -import io.airbyte.cdk.test.util.CoroutineTestUtils +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory.Companion.stream1 +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory.Companion.stream2 +import io.airbyte.cdk.load.test.util.CoroutineTestUtils import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import kotlinx.coroutines.channels.Channel diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerUtils.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/SyncManagerUtils.kt similarity index 75% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerUtils.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/SyncManagerUtils.kt index ea57af85f9630..28a24a2b8362b 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/state/SyncManagerUtils.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/SyncManagerUtils.kt @@ -2,13 +2,13 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.state +package io.airbyte.cdk.load.state import com.google.common.collect.Range -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.SimpleBatch +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.SimpleBatch /** * Because [SyncManager] and [StreamManager] have thin interfaces with no side effects, mocking them diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandlerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/DestinationTaskExceptionHandlerTest.kt similarity index 87% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandlerTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/DestinationTaskExceptionHandlerTest.kt index a80559d006280..7760debf53705 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskExceptionHandlerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/DestinationTaskExceptionHandlerTest.kt @@ -2,17 +2,17 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task - -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.implementor.FailStreamTask -import io.airbyte.cdk.task.implementor.FailStreamTaskFactory -import io.airbyte.cdk.task.implementor.FailSyncTask -import io.airbyte.cdk.task.implementor.FailSyncTaskFactory -import io.airbyte.cdk.test.util.CoroutineTestUtils +package io.airbyte.cdk.load.task + +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.implementor.FailStreamTask +import io.airbyte.cdk.load.task.implementor.FailStreamTaskFactory +import io.airbyte.cdk.load.task.implementor.FailSyncTask +import io.airbyte.cdk.load.task.implementor.FailSyncTaskFactory +import io.airbyte.cdk.load.test.util.CoroutineTestUtils import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -87,7 +87,7 @@ class DestinationTaskExceptionHandlerTest { runTest { val mockTask = object : StreamTask { - override val stream: DestinationStream = stream1 + override val stream: DestinationStream = MockDestinationCatalogFactory.stream1 override suspend fun execute() { throw RuntimeException("StreamTask failure") @@ -97,7 +97,7 @@ class DestinationTaskExceptionHandlerTest { val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) wrappedTask.execute() val (stream, exception) = mockFailStreamTaskFactory.didRunFor.receive() - Assertions.assertEquals(stream1, stream) + Assertions.assertEquals(MockDestinationCatalogFactory.stream1, stream) Assertions.assertTrue(exception is RuntimeException) } @@ -182,7 +182,7 @@ class DestinationTaskExceptionHandlerTest { val innerTaskRan = Channel(Channel.UNLIMITED) val mockTask = object : StreamTask { - override val stream: DestinationStream = stream1 + override val stream: DestinationStream = MockDestinationCatalogFactory.stream1 override suspend fun execute() { innerTaskRan.send(true) @@ -190,7 +190,7 @@ class DestinationTaskExceptionHandlerTest { } val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) - val manager = syncManager.getStreamManager(stream1.descriptor) + val manager = syncManager.getStreamManager(MockDestinationCatalogFactory.stream1.descriptor) manager.markEndOfStream() manager.markFailed(RuntimeException("dummy failure")) launch { wrappedTask.execute() } @@ -207,7 +207,7 @@ class DestinationTaskExceptionHandlerTest { ) = runTest { val mockTask = object : StreamTask { - override val stream: DestinationStream = stream1 + override val stream: DestinationStream = MockDestinationCatalogFactory.stream1 override suspend fun execute() { // do nothing @@ -216,7 +216,7 @@ class DestinationTaskExceptionHandlerTest { val wrappedTask = exceptionHandler.withExceptionHandling(mockTask) - val manager = syncManager.getStreamManager(stream1.descriptor) + val manager = syncManager.getStreamManager(MockDestinationCatalogFactory.stream1.descriptor) manager.markEndOfStream() manager.markSucceeded() diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/DestinationTaskLauncherTest.kt similarity index 81% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/DestinationTaskLauncherTest.kt index 7c045debd7d6a..eb4f9c4f269ce 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/DestinationTaskLauncherTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/DestinationTaskLauncherTest.kt @@ -2,44 +2,44 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.load.task import com.google.common.collect.Range import com.google.common.collect.TreeRangeSet -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 -import io.airbyte.cdk.file.DefaultLocalFile -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.SpilledRawMessagesLocalFile -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.implementor.CloseStreamTask -import io.airbyte.cdk.task.implementor.CloseStreamTaskFactory -import io.airbyte.cdk.task.implementor.DefaultCloseStreamTaskFactory -import io.airbyte.cdk.task.implementor.DefaultOpenStreamTaskFactory -import io.airbyte.cdk.task.implementor.DefaultProcessBatchTaskFactory -import io.airbyte.cdk.task.implementor.DefaultProcessRecordsTaskFactory -import io.airbyte.cdk.task.implementor.DefaultSetupTaskFactory -import io.airbyte.cdk.task.implementor.DefaultTeardownTaskFactory -import io.airbyte.cdk.task.implementor.OpenStreamTask -import io.airbyte.cdk.task.implementor.OpenStreamTaskFactory -import io.airbyte.cdk.task.implementor.ProcessBatchTask -import io.airbyte.cdk.task.implementor.ProcessBatchTaskFactory -import io.airbyte.cdk.task.implementor.ProcessRecordsTask -import io.airbyte.cdk.task.implementor.ProcessRecordsTaskFactory -import io.airbyte.cdk.task.implementor.SetupTask -import io.airbyte.cdk.task.implementor.SetupTaskFactory -import io.airbyte.cdk.task.implementor.TeardownTask -import io.airbyte.cdk.task.implementor.TeardownTaskFactory -import io.airbyte.cdk.task.internal.DefaultSpillToDiskTaskFactory -import io.airbyte.cdk.task.internal.FlushCheckpointsTask -import io.airbyte.cdk.task.internal.FlushCheckpointsTaskFactory -import io.airbyte.cdk.task.internal.InputConsumerTask -import io.airbyte.cdk.task.internal.SpillToDiskTask -import io.airbyte.cdk.task.internal.SpillToDiskTaskFactory -import io.airbyte.cdk.task.internal.TimedForcedCheckpointFlushTask -import io.airbyte.cdk.task.internal.UpdateCheckpointsTask +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory +import io.airbyte.cdk.load.file.DefaultLocalFile +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.SpilledRawMessagesLocalFile +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.implementor.CloseStreamTask +import io.airbyte.cdk.load.task.implementor.CloseStreamTaskFactory +import io.airbyte.cdk.load.task.implementor.DefaultCloseStreamTaskFactory +import io.airbyte.cdk.load.task.implementor.DefaultOpenStreamTaskFactory +import io.airbyte.cdk.load.task.implementor.DefaultProcessBatchTaskFactory +import io.airbyte.cdk.load.task.implementor.DefaultProcessRecordsTaskFactory +import io.airbyte.cdk.load.task.implementor.DefaultSetupTaskFactory +import io.airbyte.cdk.load.task.implementor.DefaultTeardownTaskFactory +import io.airbyte.cdk.load.task.implementor.OpenStreamTask +import io.airbyte.cdk.load.task.implementor.OpenStreamTaskFactory +import io.airbyte.cdk.load.task.implementor.ProcessBatchTask +import io.airbyte.cdk.load.task.implementor.ProcessBatchTaskFactory +import io.airbyte.cdk.load.task.implementor.ProcessRecordsTask +import io.airbyte.cdk.load.task.implementor.ProcessRecordsTaskFactory +import io.airbyte.cdk.load.task.implementor.SetupTask +import io.airbyte.cdk.load.task.implementor.SetupTaskFactory +import io.airbyte.cdk.load.task.implementor.TeardownTask +import io.airbyte.cdk.load.task.implementor.TeardownTaskFactory +import io.airbyte.cdk.load.task.internal.DefaultSpillToDiskTaskFactory +import io.airbyte.cdk.load.task.internal.FlushCheckpointsTask +import io.airbyte.cdk.load.task.internal.FlushCheckpointsTaskFactory +import io.airbyte.cdk.load.task.internal.InputConsumerTask +import io.airbyte.cdk.load.task.internal.SpillToDiskTask +import io.airbyte.cdk.load.task.internal.SpillToDiskTaskFactory +import io.airbyte.cdk.load.task.internal.TimedForcedCheckpointFlushTask +import io.airbyte.cdk.load.task.internal.UpdateCheckpointsTask import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Replaces import io.micronaut.context.annotation.Requires @@ -337,7 +337,7 @@ class DestinationTaskLauncherTest { @Test fun testHandleSpilledFileCompleteNotEndOfStream() = runTest { taskLauncher.handleNewSpilledFile( - stream1, + MockDestinationCatalogFactory.stream1, BatchEnvelope( SpilledRawMessagesLocalFile(DefaultLocalFile(Path("not/a/real/file")), 100L) ), @@ -345,7 +345,8 @@ class DestinationTaskLauncherTest { ) processRecordsTaskFactory.hasRun.receive() - mockSpillToDiskTaskFactory.streamHasRun[stream1.descriptor]?.receive() + mockSpillToDiskTaskFactory.streamHasRun[MockDestinationCatalogFactory.stream1.descriptor] + ?.receive() ?: Assertions.fail("SpillToDiskTask not run") } @@ -353,7 +354,7 @@ class DestinationTaskLauncherTest { fun testHandleSpilledFileCompleteEndOfStream() = runTest { launch { taskLauncher.handleNewSpilledFile( - stream1, + MockDestinationCatalogFactory.stream1, BatchEnvelope( SpilledRawMessagesLocalFile(DefaultLocalFile(Path("not/a/real/file")), 100L) ), @@ -364,22 +365,25 @@ class DestinationTaskLauncherTest { processRecordsTaskFactory.hasRun.receive() delay(500) Assertions.assertTrue( - mockSpillToDiskTaskFactory.streamHasRun[stream1.descriptor]?.tryReceive()?.isFailure != - false + mockSpillToDiskTaskFactory.streamHasRun[ + MockDestinationCatalogFactory.stream1.descriptor] + ?.tryReceive() + ?.isFailure != false ) } @Test fun testHandleNewBatch() = runTest { val range = TreeRangeSet.create(listOf(Range.closed(0L, 100L))) - val streamManager = syncManager.getStreamManager(stream1.descriptor) + val streamManager = + syncManager.getStreamManager(MockDestinationCatalogFactory.stream1.descriptor) repeat(100) { streamManager.countRecordIn() } streamManager.markEndOfStream() // Verify incomplete batch triggers process batch val incompleteBatch = BatchEnvelope(MockBatch(Batch.State.LOCAL), range) - taskLauncher.handleNewBatch(stream1, incompleteBatch) + taskLauncher.handleNewBatch(MockDestinationCatalogFactory.stream1, incompleteBatch) Assertions.assertFalse(streamManager.areRecordsPersistedUntil(100L)) val batchReceived = processBatchTaskFactory.hasRun.receive() @@ -388,21 +392,21 @@ class DestinationTaskLauncherTest { Assertions.assertTrue(flushCheckpointsTaskFactory.hasRun.tryReceive().isFailure) val persistedBatch = BatchEnvelope(MockBatch(Batch.State.PERSISTED), range) - taskLauncher.handleNewBatch(stream1, persistedBatch) + taskLauncher.handleNewBatch(MockDestinationCatalogFactory.stream1, persistedBatch) Assertions.assertTrue(streamManager.areRecordsPersistedUntil(100L)) Assertions.assertTrue(flushCheckpointsTaskFactory.hasRun.receive()) // Verify complete batch w/o batch processing complete does nothing val halfRange = TreeRangeSet.create(listOf(Range.closed(0L, 50L))) val completeBatchHalf = BatchEnvelope(MockBatch(Batch.State.COMPLETE), halfRange) - taskLauncher.handleNewBatch(stream1, completeBatchHalf) + taskLauncher.handleNewBatch(MockDestinationCatalogFactory.stream1, completeBatchHalf) delay(1000) Assertions.assertTrue(closeStreamTaskFactory.hasRun.tryReceive().isFailure) // Verify complete batch w/ batch processing complete triggers close stream val secondHalf = TreeRangeSet.create(listOf(Range.closed(51L, 100L))) val completingBatch = BatchEnvelope(MockBatch(Batch.State.COMPLETE), secondHalf) - taskLauncher.handleNewBatch(stream1, completingBatch) + taskLauncher.handleNewBatch(MockDestinationCatalogFactory.stream1, completingBatch) closeStreamTaskFactory.hasRun.receive() Assertions.assertTrue(true) } @@ -410,7 +414,7 @@ class DestinationTaskLauncherTest { @Test fun testHandleStreamClosed() = runTest { // This should run teardown unconditionally. - launch { taskLauncher.handleStreamClosed(stream1) } + launch { taskLauncher.handleStreamClosed(MockDestinationCatalogFactory.stream1) } teardownTaskFactory.hasRun.receive() } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockScopeProvider.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/MockScopeProvider.kt similarity index 94% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockScopeProvider.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/MockScopeProvider.kt index 2290d513902c6..453325ab855fb 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockScopeProvider.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/MockScopeProvider.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.load.task import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/MockTaskLauncher.kt similarity index 86% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/MockTaskLauncher.kt index 3401e795bd2df..80ce429fe1abb 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/MockTaskLauncher.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/MockTaskLauncher.kt @@ -2,11 +2,11 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task +package io.airbyte.cdk.load.task -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.SpilledRawMessagesLocalFile +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.SpilledRawMessagesLocalFile import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import jakarta.inject.Singleton diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/implementor/ProcessRecordsTaskTest.kt similarity index 79% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTaskTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/implementor/ProcessRecordsTaskTest.kt index 88fb9f479f809..ab7029c9944ad 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/implementor/ProcessRecordsTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/implementor/ProcessRecordsTaskTest.kt @@ -2,22 +2,22 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.implementor +package io.airbyte.cdk.load.task.implementor import com.google.common.collect.Range -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 -import io.airbyte.cdk.data.IntegerValue -import io.airbyte.cdk.file.MockTempFileProvider -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.BatchEnvelope -import io.airbyte.cdk.message.Deserializer -import io.airbyte.cdk.message.DestinationMessage -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.SpilledRawMessagesLocalFile -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.task.MockTaskLauncher -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory +import io.airbyte.cdk.load.data.IntegerValue +import io.airbyte.cdk.load.file.MockTempFileProvider +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.BatchEnvelope +import io.airbyte.cdk.load.message.Deserializer +import io.airbyte.cdk.load.message.DestinationMessage +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.SpilledRawMessagesLocalFile +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.task.MockTaskLauncher +import io.airbyte.cdk.load.write.StreamLoader import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -49,7 +49,7 @@ class ProcessRecordsTaskTest { ) : Batch class MockStreamLoader : StreamLoader { - override val stream: DestinationStream = stream1 + override val stream: DestinationStream = MockDestinationCatalogFactory.stream1 data class SumAndCount(val sum: Long = 0, val count: Long = 0) @@ -78,7 +78,7 @@ class ProcessRecordsTaskTest { class MockDeserializer : Deserializer { override fun deserialize(serialized: String): DestinationMessage { return DestinationRecord( - stream = stream1.descriptor, + stream = MockDestinationCatalogFactory.stream1.descriptor, data = IntegerValue(serialized.toLong()), emittedAtMs = 0L, meta = null, @@ -104,7 +104,7 @@ class ProcessRecordsTaskTest { val task = processRecordsTaskFactory.make( taskLauncher = launcher, - stream = stream1, + stream = MockDestinationCatalogFactory.stream1, fileEnvelope = BatchEnvelope(file, Range.closed(0, 1024)) ) mockFile.linesToRead = (0 until recordCount).map { "$it" }.toMutableList() diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/InputConsumerTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTaskTest.kt similarity index 65% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/InputConsumerTaskTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTaskTest.kt index 4096ed177c4b5..b74aaa4616ff2 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/InputConsumerTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTaskTest.kt @@ -2,34 +2,33 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal import com.fasterxml.jackson.databind.node.JsonNodeFactory -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream2 -import io.airbyte.cdk.data.NullValue -import io.airbyte.cdk.message.CheckpointMessage -import io.airbyte.cdk.message.CheckpointMessageWrapped -import io.airbyte.cdk.message.DestinationMessage -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.DestinationRecordWrapped -import io.airbyte.cdk.message.DestinationStreamComplete -import io.airbyte.cdk.message.DestinationStreamIncomplete -import io.airbyte.cdk.message.GlobalCheckpoint -import io.airbyte.cdk.message.GlobalCheckpointWrapped -import io.airbyte.cdk.message.MessageQueue -import io.airbyte.cdk.message.MessageQueueSupplier -import io.airbyte.cdk.message.StreamCheckpoint -import io.airbyte.cdk.message.StreamCheckpointWrapped -import io.airbyte.cdk.message.StreamCompleteWrapped -import io.airbyte.cdk.message.StreamRecordWrapped -import io.airbyte.cdk.state.MemoryManager -import io.airbyte.cdk.state.Reserved -import io.airbyte.cdk.state.SyncManager -import io.airbyte.cdk.test.util.CoroutineTestUtils -import io.airbyte.cdk.util.takeUntilInclusive +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory +import io.airbyte.cdk.load.data.NullValue +import io.airbyte.cdk.load.message.CheckpointMessage +import io.airbyte.cdk.load.message.CheckpointMessageWrapped +import io.airbyte.cdk.load.message.DestinationMessage +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.DestinationRecordWrapped +import io.airbyte.cdk.load.message.DestinationStreamComplete +import io.airbyte.cdk.load.message.DestinationStreamIncomplete +import io.airbyte.cdk.load.message.GlobalCheckpoint +import io.airbyte.cdk.load.message.GlobalCheckpointWrapped +import io.airbyte.cdk.load.message.MessageQueue +import io.airbyte.cdk.load.message.MessageQueueSupplier +import io.airbyte.cdk.load.message.StreamCheckpoint +import io.airbyte.cdk.load.message.StreamCheckpointWrapped +import io.airbyte.cdk.load.message.StreamCompleteWrapped +import io.airbyte.cdk.load.message.StreamRecordWrapped +import io.airbyte.cdk.load.state.MemoryManager +import io.airbyte.cdk.load.state.Reserved +import io.airbyte.cdk.load.state.SyncManager +import io.airbyte.cdk.load.test.util.CoroutineTestUtils +import io.airbyte.cdk.load.util.takeUntilInclusive import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -128,13 +127,20 @@ class InputConsumerTaskTest { @Test fun testSendRecords() = runTest { - val queue1 = recordQueueSupplier.get(stream1.descriptor) - val queue2 = recordQueueSupplier.get(stream2.descriptor) - - val manager1 = syncManager.getStreamManager(stream1.descriptor) - val manager2 = syncManager.getStreamManager(stream2.descriptor) - - (0 until 10).forEach { mockInputFlow.addMessage(makeRecord(stream1, "test${it}"), it * 2L) } + val queue1 = recordQueueSupplier.get(MockDestinationCatalogFactory.stream1.descriptor) + val queue2 = recordQueueSupplier.get(MockDestinationCatalogFactory.stream2.descriptor) + + val manager1 = + syncManager.getStreamManager(MockDestinationCatalogFactory.stream1.descriptor) + val manager2 = + syncManager.getStreamManager(MockDestinationCatalogFactory.stream2.descriptor) + + (0 until 10).forEach { + mockInputFlow.addMessage( + makeRecord(MockDestinationCatalogFactory.stream1, "test${it}"), + it * 2L + ) + } launch { task.execute() } val messages1 = @@ -148,7 +154,11 @@ class InputConsumerTaskTest { Assertions.assertEquals(10, messages1.size) val expectedRecords = (0 until 10).map { - StreamRecordWrapped(it.toLong(), it * 2L, makeRecord(stream1, "test${it}")) + StreamRecordWrapped( + it.toLong(), + it * 2L, + makeRecord(MockDestinationCatalogFactory.stream1, "test${it}") + ) } Assertions.assertEquals(expectedRecords, messages1.map { it.value }) @@ -165,22 +175,35 @@ class InputConsumerTaskTest { @Test fun testSendEndOfStream() = runTest { - val queue1 = recordQueueSupplier.get(stream1.descriptor) - val queue2 = recordQueueSupplier.get(stream2.descriptor) - - val manager1 = syncManager.getStreamManager(stream1.descriptor) - val manager2 = syncManager.getStreamManager(stream2.descriptor) - - (0 until 10).forEach { _ -> mockInputFlow.addMessage(makeRecord(stream1, "whatever"), 0L) } + val queue1 = recordQueueSupplier.get(MockDestinationCatalogFactory.stream1.descriptor) + val queue2 = recordQueueSupplier.get(MockDestinationCatalogFactory.stream2.descriptor) + + val manager1 = + syncManager.getStreamManager(MockDestinationCatalogFactory.stream1.descriptor) + val manager2 = + syncManager.getStreamManager(MockDestinationCatalogFactory.stream2.descriptor) + + (0 until 10).forEach { _ -> + mockInputFlow.addMessage( + makeRecord(MockDestinationCatalogFactory.stream1, "whatever"), + 0L + ) + } - mockInputFlow.addMessage(makeRecord(stream2, "test"), 1L) - mockInputFlow.addMessage(makeStreamComplete(stream1), 0L) + mockInputFlow.addMessage(makeRecord(MockDestinationCatalogFactory.stream2, "test"), 1L) + mockInputFlow.addMessage(makeStreamComplete(MockDestinationCatalogFactory.stream1), 0L) val job = launch { task.execute() } mockInputFlow.stop() job.join() queue2.close() Assertions.assertEquals( - listOf(StreamRecordWrapped(0, 1L, makeRecord(stream2, "test"))), + listOf( + StreamRecordWrapped( + 0, + 1L, + makeRecord(MockDestinationCatalogFactory.stream2, "test") + ) + ), queue2.consume().toList().map { it.value } ) Assertions.assertEquals(1L, manager2.recordCount()) @@ -209,10 +232,10 @@ class InputConsumerTaskTest { val batches = listOf( - TestEvent(stream1, 10, 10), - TestEvent(stream1, 5, 15), - TestEvent(stream2, 4, 4), - TestEvent(stream1, 3, 18), + TestEvent(MockDestinationCatalogFactory.stream1, 10, 10), + TestEvent(MockDestinationCatalogFactory.stream1, 5, 15), + TestEvent(MockDestinationCatalogFactory.stream2, 4, 4), + TestEvent(MockDestinationCatalogFactory.stream1, 3, 18), ) launch { task.execute() } @@ -239,12 +262,12 @@ class InputConsumerTaskTest { val batches = listOf( - AddRecords(stream1, 10), + AddRecords(MockDestinationCatalogFactory.stream1, 10), SendState(10, 0, 10), - AddRecords(stream2, 5), - AddRecords(stream1, 4), + AddRecords(MockDestinationCatalogFactory.stream2, 5), + AddRecords(MockDestinationCatalogFactory.stream1, 4), SendState(14, 5, 9), - AddRecords(stream2, 3), + AddRecords(MockDestinationCatalogFactory.stream2, 3), SendState(14, 8, 3), SendState(14, 8, 0), ) @@ -262,8 +285,14 @@ class InputConsumerTaskTest { val state = checkpointQueue.consume().take(1).toList().first().value as GlobalCheckpointWrapped - val stream1State = state.streamIndexes.find { it.first == stream1.descriptor }!! - val stream2State = state.streamIndexes.find { it.first == stream2.descriptor }!! + val stream1State = + state.streamIndexes.find { + it.first == MockDestinationCatalogFactory.stream1.descriptor + }!! + val stream2State = + state.streamIndexes.find { + it.first == MockDestinationCatalogFactory.stream2.descriptor + }!! Assertions.assertEquals(event.expectedStream1Count, stream1State.second) Assertions.assertEquals(event.expectedStream2Count, stream2State.second) Assertions.assertEquals( @@ -278,8 +307,8 @@ class InputConsumerTaskTest { @Test fun testStreamIncompleteThrows() = runTest { - mockInputFlow.addMessage(makeRecord(stream1, "test"), 1L) - mockInputFlow.addMessage(makeStreamIncomplete(stream1), 0L) + mockInputFlow.addMessage(makeRecord(MockDestinationCatalogFactory.stream1, "test"), 1L) + mockInputFlow.addMessage(makeStreamIncomplete(MockDestinationCatalogFactory.stream1), 0L) CoroutineTestUtils.assertThrows(IllegalStateException::class) { task.execute() } mockInputFlow.stop() } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/ReservingDeserializingInputFlowTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/ReservingDeserializingInputFlowTest.kt similarity index 94% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/ReservingDeserializingInputFlowTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/ReservingDeserializingInputFlowTest.kt index 7702ba818e4b2..91c2faf8b6db4 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/ReservingDeserializingInputFlowTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/ReservingDeserializingInputFlowTest.kt @@ -2,11 +2,11 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.message.Deserializer -import io.airbyte.cdk.state.MemoryManager +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.message.Deserializer +import io.airbyte.cdk.load.state.MemoryManager import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/SpillToDiskTaskTest.kt similarity index 77% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTaskTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/SpillToDiskTaskTest.kt index 97df060f33118..383e345f1ad04 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/SpillToDiskTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/SpillToDiskTaskTest.kt @@ -2,22 +2,22 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal import com.google.common.collect.Range -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.command.MockDestinationCatalogFactory.Companion.stream1 -import io.airbyte.cdk.data.NullValue -import io.airbyte.cdk.file.MockTempFileProvider -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.DestinationRecordWrapped -import io.airbyte.cdk.message.MessageQueueSupplier -import io.airbyte.cdk.message.StreamCompleteWrapped -import io.airbyte.cdk.message.StreamRecordWrapped -import io.airbyte.cdk.state.FlushStrategy -import io.airbyte.cdk.state.MemoryManager -import io.airbyte.cdk.state.Reserved -import io.airbyte.cdk.task.MockTaskLauncher +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.command.MockDestinationCatalogFactory +import io.airbyte.cdk.load.data.NullValue +import io.airbyte.cdk.load.file.MockTempFileProvider +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.DestinationRecordWrapped +import io.airbyte.cdk.load.message.MessageQueueSupplier +import io.airbyte.cdk.load.message.StreamCompleteWrapped +import io.airbyte.cdk.load.message.StreamRecordWrapped +import io.airbyte.cdk.load.state.FlushStrategy +import io.airbyte.cdk.load.state.MemoryManager +import io.airbyte.cdk.load.state.Reserved +import io.airbyte.cdk.load.task.MockTaskLauncher import io.micronaut.context.annotation.Primary import io.micronaut.context.annotation.Requires import io.micronaut.test.extensions.junit5.annotation.MicronautTest @@ -59,7 +59,7 @@ class SpillToDiskTaskTest { } private suspend fun primeMessageQueue(): Long { - val queue = queueSupplier.get(stream1.descriptor) + val queue = queueSupplier.get(MockDestinationCatalogFactory.stream1.descriptor) val maxRecords = ((1024 * 1.5) / 8).toLong() var recordsWritten = 0L var bytesReserved = 0L @@ -74,7 +74,7 @@ class SpillToDiskTaskTest { sizeBytes = 8, record = DestinationRecord( - stream = stream1.descriptor, + stream = MockDestinationCatalogFactory.stream1.descriptor, data = NullValue, emittedAtMs = 0, meta = null, @@ -95,9 +95,13 @@ class SpillToDiskTaskTest { Assertions.assertEquals(availableMemory - bytesReserved, memoryManager.remainingMemoryBytes) val mockTaskLauncher = MockTaskLauncher() - spillToDiskTaskFactory.make(mockTaskLauncher, stream1).execute() + spillToDiskTaskFactory + .make(mockTaskLauncher, MockDestinationCatalogFactory.stream1) + .execute() Assertions.assertEquals(1, mockTaskLauncher.spilledFiles.size) - spillToDiskTaskFactory.make(mockTaskLauncher, stream1).execute() + spillToDiskTaskFactory + .make(mockTaskLauncher, MockDestinationCatalogFactory.stream1) + .execute() Assertions.assertEquals(2, mockTaskLauncher.spilledFiles.size) Assertions.assertEquals(1024, mockTaskLauncher.spilledFiles[0].batch.totalSizeBytes) diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTaskTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/TimedForcedCheckpointFlushTaskTest.kt similarity index 89% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTaskTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/TimedForcedCheckpointFlushTaskTest.kt index c70421a57afab..fc2607f0e775d 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/task/internal/TimedForcedCheckpointFlushTaskTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/task/internal/TimedForcedCheckpointFlushTaskTest.kt @@ -2,14 +2,14 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.task.internal +package io.airbyte.cdk.load.task.internal -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.file.MockTimeProvider -import io.airbyte.cdk.message.QueueReader -import io.airbyte.cdk.state.MockCheckpointManager -import io.airbyte.cdk.task.MockTaskLauncher +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.file.MockTimeProvider +import io.airbyte.cdk.load.message.QueueReader +import io.airbyte.cdk.load.state.MockCheckpointManager +import io.airbyte.cdk.load.task.MockTaskLauncher import io.micronaut.test.extensions.junit5.annotation.MicronautTest import jakarta.inject.Inject import kotlinx.coroutines.test.runTest diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/CoroutineTestUtils.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/test/util/CoroutineTestUtils.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/CoroutineTestUtils.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/test/util/CoroutineTestUtils.kt index 18e654caf0369..a63cfed696b2e 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/CoroutineTestUtils.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/test/util/CoroutineTestUtils.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util import kotlin.reflect.KClass diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/RecordDifferTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/test/util/RecordDifferTest.kt similarity index 99% rename from airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/RecordDifferTest.kt rename to airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/test/util/RecordDifferTest.kt index 2c1183dfa0d0c..030d761a35e94 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/test/util/RecordDifferTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/test/util/RecordDifferTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util import java.time.OffsetDateTime import org.junit.jupiter.api.Assertions diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/check/CheckIntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/check/CheckIntegrationTest.kt similarity index 91% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/check/CheckIntegrationTest.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/check/CheckIntegrationTest.kt index 91ac05ebe3440..f7eb2539205ca 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/check/CheckIntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/check/CheckIntegrationTest.kt @@ -2,15 +2,15 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.check +package io.airbyte.cdk.load.check import io.airbyte.cdk.command.ConfigurationSpecification import io.airbyte.cdk.command.ValidatedJsonUtils -import io.airbyte.cdk.test.util.FakeDataDumper -import io.airbyte.cdk.test.util.IntegrationTest -import io.airbyte.cdk.test.util.NoopDestinationCleaner -import io.airbyte.cdk.test.util.NoopExpectedRecordMapper -import io.airbyte.cdk.test.util.destination_process.TestDeploymentMode +import io.airbyte.cdk.load.test.util.FakeDataDumper +import io.airbyte.cdk.load.test.util.IntegrationTest +import io.airbyte.cdk.load.test.util.NoopDestinationCleaner +import io.airbyte.cdk.load.test.util.NoopExpectedRecordMapper +import io.airbyte.cdk.load.test.util.destination_process.TestDeploymentMode import io.airbyte.protocol.models.v0.AirbyteConnectionStatus import io.airbyte.protocol.models.v0.AirbyteMessage import java.nio.charset.StandardCharsets diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/spec/SpecTest.kt similarity index 83% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/spec/SpecTest.kt index f1d1340f2f284..a3c14cee1ad93 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/spec/SpecTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/spec/SpecTest.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.spec +package io.airbyte.cdk.load.spec import com.deblock.jsondiff.DiffGenerator import com.deblock.jsondiff.diff.JsonDiff @@ -12,17 +12,16 @@ import com.deblock.jsondiff.matcher.LenientJsonObjectPartialMatcher import com.deblock.jsondiff.matcher.StrictJsonArrayPartialMatcher import com.deblock.jsondiff.matcher.StrictPrimitivePartialMatcher import com.deblock.jsondiff.viewer.OnlyErrorDiffViewer -import io.airbyte.cdk.test.util.FakeDataDumper -import io.airbyte.cdk.test.util.IntegrationTest -import io.airbyte.cdk.test.util.NoopDestinationCleaner -import io.airbyte.cdk.test.util.NoopExpectedRecordMapper -import io.airbyte.cdk.test.util.destination_process.DestinationProcessFactory -import io.airbyte.cdk.test.util.destination_process.TestDeploymentMode +import io.airbyte.cdk.load.test.util.FakeDataDumper +import io.airbyte.cdk.load.test.util.IntegrationTest +import io.airbyte.cdk.load.test.util.NoopDestinationCleaner +import io.airbyte.cdk.load.test.util.NoopExpectedRecordMapper +import io.airbyte.cdk.load.test.util.destination_process.TestDeploymentMode import io.airbyte.cdk.util.Jsons import io.airbyte.protocol.models.v0.AirbyteMessage import java.nio.file.Files import java.nio.file.Path -import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertAll @@ -67,7 +66,7 @@ abstract class SpecTest : val messages = process.readMessages() val specMessages = messages.filter { it.type == AirbyteMessage.Type.SPEC } - assertEquals( + Assertions.assertEquals( specMessages.size, 1, "Expected to receive exactly one connection status message, but got ${specMessages.size}: $specMessages" @@ -88,8 +87,8 @@ abstract class SpecTest : DiffGenerator.diff(expectedSpec, Jsons.writeValueAsString(spec), jsonMatcher) assertAll( "Spec snapshot test failed. Run this test locally and then `git diff <...>/$expectedSpecFilename` to see what changed, and commit the diff if that change was intentional.", - { assertEquals("", OnlyErrorDiffViewer.from(diff).toString()) }, - { assertEquals(expectedSpec, actualSpecPrettyPrint) } + { Assertions.assertEquals("", OnlyErrorDiffViewer.from(diff).toString()) }, + { Assertions.assertEquals(expectedSpec, actualSpecPrettyPrint) } ) } } diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationCleaner.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/DestinationCleaner.kt similarity index 91% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationCleaner.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/DestinationCleaner.kt index a30c90d90a058..1ab6c2e20f103 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationCleaner.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/DestinationCleaner.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util fun interface DestinationCleaner { /** diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationDataDumper.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/DestinationDataDumper.kt similarity index 93% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationDataDumper.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/DestinationDataDumper.kt index c50ddf02bc3da..93d68879df95f 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/DestinationDataDumper.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/DestinationDataDumper.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util fun interface DestinationDataDumper { fun dumpRecords( diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/ExpectedRecordMapper.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/ExpectedRecordMapper.kt similarity index 89% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/ExpectedRecordMapper.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/ExpectedRecordMapper.kt index 22746f6629c53..d500e8398b977 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/ExpectedRecordMapper.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/ExpectedRecordMapper.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util fun interface ExpectedRecordMapper { fun mapRecord(expectedRecord: OutputRecord): OutputRecord diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/IntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/IntegrationTest.kt similarity index 95% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/IntegrationTest.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/IntegrationTest.kt index 7eed61d8bd6bd..a0fae6a369631 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/IntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/IntegrationTest.kt @@ -2,14 +2,14 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import io.airbyte.cdk.command.ConfigurationSpecification -import io.airbyte.cdk.command.DestinationCatalog -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.DestinationMessage -import io.airbyte.cdk.test.util.destination_process.DestinationProcessFactory +import io.airbyte.cdk.load.command.DestinationCatalog +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.DestinationMessage +import io.airbyte.cdk.load.test.util.destination_process.DestinationProcessFactory import io.airbyte.protocol.models.v0.AirbyteMessage import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage import io.airbyte.protocol.models.v0.AirbyteStreamStatusTraceMessage.AirbyteStreamStatus diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/NameMapper.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/NameMapper.kt similarity index 94% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/NameMapper.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/NameMapper.kt index 9ff5a38d79174..3d87bb661790e 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/NameMapper.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/NameMapper.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util fun interface NameMapper { /** diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/OutputRecord.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/OutputRecord.kt similarity index 93% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/OutputRecord.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/OutputRecord.kt index 18ac7545d50bc..eea70838e18b2 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/OutputRecord.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/OutputRecord.kt @@ -2,10 +2,10 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util -import io.airbyte.cdk.data.ObjectValue -import io.airbyte.cdk.message.DestinationRecord.Change +import io.airbyte.cdk.load.data.ObjectValue +import io.airbyte.cdk.load.message.DestinationRecord.Change import java.time.Instant import java.util.UUID diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/RecordDiffer.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/RecordDiffer.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/RecordDiffer.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/RecordDiffer.kt index 5c18d3954e29c..ce1b702625323 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/RecordDiffer.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/RecordDiffer.kt @@ -2,12 +2,12 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util +package io.airbyte.cdk.load.test.util -import io.airbyte.cdk.data.AirbyteValue -import io.airbyte.cdk.data.IntegerValue -import io.airbyte.cdk.data.NullValue -import io.airbyte.cdk.data.ObjectValue +import io.airbyte.cdk.load.data.AirbyteValue +import io.airbyte.cdk.load.data.IntegerValue +import io.airbyte.cdk.load.data.NullValue +import io.airbyte.cdk.load.data.ObjectValue import kotlin.reflect.jvm.jvmName class RecordDiffer( diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DestinationProcess.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/DestinationProcess.kt similarity index 96% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DestinationProcess.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/DestinationProcess.kt index ce8aab8fc15ff..7b0b8a26bd382 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DestinationProcess.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/DestinationProcess.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util.destination_process +package io.airbyte.cdk.load.test.util.destination_process import io.airbyte.cdk.command.ConfigurationSpecification import io.airbyte.protocol.models.v0.AirbyteMessage diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DockerizedDestination.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/DockerizedDestination.kt similarity index 97% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DockerizedDestination.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/DockerizedDestination.kt index b0886138e5191..ab09197108e10 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/DockerizedDestination.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/DockerizedDestination.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util.destination_process +package io.airbyte.cdk.load.test.util.destination_process import com.fasterxml.jackson.databind.JsonNode import io.airbyte.protocol.models.v0.AirbyteMessage diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/NonDockerizedDestination.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/NonDockerizedDestination.kt similarity index 98% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/NonDockerizedDestination.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/NonDockerizedDestination.kt index ab301f71215d5..672b2b5911f97 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/util/destination_process/NonDockerizedDestination.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/destination_process/NonDockerizedDestination.kt @@ -2,7 +2,7 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.util.destination_process +package io.airbyte.cdk.load.test.util.destination_process import io.airbyte.cdk.command.CliRunnable import io.airbyte.cdk.command.CliRunner diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/write/BasicFunctionalityIntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/write/BasicFunctionalityIntegrationTest.kt similarity index 76% rename from airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/write/BasicFunctionalityIntegrationTest.kt rename to airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/write/BasicFunctionalityIntegrationTest.kt index 7cd18ae8bda08..e5b51aee5ae07 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/test/write/BasicFunctionalityIntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/write/BasicFunctionalityIntegrationTest.kt @@ -2,26 +2,25 @@ * Copyright (c) 2024 Airbyte, Inc., all rights reserved. */ -package io.airbyte.cdk.test.write +package io.airbyte.cdk.load.write -import io.airbyte.cdk.command.Append import io.airbyte.cdk.command.ConfigurationSpecification -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.data.ObjectTypeWithoutSchema -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.StreamCheckpoint -import io.airbyte.cdk.test.util.DestinationCleaner -import io.airbyte.cdk.test.util.DestinationDataDumper -import io.airbyte.cdk.test.util.ExpectedRecordMapper -import io.airbyte.cdk.test.util.IntegrationTest -import io.airbyte.cdk.test.util.NameMapper -import io.airbyte.cdk.test.util.NoopExpectedRecordMapper -import io.airbyte.cdk.test.util.NoopNameMapper -import io.airbyte.cdk.test.util.OutputRecord +import io.airbyte.cdk.load.command.Append +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.data.ObjectTypeWithoutSchema +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.StreamCheckpoint +import io.airbyte.cdk.load.test.util.DestinationCleaner +import io.airbyte.cdk.load.test.util.DestinationDataDumper +import io.airbyte.cdk.load.test.util.ExpectedRecordMapper +import io.airbyte.cdk.load.test.util.IntegrationTest +import io.airbyte.cdk.load.test.util.NameMapper +import io.airbyte.cdk.load.test.util.NoopExpectedRecordMapper +import io.airbyte.cdk.load.test.util.NoopNameMapper +import io.airbyte.cdk.load.test.util.OutputRecord import io.airbyte.protocol.models.v0.AirbyteConnectionStatus import io.airbyte.protocol.models.v0.AirbyteMessage -import io.airbyte.protocol.models.v0.AirbyteRecordMessageMetaChange.Change -import io.airbyte.protocol.models.v0.AirbyteRecordMessageMetaChange.Reason +import io.airbyte.protocol.models.v0.AirbyteRecordMessageMetaChange import kotlin.test.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertAll @@ -79,8 +78,10 @@ abstract class BasicFunctionalityIntegrationTest( listOf( DestinationRecord.Change( field = "foo", - change = Change.NULLED, - reason = Reason.SOURCE_FIELD_SIZE_LIMITATION + change = AirbyteRecordMessageMetaChange.Change.NULLED, + reason = + AirbyteRecordMessageMetaChange.Reason + .SOURCE_FIELD_SIZE_LIMITATION ) ) ), @@ -127,8 +128,12 @@ abstract class BasicFunctionalityIntegrationTest( listOf( DestinationRecord.Change( field = "foo", - change = Change.NULLED, - reason = Reason.SOURCE_FIELD_SIZE_LIMITATION + change = + AirbyteRecordMessageMetaChange.Change + .NULLED, + reason = + AirbyteRecordMessageMetaChange.Reason + .SOURCE_FIELD_SIZE_LIMITATION ) ), syncId = 42 diff --git a/airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/discover/JdbcAirbyteStreamFactory.kt b/airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/discover/JdbcAirbyteStreamFactory.kt index 8818a0380773b..5a19f8aac9c52 100644 --- a/airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/discover/JdbcAirbyteStreamFactory.kt +++ b/airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/discover/JdbcAirbyteStreamFactory.kt @@ -20,7 +20,7 @@ class JdbcAirbyteStreamFactory : AirbyteStreamFactory { supportedSyncModes = listOf(SyncMode.FULL_REFRESH, SyncMode.INCREMENTAL) (jsonSchema["properties"] as ObjectNode).apply { for (metaField in CommonMetaField.entries) { - set(metaField.id, metaField.type.airbyteType.asJsonSchema()) + set(metaField.id, metaField.type.airbyteSchemaType.asJsonSchema()) } } defaultCursorField = listOf(CommonMetaField.CDC_LSN.id) diff --git a/airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/jdbc/JdbcFieldTypes.kt b/airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/jdbc/JdbcFieldTypes.kt index 44b0ba036aecf..5b193d96de39e 100644 --- a/airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/jdbc/JdbcFieldTypes.kt +++ b/airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/jdbc/JdbcFieldTypes.kt @@ -2,9 +2,9 @@ package io.airbyte.cdk.jdbc import com.fasterxml.jackson.databind.JsonNode -import io.airbyte.cdk.data.AirbyteType +import io.airbyte.cdk.data.AirbyteSchemaType import io.airbyte.cdk.data.AnyEncoder -import io.airbyte.cdk.data.ArrayAirbyteType +import io.airbyte.cdk.data.ArrayAirbyteSchemaType import io.airbyte.cdk.data.ArrayEncoder import io.airbyte.cdk.data.BigDecimalCodec import io.airbyte.cdk.data.BigDecimalIntegerCodec @@ -18,7 +18,7 @@ import io.airbyte.cdk.data.JsonCodec import io.airbyte.cdk.data.JsonDecoder import io.airbyte.cdk.data.JsonEncoder import io.airbyte.cdk.data.JsonStringCodec -import io.airbyte.cdk.data.LeafAirbyteType +import io.airbyte.cdk.data.LeafAirbyteSchemaType import io.airbyte.cdk.data.LocalDateCodec import io.airbyte.cdk.data.LocalDateTimeCodec import io.airbyte.cdk.data.LocalTimeCodec @@ -44,7 +44,7 @@ import java.time.OffsetTime /** Convenience class for defining concrete [FieldType] objects. */ abstract class JdbcFieldType( - override val airbyteType: AirbyteType, + override val airbyteSchemaType: AirbyteSchemaType, val jdbcGetter: JdbcGetter, override val jsonEncoder: JsonEncoder, ) : FieldType, JdbcGetter { @@ -60,13 +60,13 @@ abstract class JdbcFieldType( /** Convenience class for defining concrete [LosslessFieldType] objects. */ abstract class LosslessJdbcFieldType( - airbyteType: AirbyteType, + airbyteSchemaType: AirbyteSchemaType, jdbcGetter: JdbcGetter, jsonEncoder: JsonEncoder, override val jsonDecoder: JsonDecoder, val jdbcSetter: JdbcSetter, ) : - JdbcFieldType(airbyteType, jdbcGetter, jsonEncoder), + JdbcFieldType(airbyteSchemaType, jdbcGetter, jsonEncoder), LosslessFieldType, JdbcSetter { override fun set( @@ -80,175 +80,182 @@ abstract class LosslessJdbcFieldType( /** Convenience class for defining concrete [LosslessFieldType] objects. */ abstract class SymmetricJdbcFieldType( - airbyteType: AirbyteType, + airbyteSchemaType: AirbyteSchemaType, jdbcAccessor: JdbcAccessor, jsonCodec: JsonCodec, -) : LosslessJdbcFieldType(airbyteType, jdbcAccessor, jsonCodec, jsonCodec, jdbcAccessor) +) : + LosslessJdbcFieldType( + airbyteSchemaType, + jdbcAccessor, + jsonCodec, + jsonCodec, + jdbcAccessor + ) data object BooleanFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.BOOLEAN, + LeafAirbyteSchemaType.BOOLEAN, BooleanAccessor, BooleanCodec, ) data object BigDecimalFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.NUMBER, + LeafAirbyteSchemaType.NUMBER, BigDecimalAccessor, BigDecimalCodec, ) data object DoubleFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.NUMBER, + LeafAirbyteSchemaType.NUMBER, DoubleAccessor, DoubleCodec, ) data object FloatFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.NUMBER, + LeafAirbyteSchemaType.NUMBER, FloatAccessor, FloatCodec, ) data object BigIntegerFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.INTEGER, + LeafAirbyteSchemaType.INTEGER, BigDecimalAccessor, BigDecimalIntegerCodec, ) data object LongFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.INTEGER, + LeafAirbyteSchemaType.INTEGER, LongAccessor, LongCodec, ) data object IntFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.INTEGER, + LeafAirbyteSchemaType.INTEGER, IntAccessor, IntCodec, ) data object ShortFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.INTEGER, + LeafAirbyteSchemaType.INTEGER, ShortAccessor, ShortCodec, ) data object ByteFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.INTEGER, + LeafAirbyteSchemaType.INTEGER, ByteAccessor, ByteCodec, ) data object StringFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, StringAccessor, TextCodec, ) data object NStringFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, NStringAccessor, TextCodec, ) data object CharacterStreamFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, CharacterStreamAccessor, TextCodec, ) data object NCharacterStreamFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, NCharacterStreamAccessor, TextCodec, ) data object ClobFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, ClobAccessor, TextCodec, ) data object NClobFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, NClobAccessor, TextCodec, ) data object XmlFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, XmlAccessor, TextCodec, ) data object UrlFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, UrlAccessor, UrlCodec, ) data object BytesFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.BINARY, + LeafAirbyteSchemaType.BINARY, BytesAccessor, BinaryCodec, ) data object BinaryStreamFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.BINARY, + LeafAirbyteSchemaType.BINARY, BinaryStreamAccessor, BinaryCodec, ) data object JsonStringFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.JSONB, + LeafAirbyteSchemaType.JSONB, StringAccessor, JsonStringCodec, ) data object LocalDateFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.DATE, + LeafAirbyteSchemaType.DATE, DateAccessor, LocalDateCodec, ) data object LocalTimeFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.TIME_WITHOUT_TIMEZONE, + LeafAirbyteSchemaType.TIME_WITHOUT_TIMEZONE, TimeAccessor, LocalTimeCodec, ) data object LocalDateTimeFieldType : SymmetricJdbcFieldType( - LeafAirbyteType.TIMESTAMP_WITHOUT_TIMEZONE, + LeafAirbyteSchemaType.TIMESTAMP_WITHOUT_TIMEZONE, TimestampAccessor, LocalDateTimeCodec, ) data object OffsetTimeFieldType : LosslessJdbcFieldType( - LeafAirbyteType.TIME_WITH_TIMEZONE, + LeafAirbyteSchemaType.TIME_WITH_TIMEZONE, ObjectGetter(OffsetTime::class.java), OffsetTimeCodec, OffsetTimeCodec, @@ -257,7 +264,7 @@ data object OffsetTimeFieldType : data object OffsetDateTimeFieldType : LosslessJdbcFieldType( - LeafAirbyteType.TIMESTAMP_WITH_TIMEZONE, + LeafAirbyteSchemaType.TIMESTAMP_WITH_TIMEZONE, ObjectGetter(OffsetDateTime::class.java), OffsetDateTimeCodec, OffsetDateTimeCodec, @@ -266,14 +273,14 @@ data object OffsetDateTimeFieldType : data object PokemonFieldType : JdbcFieldType( - LeafAirbyteType.STRING, + LeafAirbyteSchemaType.STRING, StringAccessor, AnyEncoder, ) data object NullFieldType : JdbcFieldType( - LeafAirbyteType.NULL, + LeafAirbyteSchemaType.NULL, AnyAccessor, NullCodec, ) @@ -282,7 +289,7 @@ data class ArrayFieldType( val elementFieldType: JdbcFieldType, ) : JdbcFieldType>( - ArrayAirbyteType(elementFieldType.airbyteType), + ArrayAirbyteSchemaType(elementFieldType.airbyteSchemaType), ArrayGetter(elementFieldType.jdbcGetter), ArrayEncoder(elementFieldType.jsonEncoder), ) diff --git a/airbyte-integrations/connectors/destination-dev-null/metadata.yaml b/airbyte-integrations/connectors/destination-dev-null/metadata.yaml index cc57ffecbd40e..fc32ebeb425c2 100644 --- a/airbyte-integrations/connectors/destination-dev-null/metadata.yaml +++ b/airbyte-integrations/connectors/destination-dev-null/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: file connectorType: destination definitionId: a7bcc9d8-13b3-4e49-b80d-d020b90045e3 - dockerImageTag: 0.7.3 + dockerImageTag: 0.7.4 dockerRepository: airbyte/destination-dev-null githubIssueLabel: destination-dev-null icon: airbyte.svg diff --git a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullChecker.kt b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullChecker.kt index 319dbadb9c277..dcbd95bc8ec12 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullChecker.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullChecker.kt @@ -4,7 +4,7 @@ package io.airbyte.integrations.destination.dev_null -import io.airbyte.cdk.check.DestinationChecker +import io.airbyte.cdk.load.check.DestinationChecker import jakarta.inject.Singleton @Singleton diff --git a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullConfiguration.kt b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullConfiguration.kt index 5e868eb1e93cb..6de60f3dd8b22 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullConfiguration.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullConfiguration.kt @@ -4,8 +4,8 @@ package io.airbyte.integrations.destination.dev_null -import io.airbyte.cdk.command.DestinationConfiguration -import io.airbyte.cdk.command.DestinationConfigurationFactory +import io.airbyte.cdk.load.command.DestinationConfiguration +import io.airbyte.cdk.load.command.DestinationConfigurationFactory import io.micronaut.context.annotation.Factory import jakarta.inject.Singleton diff --git a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecification.kt b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecification.kt index f258855f68cda..0eb567f841714 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecification.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecification.kt @@ -13,7 +13,7 @@ import com.fasterxml.jackson.annotation.JsonValue import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaInject import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import io.airbyte.cdk.command.ConfigurationSpecification -import io.airbyte.cdk.spec.DestinationSpecificationExtension +import io.airbyte.cdk.load.spec.DestinationSpecificationExtension import io.airbyte.protocol.models.v0.DestinationSyncMode import io.micronaut.context.annotation.Requires import jakarta.inject.Singleton diff --git a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullWriter.kt b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullWriter.kt index eed85d211dc9c..20ec5486e4e27 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullWriter.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullWriter.kt @@ -5,12 +5,12 @@ package io.airbyte.integrations.destination.dev_null import edu.umd.cs.findbugs.annotations.SuppressFBWarnings -import io.airbyte.cdk.command.DestinationStream -import io.airbyte.cdk.message.Batch -import io.airbyte.cdk.message.DestinationRecord -import io.airbyte.cdk.message.SimpleBatch -import io.airbyte.cdk.write.DestinationWriter -import io.airbyte.cdk.write.StreamLoader +import io.airbyte.cdk.load.command.DestinationStream +import io.airbyte.cdk.load.message.Batch +import io.airbyte.cdk.load.message.DestinationRecord +import io.airbyte.cdk.load.message.SimpleBatch +import io.airbyte.cdk.load.write.DestinationWriter +import io.airbyte.cdk.load.write.StreamLoader import io.github.oshai.kotlinlogging.KotlinLogging import jakarta.inject.Singleton import java.util.concurrent.atomic.AtomicInteger diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt index 4d7bd50359657..c0ecf552744ac 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt @@ -4,9 +4,9 @@ package io.airbyte.integrations.destination.dev_null -import io.airbyte.cdk.test.util.NoopDestinationCleaner -import io.airbyte.cdk.test.util.NoopExpectedRecordMapper -import io.airbyte.cdk.test.write.BasicFunctionalityIntegrationTest +import io.airbyte.cdk.load.test.util.NoopDestinationCleaner +import io.airbyte.cdk.load.test.util.NoopExpectedRecordMapper +import io.airbyte.cdk.load.write.BasicFunctionalityIntegrationTest import org.junit.jupiter.api.Test class DevNullBasicFunctionalityIntegrationTest : diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullCheckIntegrationTest.kt b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullCheckIntegrationTest.kt index 798eade8eaccb..5d3539ad251c1 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullCheckIntegrationTest.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullCheckIntegrationTest.kt @@ -4,9 +4,9 @@ package io.airbyte.integrations.destination.dev_null -import io.airbyte.cdk.test.check.CheckIntegrationTest -import io.airbyte.cdk.test.check.CheckTestConfig -import io.airbyte.cdk.test.util.destination_process.TestDeploymentMode +import io.airbyte.cdk.load.check.CheckIntegrationTest +import io.airbyte.cdk.load.check.CheckTestConfig +import io.airbyte.cdk.load.test.util.destination_process.TestDeploymentMode import java.util.regex.Pattern import org.junit.jupiter.api.Test diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationDataDumper.kt b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationDataDumper.kt index f9681796aef7f..c322c5e26e57a 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationDataDumper.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationDataDumper.kt @@ -4,8 +4,8 @@ package io.airbyte.integrations.destination.dev_null -import io.airbyte.cdk.test.util.DestinationDataDumper -import io.airbyte.cdk.test.util.OutputRecord +import io.airbyte.cdk.load.test.util.DestinationDataDumper +import io.airbyte.cdk.load.test.util.OutputRecord object DevNullDestinationDataDumper : DestinationDataDumper { override fun dumpRecords(streamName: String, streamNamespace: String?): List { diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecTest.kt b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecTest.kt index 0c80d835a462d..8af3c5f9011d5 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecTest.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullSpecTest.kt @@ -4,6 +4,6 @@ package io.airbyte.integrations.destination.dev_null -import io.airbyte.cdk.test.spec.SpecTest +import io.airbyte.cdk.load.spec.SpecTest class DevNullSpecTest : SpecTest() diff --git a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml index baa1cd155d0c3..f46c784501d15 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml +++ b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: 561393ed-7e3a-4d0d-8b8b-90ded371754c - dockerImageTag: 0.0.18 + dockerImageTag: 0.0.19 dockerRepository: airbyte/source-mysql-v2 documentationUrl: https://docs.airbyte.com/integrations/sources/mysql githubIssueLabel: source-mysql-v2 diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcStreamFactory.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcStreamFactory.kt index 9060572a93a98..e04c36e686807 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcStreamFactory.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcStreamFactory.kt @@ -26,7 +26,7 @@ class MysqlJdbcStreamFactory(val base: JdbcAirbyteStreamFactory) : AirbyteStream return AirbyteStreamFactory.createAirbyteStream(discoveredStream).apply { (jsonSchema["properties"] as ObjectNode).apply { for (metaField in MysqlCDCMetaFields.entries) { - set(metaField.id, metaField.type.airbyteType.asJsonSchema()) + set(metaField.id, metaField.type.airbyteSchemaType.asJsonSchema()) } } if (base.hasValidPrimaryKey(discoveredStream)) { diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt index 12d4a4ecbcc66..5b2eee35bb686 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt @@ -4,8 +4,8 @@ package io.airbyte.integrations.source.mysql import com.fasterxml.jackson.databind.JsonNode import io.airbyte.cdk.ClockFactory import io.airbyte.cdk.command.CliRunner -import io.airbyte.cdk.data.AirbyteType -import io.airbyte.cdk.data.LeafAirbyteType +import io.airbyte.cdk.data.AirbyteSchemaType +import io.airbyte.cdk.data.LeafAirbyteSchemaType import io.airbyte.cdk.jdbc.JdbcConnectionFactory import io.airbyte.cdk.output.BufferingOutputConsumer import io.airbyte.cdk.util.Jsons @@ -127,7 +127,7 @@ class MysqlSourceDatatypeIntegrationTest { if (streamName == testCase.tableName) { val actualSchema: JsonNode = jsonSchema[testCase.columnName] Assertions.assertNotNull(actualSchema) - val expectedSchema: JsonNode = testCase.airbyteType.asJsonSchema() + val expectedSchema: JsonNode = testCase.airbyteSchemaType.asJsonSchema() Assertions.assertEquals(expectedSchema, actualSchema) if (testCase.cursor) { Assertions.assertTrue(isIncrementalSupported) @@ -260,67 +260,133 @@ class MysqlSourceDatatypeIntegrationTest { TestCase( "BOOLEAN", booleanValues, - airbyteType = LeafAirbyteType.BOOLEAN, + airbyteSchemaType = LeafAirbyteSchemaType.BOOLEAN, cursor = false ), - TestCase("VARCHAR(10)", stringValues, airbyteType = LeafAirbyteType.STRING), - TestCase("DECIMAL(10,2)", decimalValues, airbyteType = LeafAirbyteType.NUMBER), + TestCase( + "VARCHAR(10)", + stringValues, + airbyteSchemaType = LeafAirbyteSchemaType.STRING + ), + TestCase( + "DECIMAL(10,2)", + decimalValues, + airbyteSchemaType = LeafAirbyteSchemaType.NUMBER + ), TestCase( "DECIMAL(10,2) UNSIGNED", decimalValues, - airbyteType = LeafAirbyteType.NUMBER + airbyteSchemaType = LeafAirbyteSchemaType.NUMBER ), TestCase( "DECIMAL UNSIGNED", zeroPrecisionDecimalValues, - airbyteType = LeafAirbyteType.INTEGER + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER + ), + TestCase("FLOAT", decimalValues, airbyteSchemaType = LeafAirbyteSchemaType.NUMBER), + TestCase( + "FLOAT(7,4)", + decimalValues, + airbyteSchemaType = LeafAirbyteSchemaType.NUMBER + ), + TestCase( + "FLOAT(53,8)", + decimalValues, + airbyteSchemaType = LeafAirbyteSchemaType.NUMBER + ), + TestCase("DOUBLE", decimalValues, airbyteSchemaType = LeafAirbyteSchemaType.NUMBER), + TestCase( + "DOUBLE UNSIGNED", + decimalValues, + airbyteSchemaType = LeafAirbyteSchemaType.NUMBER + ), + TestCase( + "TINYINT", + tinyintValues, + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER + ), + TestCase( + "TINYINT UNSIGNED", + tinyintValues, + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER + ), + TestCase( + "SMALLINT", + tinyintValues, + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER + ), + TestCase( + "MEDIUMINT", + tinyintValues, + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER + ), + TestCase("BIGINT", intValues, airbyteSchemaType = LeafAirbyteSchemaType.INTEGER), + TestCase( + "SMALLINT UNSIGNED", + tinyintValues, + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER ), - TestCase("FLOAT", decimalValues, airbyteType = LeafAirbyteType.NUMBER), - TestCase("FLOAT(7,4)", decimalValues, airbyteType = LeafAirbyteType.NUMBER), - TestCase("FLOAT(53,8)", decimalValues, airbyteType = LeafAirbyteType.NUMBER), - TestCase("DOUBLE", decimalValues, airbyteType = LeafAirbyteType.NUMBER), - TestCase("DOUBLE UNSIGNED", decimalValues, airbyteType = LeafAirbyteType.NUMBER), - TestCase("TINYINT", tinyintValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("TINYINT UNSIGNED", tinyintValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("SMALLINT", tinyintValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("MEDIUMINT", tinyintValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("BIGINT", intValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("SMALLINT UNSIGNED", tinyintValues, airbyteType = LeafAirbyteType.INTEGER), TestCase( "MEDIUMINT UNSIGNED", tinyintValues, - airbyteType = LeafAirbyteType.INTEGER + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER + ), + TestCase( + "BIGINT UNSIGNED", + intValues, + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER + ), + TestCase("INT", intValues, airbyteSchemaType = LeafAirbyteSchemaType.INTEGER), + TestCase( + "INT UNSIGNED", + intValues, + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER ), - TestCase("BIGINT UNSIGNED", intValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("INT", intValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("INT UNSIGNED", intValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("DATE", dateValues, airbyteType = LeafAirbyteType.DATE), + TestCase("DATE", dateValues, airbyteSchemaType = LeafAirbyteSchemaType.DATE), TestCase( "TIMESTAMP", timestampValues, - airbyteType = LeafAirbyteType.TIMESTAMP_WITH_TIMEZONE + airbyteSchemaType = LeafAirbyteSchemaType.TIMESTAMP_WITH_TIMEZONE ), TestCase( "DATETIME", dateTimeValues, - airbyteType = LeafAirbyteType.TIMESTAMP_WITHOUT_TIMEZONE + airbyteSchemaType = LeafAirbyteSchemaType.TIMESTAMP_WITHOUT_TIMEZONE ), - TestCase("TIME", timeValues, airbyteType = LeafAirbyteType.TIME_WITHOUT_TIMEZONE), - TestCase("YEAR", yearValues, airbyteType = LeafAirbyteType.INTEGER), + TestCase( + "TIME", + timeValues, + airbyteSchemaType = LeafAirbyteSchemaType.TIME_WITHOUT_TIMEZONE + ), + TestCase("YEAR", yearValues, airbyteSchemaType = LeafAirbyteSchemaType.INTEGER), TestCase( "VARBINARY(255)", binaryValues, - airbyteType = LeafAirbyteType.BINARY, + airbyteSchemaType = LeafAirbyteSchemaType.BINARY, cursor = false, noPK = true ), - TestCase("BIT", bitValues, airbyteType = LeafAirbyteType.BOOLEAN, cursor = false), - TestCase("BIT(8)", longBitValues, airbyteType = LeafAirbyteType.INTEGER), - TestCase("JSON", jsonValues, airbyteType = LeafAirbyteType.STRING, noPK = true), + TestCase( + "BIT", + bitValues, + airbyteSchemaType = LeafAirbyteSchemaType.BOOLEAN, + cursor = false + ), + TestCase( + "BIT(8)", + longBitValues, + airbyteSchemaType = LeafAirbyteSchemaType.INTEGER + ), + TestCase( + "JSON", + jsonValues, + airbyteSchemaType = LeafAirbyteSchemaType.STRING, + noPK = true + ), TestCase( "ENUM('a', 'b', 'c')", enumValues, - airbyteType = LeafAirbyteType.STRING, + airbyteSchemaType = LeafAirbyteSchemaType.STRING, noPK = true ), ) @@ -354,7 +420,7 @@ class MysqlSourceDatatypeIntegrationTest { data class TestCase( val sqlType: String, val sqlToAirbyte: Map, - val airbyteType: AirbyteType = LeafAirbyteType.STRING, + val airbyteSchemaType: AirbyteSchemaType = LeafAirbyteSchemaType.STRING, val cursor: Boolean = true, val noPK: Boolean = false, val customDDL: List? = null, diff --git a/docs/integrations/destinations/dev-null.md b/docs/integrations/destinations/dev-null.md index b65bb1782a716..1b0dcd21d15fc 100644 --- a/docs/integrations/destinations/dev-null.md +++ b/docs/integrations/destinations/dev-null.md @@ -49,6 +49,7 @@ The OSS and Cloud variants have the same version number starting from version `0 | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------| +| 0.7.4 | 2024-10-08 | [46650](https://github.com/airbytehq/airbyte/pull/46650) | Internal code changes | | 0.7.3 | 2024-10-01 | [46559](https://github.com/airbytehq/airbyte/pull/46559) | From load CDK: async improvements, stream incomplete, additionalProperties on state messages | | 0.7.2 | 2024-10-01 | [45929](https://github.com/airbytehq/airbyte/pull/45929) | Internal code changes | | 0.7.1 | 2024-09-30 | [46276](https://github.com/airbytehq/airbyte/pull/46276) | Upgrade to latest bulk CDK | diff --git a/spotbugs-exclude-filter-file.xml b/spotbugs-exclude-filter-file.xml index 6b825caa6c30f..f37159bac3d4b 100644 --- a/spotbugs-exclude-filter-file.xml +++ b/spotbugs-exclude-filter-file.xml @@ -20,6 +20,6 @@ - + From ae87405bb0bcdec1e3fd75426043f95da9c38632 Mon Sep 17 00:00:00 2001 From: "Aaron (\"AJ\") Steers" Date: Tue, 8 Oct 2024 15:03:16 -0700 Subject: [PATCH 194/379] Source-Salesforce: Unpin connector and take fix from CDK `v5.10.2` (#46653) --- .../source-salesforce/metadata.yaml | 1 - docs/integrations/sources/salesforce.md | 32 +++++++++---------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/airbyte-integrations/connectors/source-salesforce/metadata.yaml b/airbyte-integrations/connectors/source-salesforce/metadata.yaml index 0cf5b1fe0bfdc..6e1672f931102 100644 --- a/airbyte-integrations/connectors/source-salesforce/metadata.yaml +++ b/airbyte-integrations/connectors/source-salesforce/metadata.yaml @@ -25,7 +25,6 @@ data: registryOverrides: cloud: enabled: true - dockerImageTag: 2.5.34 oss: enabled: true releaseStage: generally_available diff --git a/docs/integrations/sources/salesforce.md b/docs/integrations/sources/salesforce.md index 11b808b111c2e..5925c77a4f510 100644 --- a/docs/integrations/sources/salesforce.md +++ b/docs/integrations/sources/salesforce.md @@ -31,31 +31,31 @@ To use this connector, you'll need at least the Enterprise edition of Salesforce Follow the instructions below to create a Minimum Access standard profile and assign custom permission sets to grant the new user the read access needed for data you want to access with Airbyte. -While you can set up the Salesforce connector using any Salesforce user with read permission, we recommend creating a dedicated user with the Minimum Access standard profile for Airbyte. This allows you to granularly control the data Airbyte can read. - -Using Permission Sets, you should grant this user read access to the data you want Airbyte to have access to. Learn more about Permission sets by referring to [Salesforce's documentation](https://help.salesforce.com/s/articleView?id=sf.perm_sets_overview.htm&type=5). +While you can set up the Salesforce connector using any Salesforce user with read permission, we recommend creating a dedicated user with the Minimum Access standard profile for Airbyte. This allows you to granularly control the data Airbyte can read. + +Using Permission Sets, you should grant this user read access to the data you want Airbyte to have access to. Learn more about Permission sets by referring to [Salesforce's documentation](https://help.salesforce.com/s/articleView?id=sf.perm_sets_overview.htm&type=5). [Log in to Salesforce](https://login.salesforce.com/) with an admin account. -#### 1. Create a new User: +#### 1. Create a new User: - On the top right of the screen, click the gear icon and then click **Setup**. -- In the left navigation bar, under Administration, click **Users** > **Users**. Create a new User, entering details for the user's first name, last name, alias, and email. Filling in the email field will auto-populate the username field and nickname. +- In the left navigation bar, under Administration, click **Users** > **Users**. Create a new User, entering details for the user's first name, last name, alias, and email. Filling in the email field will auto-populate the username field and nickname. - Leave `role` unspecified - Select `Salesforce Platform` for the User License - - Select `Standard Platform User` for Profile. - - Decide whether to generate a new password and notify the user. + - Select `Standard Platform User` for Profile. + - Decide whether to generate a new password and notify the user. - Select `save` -#### 2. Create a new Permission Set: -- Using the left navigation bar, select **Users** > **Permission Sets** -- Click `New` to create a new Permission Set. -- Give your permission set a descriptive label name (e.g., "Airbyte Read Only Access"). The API name will autopopulate based on the label you give the permission set. -- For licence, leave this set to` –None—` and click `save`. -- Now that you see the permission set is created, define the permissions via Object Settings. +#### 2. Create a new Permission Set: +- Using the left navigation bar, select **Users** > **Permission Sets** +- Click `New` to create a new Permission Set. +- Give your permission set a descriptive label name (e.g., "Airbyte Read Only Access"). The API name will autopopulate based on the label you give the permission set. +- For licence, leave this set to` –None—` and click `save`. +- Now that you see the permission set is created, define the permissions via Object Settings. - Click "Object Settings." - Select the `Object Name` for each object you want the user to have read-only access to (e.g., Accounts, Contacts, Opportunities). - Select “Edit” and check the "Read" permission and uncheck all other permissions (Create, Edit, Delete, etc.). - Click `Save` - - Continue to add read permissions for any objects you want Airbyte to have access to. + - Continue to add read permissions for any objects you want Airbyte to have access to. #### 3. Assign the Permission Set to the new User - From the Permission Sets page, click "Manage Assignments" next to the read-only permission set you just created. - Click "Add Assignments." @@ -66,7 +66,7 @@ Log into the email you used above and verify your new Salesforce account user. Y :::info **Profile vs. Permission Set:** Remember that the user's profile will provide their baseline permissions. The permission set adds or restricts permissions on top of that. -**Object-Level vs. Field-Level Security:** This guide focuses on object-level read-only access. While setting up your permission set, you can stick with object-level security or define more granular controls by scrolling down within each object settings page to select read access for only needed fields. +**Object-Level vs. Field-Level Security:** This guide focuses on object-level read-only access. While setting up your permission set, you can stick with object-level security or define more granular controls by scrolling down within each object settings page to select read access for only needed fields. ::: @@ -219,7 +219,7 @@ Now that you have set up the Salesforce source connector, check out the followin | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------| -| 2.6.1 | 2024-10-05 | [46436](https://github.com/airbytehq/airbyte/pull/46436) | Update dependencies | +| 2.6.1 | 2024-10-05 | [46436](https://github.com/airbytehq/airbyte/pull/46436) | Update dependencies, including CDK fix in v5.10.2 | | 2.6.0 | 2024-10-02 | [45678](https://github.com/airbytehq/airbyte/pull/45678) | Have bulk streams use CDK components | | 2.5.34 | 2024-09-28 | [46187](https://github.com/airbytehq/airbyte/pull/46187) | Update dependencies | | 2.5.33 | 2024-09-21 | [45779](https://github.com/airbytehq/airbyte/pull/45779) | Update dependencies | From 09adcda2862f6d695687a33c406fed5ce602f451 Mon Sep 17 00:00:00 2001 From: Natik Gadzhi Date: Tue, 8 Oct 2024 15:56:22 -0700 Subject: [PATCH 195/379] chore: enable 5 more sources on cloud (plaid, flexport. apple search ads, n8n, etc) (#46565) --- .../connectors/source-apple-search-ads/metadata.yaml | 2 +- airbyte-integrations/connectors/source-flexport/metadata.yaml | 2 +- airbyte-integrations/connectors/source-n8n/metadata.yaml | 2 +- airbyte-integrations/connectors/source-plaid/metadata.yaml | 2 +- airbyte-integrations/connectors/source-unleash/metadata.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/airbyte-integrations/connectors/source-apple-search-ads/metadata.yaml b/airbyte-integrations/connectors/source-apple-search-ads/metadata.yaml index c7595b6959cd0..590c6c63b2e0e 100644 --- a/airbyte-integrations/connectors/source-apple-search-ads/metadata.yaml +++ b/airbyte-integrations/connectors/source-apple-search-ads/metadata.yaml @@ -14,7 +14,7 @@ data: packageName: airbyte-source-apple-search-ads registryOverrides: cloud: - enabled: false + enabled: true oss: enabled: true releaseStage: alpha diff --git a/airbyte-integrations/connectors/source-flexport/metadata.yaml b/airbyte-integrations/connectors/source-flexport/metadata.yaml index 1537cd31e7bef..d99631a76de06 100644 --- a/airbyte-integrations/connectors/source-flexport/metadata.yaml +++ b/airbyte-integrations/connectors/source-flexport/metadata.yaml @@ -11,7 +11,7 @@ data: oss: enabled: true cloud: - enabled: false + enabled: true connectorSubtype: api connectorType: source definitionId: f95337f1-2ad1-4baf-922f-2ca9152de630 diff --git a/airbyte-integrations/connectors/source-n8n/metadata.yaml b/airbyte-integrations/connectors/source-n8n/metadata.yaml index de87c787b99c4..1d6598bf43113 100644 --- a/airbyte-integrations/connectors/source-n8n/metadata.yaml +++ b/airbyte-integrations/connectors/source-n8n/metadata.yaml @@ -14,7 +14,7 @@ data: packageName: airbyte-source-n8n registryOverrides: cloud: - enabled: false + enabled: true oss: enabled: true releaseStage: alpha diff --git a/airbyte-integrations/connectors/source-plaid/metadata.yaml b/airbyte-integrations/connectors/source-plaid/metadata.yaml index 0285318843d45..4331fa61fa674 100644 --- a/airbyte-integrations/connectors/source-plaid/metadata.yaml +++ b/airbyte-integrations/connectors/source-plaid/metadata.yaml @@ -14,7 +14,7 @@ data: packageName: airbyte-source-plaid registryOverrides: cloud: - enabled: false + enabled: true oss: enabled: true releaseStage: alpha diff --git a/airbyte-integrations/connectors/source-unleash/metadata.yaml b/airbyte-integrations/connectors/source-unleash/metadata.yaml index 8c91bb98ac434..dc71a123754f1 100644 --- a/airbyte-integrations/connectors/source-unleash/metadata.yaml +++ b/airbyte-integrations/connectors/source-unleash/metadata.yaml @@ -14,7 +14,7 @@ data: packageName: airbyte-source-unleash registryOverrides: cloud: - enabled: false + enabled: true oss: enabled: true releaseStage: alpha From 111966cc708743b6b3b14a7c85531e661cd5ebff Mon Sep 17 00:00:00 2001 From: Natik Gadzhi Date: Tue, 8 Oct 2024 18:51:38 -0700 Subject: [PATCH 196/379] feat(airbyte-ci): connectors up-to-date manifest-only support (#46534) --- airbyte-ci/connectors/base_images/README.md | 4 ++++ .../base_images/base_images/bases.py | 7 ++++--- .../base_images/base_images/python/bases.py | 8 ++++++-- .../base_images/version_registry.py | 18 +++++++++++++++--- .../connectors/base_images/pyproject.toml | 2 +- airbyte-ci/connectors/pipelines/README.md | 1 + .../connectors/up_to_date/commands.py | 3 +-- .../connectors/up_to_date/pipeline.py | 12 ++++++++++-- .../airbyte_ci/connectors/up_to_date/steps.py | 1 - airbyte-ci/connectors/pipelines/pyproject.toml | 2 +- 10 files changed, 43 insertions(+), 15 deletions(-) diff --git a/airbyte-ci/connectors/base_images/README.md b/airbyte-ci/connectors/base_images/README.md index 24b58440fad21..5f557fe205a10 100644 --- a/airbyte-ci/connectors/base_images/README.md +++ b/airbyte-ci/connectors/base_images/README.md @@ -94,6 +94,10 @@ poetry run mypy base_images --check-untyped-defs ``` ## CHANGELOG +### 1.0.2 + +- Improved support for images with non-semantic-versioned tags. + ### 1.0.1 - Bumped dependencies ([#42581](https://github.com/airbytehq/airbyte/pull/42581)) diff --git a/airbyte-ci/connectors/base_images/base_images/bases.py b/airbyte-ci/connectors/base_images/base_images/bases.py index 7a8ffcf4e17eb..895ec1fbfa8b9 100644 --- a/airbyte-ci/connectors/base_images/base_images/bases.py +++ b/airbyte-ci/connectors/base_images/base_images/bases.py @@ -3,6 +3,7 @@ # """This module declares common (abstract) classes and methods used by all base images.""" + from __future__ import annotations from abc import ABC, abstractmethod @@ -41,10 +42,8 @@ def name_with_tag(self) -> str: """ return f"{self.repository}:{self.version}" - # MANDATORY SUBCLASSES ATTRIBUTES / PROPERTIES: - + # Child classes should define their root image if the image is indeed managed by base_images. @property - @abstractmethod def root_image(self) -> PublishedImage: """Returns the base image used to build the Airbyte base image. @@ -56,6 +55,8 @@ def root_image(self) -> PublishedImage: """ raise NotImplementedError("Subclasses must define a 'root_image' attribute.") + # MANDATORY SUBCLASSES ATTRIBUTES / PROPERTIES: + @property @abstractmethod def repository(self) -> str: diff --git a/airbyte-ci/connectors/base_images/base_images/python/bases.py b/airbyte-ci/connectors/base_images/base_images/python/bases.py index ce36dabaf21fd..92beac12f758f 100644 --- a/airbyte-ci/connectors/base_images/base_images/python/bases.py +++ b/airbyte-ci/connectors/base_images/base_images/python/bases.py @@ -1,7 +1,6 @@ # # Copyright (c) 2023 Airbyte, Inc., all rights reserved. # - from __future__ import annotations from typing import Callable, Final @@ -13,8 +12,13 @@ from base_images.root_images import PYTHON_3_10_14 -class AirbytePythonConnectorBaseImage(bases.AirbyteConnectorBaseImage): +class AirbyteManifestOnlyConnectorBaseImage(bases.AirbyteConnectorBaseImage): + """ManifestOnly base image class, only used to fetch the registry.""" + + repository: Final[str] = "airbyte/source-declarative-manifest" + +class AirbytePythonConnectorBaseImage(bases.AirbyteConnectorBaseImage): root_image: Final[published_image.PublishedImage] = PYTHON_3_10_14 repository: Final[str] = "airbyte/python-connector-base" pip_cache_name: Final[str] = "pip_cache" diff --git a/airbyte-ci/connectors/base_images/base_images/version_registry.py b/airbyte-ci/connectors/base_images/base_images/version_registry.py index bd7fd27260c09..3f142051f494b 100644 --- a/airbyte-ci/connectors/base_images/base_images/version_registry.py +++ b/airbyte-ci/connectors/base_images/base_images/version_registry.py @@ -7,13 +7,13 @@ import json from dataclasses import dataclass from pathlib import Path -from typing import Dict, List, Optional, Tuple, Type +from typing import Dict, List, Mapping, Optional, Tuple, Type import dagger import semver from base_images import consts, published_image from base_images.bases import AirbyteConnectorBaseImage -from base_images.python.bases import AirbytePythonConnectorBaseImage +from base_images.python.bases import AirbyteManifestOnlyConnectorBaseImage, AirbytePythonConnectorBaseImage from base_images.utils import docker from connector_ops.utils import ConnectorLanguage # type: ignore @@ -145,7 +145,13 @@ async def load( ) # Build a dict of published images by version number for easier lookup - published_docker_images_by_version = {image.version: image for image in published_docker_images} + published_docker_images_by_version = dict() + for image in published_docker_images: + try: + published_docker_images_by_version[image.version] = image + # Skip any images with invalid version tags (i.e. "test_build") + except ValueError: + continue # We union the set of versions from the changelog and the published images to get all the versions we have to consider all_versions = set(changelog_entries_by_version.keys()) | set(published_docker_images_by_version.keys()) @@ -244,6 +250,10 @@ async def get_python_registry(dagger_client: dagger.Client, docker_credentials: return await VersionRegistry.load(AirbytePythonConnectorBaseImage, dagger_client, docker_credentials) +async def get_manifest_only_registry(dagger_client: dagger.Client, docker_credentials: Tuple[str, str]) -> VersionRegistry: + return await VersionRegistry.load(AirbyteManifestOnlyConnectorBaseImage, dagger_client, docker_credentials) + + async def get_registry_for_language( dagger_client: dagger.Client, language: ConnectorLanguage, docker_credentials: Tuple[str, str] ) -> VersionRegistry: @@ -263,6 +273,8 @@ async def get_registry_for_language( """ if language in [ConnectorLanguage.PYTHON, ConnectorLanguage.LOW_CODE]: return await get_python_registry(dagger_client, docker_credentials) + elif language is ConnectorLanguage.MANIFEST_ONLY: + return await get_manifest_only_registry(dagger_client, docker_credentials) else: raise NotImplementedError(f"Registry for language {language} is not implemented yet.") diff --git a/airbyte-ci/connectors/base_images/pyproject.toml b/airbyte-ci/connectors/base_images/pyproject.toml index 5e560dc9599b5..6372a0657cc05 100644 --- a/airbyte-ci/connectors/base_images/pyproject.toml +++ b/airbyte-ci/connectors/base_images/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "airbyte-connectors-base-images" -version = "1.0.2" +version = "1.0.3" description = "This package is used to generate and publish the base images for Airbyte Connectors." authors = ["Augustin Lafanechere "] readme = "README.md" diff --git a/airbyte-ci/connectors/pipelines/README.md b/airbyte-ci/connectors/pipelines/README.md index 2f003cd81b437..d7a014854807f 100644 --- a/airbyte-ci/connectors/pipelines/README.md +++ b/airbyte-ci/connectors/pipelines/README.md @@ -851,6 +851,7 @@ airbyte-ci connectors --language=low-code migrate-to-manifest-only | Version | PR | Description | | ------- | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| 4.38.0 | [#46380](https://github.com/airbytehq/airbyte/pull/46380) | `connectors up-to-date` now supports manifest-only connectors! | | 4.37.0 | [#46380](https://github.com/airbytehq/airbyte/pull/46380) | Include custom components file handling in manifest-only migrations | | 4.36.2 | [#46278](https://github.com/airbytehq/airbyte/pull/46278) | Fixed a bug in RC rollout and promote not taking `semaphore` | | 4.36.1 | [#46274](https://github.com/airbytehq/airbyte/pull/46274) | `airbyte-ci format js` respects `.prettierc` and `.prettierignore` | diff --git a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/commands.py b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/commands.py index a30a6108ca0ae..6361bcd8ee07b 100644 --- a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/commands.py +++ b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/commands.py @@ -12,7 +12,7 @@ @click.command( cls=DaggerPipelineCommand, - short_help="Get the selected Python connectors up to date.", + short_help="Get the selected connectors up to date.", ) @click.option( "--dep", @@ -65,7 +65,6 @@ async def up_to_date( open_reports: bool, ignore_connector: List[str], ) -> bool: - if create_prs and not ctx.obj["ci_github_access_token"]: raise click.ClickException( "GitHub access token is required to create or simulate a pull request. Set the CI_GITHUB_ACCESS_TOKEN environment variable." diff --git a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/pipeline.py b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/pipeline.py index ce13e857c8198..9d1c41ccbf60b 100644 --- a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/pipeline.py +++ b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/pipeline.py @@ -88,7 +88,6 @@ async def run_connector_up_to_date_pipeline( specific_dependencies: List[str] = [], bump_connector_version: bool = True, ) -> ConnectorReport: - async with semaphore: async with context: step_results: List[StepResult] = [] @@ -122,6 +121,9 @@ async def run_connector_up_to_date_pipeline( all_modified_files.update(exported_modified_files) one_previous_step_is_successful = any(step_result.success for step_result in step_results) + + # NOTE: + # BumpConnectorVersion will already work for manifest-only and Java connectors too if bump_connector_version and one_previous_step_is_successful: bump_version = BumpConnectorVersion(context, BUMP_TYPE, connector_directory=connector_directory) bump_version_result = await bump_version.run() @@ -134,15 +136,21 @@ async def run_connector_up_to_date_pipeline( context.logger.info(f"Exported files following the version bump: {exported_modified_files}") all_modified_files.update(exported_modified_files) + # Only create the PR if the flag is on, and if there's anything to contribute create_pull_request = create_pull_request and one_previous_step_is_successful and bump_version_result.success - # We run build and get dependency updates only if we are creating a pull request, to fill the PR body with the correct information + + # We run build and get dependency updates only if we are creating a pull request, + # to fill the PR body with the correct information about what exactly got updated. if create_pull_request: + # Building connector images is also universal across connector technologies. build_result = await BuildConnectorImages(context).run() step_results.append(build_result) dependency_updates: List[DependencyUpdate] = [] if build_result.success: built_connector_container = build_result.output[LOCAL_BUILD_PLATFORM] + + # Dependencies here mean Syft deps in the container image itself, not framework-level deps. get_dependency_updates = GetDependencyUpdates(context) dependency_updates_result = await get_dependency_updates.run(built_connector_container) step_results.append(dependency_updates_result) diff --git a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/steps.py b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/steps.py index 7c219e772aee5..6c926c26198ad 100644 --- a/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/steps.py +++ b/airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/up_to_date/steps.py @@ -106,7 +106,6 @@ class DependencyUpdate: class GetDependencyUpdates(Step): - SYFT_DOCKER_IMAGE = "anchore/syft:v1.6.0" context: ConnectorContext title: str = "Get dependency updates" diff --git a/airbyte-ci/connectors/pipelines/pyproject.toml b/airbyte-ci/connectors/pipelines/pyproject.toml index 290dbde664a33..d5bf7217d2ca1 100644 --- a/airbyte-ci/connectors/pipelines/pyproject.toml +++ b/airbyte-ci/connectors/pipelines/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "pipelines" -version = "4.37.0" +version = "4.38.0" description = "Packaged maintained by the connector operations team to perform CI for connectors' pipelines" authors = ["Airbyte "] From b42534c74f0d31b937eba9a7a9cd36bf76a10cb9 Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Wed, 9 Oct 2024 04:15:19 +0100 Subject: [PATCH 197/379] source-gmail contribution from topefolorunso (#46659) Co-authored-by: Natik Gadzhi --- .../connectors/source-gmail/README.md | 33 + .../source-gmail/acceptance-test-config.yml | 17 + .../connectors/source-gmail/icon.svg | 3 + .../connectors/source-gmail/manifest.yaml | 808 ++++++++++++++++++ .../connectors/source-gmail/metadata.yaml | 35 + docs/integrations/sources/gmail.md | 38 + 6 files changed, 934 insertions(+) create mode 100644 airbyte-integrations/connectors/source-gmail/README.md create mode 100644 airbyte-integrations/connectors/source-gmail/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-gmail/icon.svg create mode 100644 airbyte-integrations/connectors/source-gmail/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-gmail/metadata.yaml create mode 100644 docs/integrations/sources/gmail.md diff --git a/airbyte-integrations/connectors/source-gmail/README.md b/airbyte-integrations/connectors/source-gmail/README.md new file mode 100644 index 0000000000000..5b0885c1c3718 --- /dev/null +++ b/airbyte-integrations/connectors/source-gmail/README.md @@ -0,0 +1,33 @@ +# Gmail +This directory contains the manifest-only connector for `source-gmail`. + +Gmail is the email service provided by Google. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-gmail:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-gmail build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-gmail test +``` + diff --git a/airbyte-integrations/connectors/source-gmail/acceptance-test-config.yml b/airbyte-integrations/connectors/source-gmail/acceptance-test-config.yml new file mode 100644 index 0000000000000..d013615a5cf8e --- /dev/null +++ b/airbyte-integrations/connectors/source-gmail/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-gmail:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-gmail/icon.svg b/airbyte-integrations/connectors/source-gmail/icon.svg new file mode 100644 index 0000000000000..4dfaa97a7fc2d --- /dev/null +++ b/airbyte-integrations/connectors/source-gmail/icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/airbyte-integrations/connectors/source-gmail/manifest.yaml b/airbyte-integrations/connectors/source-gmail/manifest.yaml new file mode 100644 index 0000000000000..6cdf02627352f --- /dev/null +++ b/airbyte-integrations/connectors/source-gmail/manifest.yaml @@ -0,0 +1,808 @@ +version: 5.11.1 + +type: DeclarativeSource + +description: Gmail is the email service provided by Google. + +check: + type: CheckStream + stream_names: + - messages + +definitions: + streams: + profile: + type: DeclarativeStream + name: profile + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: profile + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/profile" + drafts: + type: DeclarativeStream + name: drafts + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: drafts + http_method: GET + request_parameters: + includeSpamTrash: "{{ config['include_spam_and_trash'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - drafts + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: pageToken + page_size_option: + type: RequestOption + field_name: maxResults + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"nextPageToken\", {}) }}" + stop_condition: "{{ not response.get(\"nextPageToken\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/drafts" + labels: + type: DeclarativeStream + name: labels + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: labels + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - labels + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/labels" + labels_details: + type: DeclarativeStream + name: labels_details + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: labels/{{ stream_partition['label_id'] }} + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: label_id + stream: + $ref: "#/definitions/streams/labels" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/labels_details" + messages: + type: DeclarativeStream + name: messages + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: messages + http_method: GET + request_parameters: + includeSpamTrash: "{{ config['include_spam_and_trash'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - messages + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: pageToken + page_size_option: + type: RequestOption + field_name: maxResults + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"nextPageToken\", {}) }}" + stop_condition: "{{ not response.get(\"nextPageToken\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/messages" + messages_details: + type: DeclarativeStream + name: messages_details + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: messages/{{ stream_partition['message_id'] }} + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: message_id + stream: + $ref: "#/definitions/streams/messages" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/messages_details" + threads: + type: DeclarativeStream + name: threads + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: threads + http_method: GET + request_parameters: + includeSpamTrash: "{{ config['include_spam_and_trash'] }}" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - threads + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: pageToken + page_size_option: + type: RequestOption + field_name: maxResults + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"nextPageToken\", {}) }}" + stop_condition: "{{ not response.get(\"nextPageToken\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/threads" + threads_details: + type: DeclarativeStream + name: threads_details + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: threads/{{ stream_partition['thread_id'] }} + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: thread_id + stream: + $ref: "#/definitions/streams/threads" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/threads_details" + base_requester: + type: HttpRequester + url_base: https://gmail.googleapis.com/gmail/v1/users/me/ + authenticator: + type: OAuthAuthenticator + client_id: "{{ config[\"client_id\"] }}" + grant_type: refresh_token + client_secret: "{{ config[\"client_secret\"] }}" + refresh_token: "{{ config[\"client_refresh_token\"] }}" + expires_in_name: expires_in + access_token_name: access_token + refresh_request_body: {} + token_refresh_endpoint: https://accounts.google.com/o/oauth2/token + +streams: + - $ref: "#/definitions/streams/profile" + - $ref: "#/definitions/streams/drafts" + - $ref: "#/definitions/streams/labels" + - $ref: "#/definitions/streams/labels_details" + - $ref: "#/definitions/streams/messages" + - $ref: "#/definitions/streams/messages_details" + - $ref: "#/definitions/streams/threads" + - $ref: "#/definitions/streams/threads_details" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - client_id + - client_secret + - client_refresh_token + properties: + client_id: + type: string + name: client_id + order: 0 + title: OAuth Client ID + airbyte_secret: true + client_secret: + type: string + name: client_secret + order: 1 + title: OAuth Client Secret + airbyte_secret: true + client_refresh_token: + type: string + order: 2 + title: Refresh token + airbyte_secret: true + include_spam_and_trash: + type: boolean + description: >- + Include drafts/messages from SPAM and TRASH in the results. Defaults + to false. + title: Include Spam & Trash + default: false + order: 3 + additionalProperties: true + +metadata: + autoImportSchema: + profile: true + drafts: true + labels: true + labels_details: true + messages: true + messages_details: true + threads: true + threads_details: true + testedStreams: + profile: + streamHash: de8ec9652feea6f68ec8f01e4eaf55d9eedd699c + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + drafts: + streamHash: db71b4ac2b1257ae7b4ca3b6c497cb4c8e07c4a0 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + labels: + streamHash: 6f0d1bfff4c347b58286ac9aab4122ac4a311081 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + labels_details: + streamHash: 0b603b9937e45f8c2f5db4bbbc137a85cde47131 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + messages: + streamHash: fa1bd97935f082f221bf5a6f167cf70d1179300a + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + messages_details: + streamHash: fc9ca9148f1ec7f8275d492984ee2e4c2bb0448a + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + threads: + streamHash: 163d9e70bdd06a96992a53995e564a761af1237f + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + threads_details: + streamHash: ff2949698e82fb5b0a7ae89ee4e19c06d39b6702 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://developers.google.com/gmail/api/guides + +schemas: + profile: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + emailAddress: + type: + - string + - "null" + historyId: + type: + - string + - "null" + messagesTotal: + type: + - number + - "null" + threadsTotal: + type: + - number + - "null" + drafts: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + id: + type: string + message: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + threadId: + type: + - string + - "null" + required: + - id + labels: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + id: + type: string + labelListVisibility: + type: + - string + - "null" + messageListVisibility: + type: + - string + - "null" + name: + type: + - string + - "null" + required: + - id + labels_details: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + id: + type: string + labelListVisibility: + type: + - string + - "null" + messageListVisibility: + type: + - string + - "null" + messagesTotal: + type: + - number + - "null" + messagesUnread: + type: + - number + - "null" + name: + type: + - string + - "null" + threadsTotal: + type: + - number + - "null" + threadsUnread: + type: + - number + - "null" + required: + - id + messages: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + id: + type: string + threadId: + type: + - string + - "null" + required: + - id + messages_details: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + historyId: + type: + - string + - "null" + id: + type: string + internalDate: + type: + - string + - "null" + labelIds: + type: + - array + - "null" + items: + type: + - string + - "null" + payload: + type: + - object + - "null" + properties: + body: + type: + - object + - "null" + properties: + data: + type: + - string + - "null" + size: + type: + - number + - "null" + filename: + type: + - string + - "null" + headers: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + value: + type: + - string + - "null" + mimeType: + type: + - string + - "null" + partId: + type: + - string + - "null" + parts: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + body: + type: + - object + - "null" + properties: + data: + type: + - string + - "null" + size: + type: + - number + - "null" + filename: + type: + - string + - "null" + headers: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + value: + type: + - string + - "null" + mimeType: + type: + - string + - "null" + partId: + type: + - string + - "null" + sizeEstimate: + type: + - number + - "null" + snippet: + type: + - string + - "null" + threadId: + type: + - string + - "null" + required: + - id + threads: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + historyId: + type: + - string + - "null" + id: + type: string + snippet: + type: + - string + - "null" + required: + - id + threads_details: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + historyId: + type: + - string + - "null" + id: + type: string + messages: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + historyId: + type: + - string + - "null" + id: + type: + - string + - "null" + internalDate: + type: + - string + - "null" + labelIds: + type: + - array + - "null" + items: + type: + - string + - "null" + payload: + type: + - object + - "null" + properties: + body: + type: + - object + - "null" + properties: + data: + type: + - string + - "null" + size: + type: + - number + - "null" + filename: + type: + - string + - "null" + headers: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + value: + type: + - string + - "null" + mimeType: + type: + - string + - "null" + partId: + type: + - string + - "null" + parts: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + body: + type: + - object + - "null" + properties: + data: + type: + - string + - "null" + size: + type: + - number + - "null" + filename: + type: + - string + - "null" + headers: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + value: + type: + - string + - "null" + mimeType: + type: + - string + - "null" + partId: + type: + - string + - "null" + sizeEstimate: + type: + - number + - "null" + snippet: + type: + - string + - "null" + threadId: + type: + - string + - "null" + required: + - id diff --git a/airbyte-integrations/connectors/source-gmail/metadata.yaml b/airbyte-integrations/connectors/source-gmail/metadata.yaml new file mode 100644 index 0000000000000..68d5391006e35 --- /dev/null +++ b/airbyte-integrations/connectors/source-gmail/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "gmail.googleapis.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-gmail + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.11.1@sha256:f48a7ddc1f3acecbd8eb6a10a3146e8d0396e9a4dede77beafb76924f416df65 + connectorSubtype: api + connectorType: source + definitionId: f7833dac-fc18-4feb-a2a9-94b22001edc6 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-gmail + githubIssueLabel: source-gmail + icon: icon.svg + license: MIT + name: Gmail + releaseDate: 2024-10-09 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/gmail + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/gmail.md b/docs/integrations/sources/gmail.md new file mode 100644 index 0000000000000..25f72461a1a93 --- /dev/null +++ b/docs/integrations/sources/gmail.md @@ -0,0 +1,38 @@ +# Gmail +Gmail is the email service provided by Google. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `client_id` | `string` | OAuth Client ID. | | +| `client_secret` | `string` | OAuth Client Secret. | | +| `client_refresh_token` | `string` | Refresh token. | | +| `include_spam_and_trash` | `boolean` | Include Spam & Trash. Include drafts/messages from SPAM and TRASH in the results. Defaults to false. | false | + +Note that this connector uses the Google API OAuth2.0 for authentication. To get started, follow the steps [here](https://developers.google.com/gmail/api/auth/web-server#create_a_client_id_and_client_secret) to retrieve `client_id` and `client_secret`. See [here](https://developers.google.com/identity/protocols/oauth2/web-server) for more detailed guide on the OAuth flow to retrieve the `client_refresh_token`. + +**Also note that the scope required here is `https://www.googleapis.com/auth/gmail.readonly`** + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| profile | | No pagination | ✅ | ❌ | +| drafts | id | DefaultPaginator | ✅ | ❌ | +| labels | id | No pagination | ✅ | ❌ | +| labels_details | id | No pagination | ✅ | ❌ | +| messages | id | DefaultPaginator | ✅ | ❌ | +| messages_details | id | No pagination | ✅ | ❌ | +| threads | id | DefaultPaginator | ✅ | ❌ | +| threads_details | id | No pagination | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-09 | | Initial release by [@topefolorunso](https://github.com/topefolorunso) via Connector Builder | + +
From 439fbe0739b380a3421de66ba1c7c610423a3d3c Mon Sep 17 00:00:00 2001 From: Natik Gadzhi Date: Wed, 9 Oct 2024 00:44:43 -0700 Subject: [PATCH 198/379] chore(live-tests): comments for record_obfuscator.py (#46661) --- tools/bin/record_obfuscator.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/bin/record_obfuscator.py b/tools/bin/record_obfuscator.py index d3ef832c3defb..4dff42a71a058 100755 --- a/tools/bin/record_obfuscator.py +++ b/tools/bin/record_obfuscator.py @@ -1,18 +1,32 @@ #!/usr/bin/env python3 # Copyright (c) 2024 Airbyte, Inc., all rights reserved. - +from __future__ import annotations import hashlib import json import sys from typing import Any +# +# record_obfuscator is a tiny script that: +# 1. reads JSON lines from stdin +# 2. obfuscates the data in AirbyteRecordMessage lines +# 3. spits obfuscated lines back to stdout +# All stdin lines that are not type: RECORD remain unchanged. +# +# It's used in live-tests (airbyte-ci/connectors/live-tests) to be able to dump raw data from a live connection +# without leaking actual sensitive production data. +# +# The script is copied over into the live tests runnder dagger container. +# + def _generate_hash(value: Any) -> str: return hashlib.sha256(str(value).encode()).hexdigest() def obfuscate(value: Any) -> Any: + """Returns an obfuscated version of the input value while retaiining it's type and length information.""" if isinstance(value, str): obfuscated_value = f"string_len-{len(value)}_" + _generate_hash(value) elif isinstance(value, int): @@ -41,6 +55,8 @@ def obfuscate(value: Any) -> Any: except Exception as exc: # We don't expect invalid json so if we see it, it will go to stderr sys.stderr.write(f"{line}\n") + + # try / except / else: Else block runs only if no exceptions were raised. else: if data.get("type") == "RECORD": record_data = data["record"].get("data", {}) From e65ecbd32c48eb6c53838decb2ae330f8a8ccc56 Mon Sep 17 00:00:00 2001 From: btkcodedev Date: Wed, 9 Oct 2024 20:39:45 +0530 Subject: [PATCH 199/379] source-circleci contribution from btkcodedev (#46249) Co-authored-by: Octavia Squidington III --- .../connectors/source-circleci/README.md | 38 + .../acceptance-test-config.yml | 17 + .../connectors/source-circleci/icon.svg | 7 + .../connectors/source-circleci/manifest.yaml | 1983 +++++++++++++++++ .../connectors/source-circleci/metadata.yaml | 35 + docs/integrations/sources/circleci.md | 49 + 6 files changed, 2129 insertions(+) create mode 100644 airbyte-integrations/connectors/source-circleci/README.md create mode 100644 airbyte-integrations/connectors/source-circleci/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-circleci/icon.svg create mode 100644 airbyte-integrations/connectors/source-circleci/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-circleci/metadata.yaml create mode 100644 docs/integrations/sources/circleci.md diff --git a/airbyte-integrations/connectors/source-circleci/README.md b/airbyte-integrations/connectors/source-circleci/README.md new file mode 100644 index 0000000000000..7c43ee9a8966a --- /dev/null +++ b/airbyte-integrations/connectors/source-circleci/README.md @@ -0,0 +1,38 @@ +# Circleci +This directory contains the manifest-only connector for [`source-circleci`](https://app.circleci.com/). + +## Documentation reference: +- Visit `https://circleci.com/docs/api/v1/index.html` for V1 API documentation +- Visit `https://circleci.com/docs/api/v2/index.html` for V2 API documentation + +## Authentication setup +`CircleCI` uses api key authentication, Visit `https://app.circleci.com/settings/user/tokens` for getting your api keys. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-circleci:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-circleci build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-circleci test +``` + diff --git a/airbyte-integrations/connectors/source-circleci/acceptance-test-config.yml b/airbyte-integrations/connectors/source-circleci/acceptance-test-config.yml new file mode 100644 index 0000000000000..0d9a8e01c68a2 --- /dev/null +++ b/airbyte-integrations/connectors/source-circleci/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-circleci:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-circleci/icon.svg b/airbyte-integrations/connectors/source-circleci/icon.svg new file mode 100644 index 0000000000000..4808f592d50ea --- /dev/null +++ b/airbyte-integrations/connectors/source-circleci/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/airbyte-integrations/connectors/source-circleci/manifest.yaml b/airbyte-integrations/connectors/source-circleci/manifest.yaml new file mode 100644 index 0000000000000..0e55436ac0fb1 --- /dev/null +++ b/airbyte-integrations/connectors/source-circleci/manifest.yaml @@ -0,0 +1,1983 @@ +version: 5.11.1 + +type: DeclarativeSource + +description: |- + Website: https://app.circleci.com/ + API Docs: + - v1-https://circleci.com/docs/api/v1/index.html + - v2-https://circleci.com/docs/api/v2/index.html + API page: https://app.circleci.com/settings/user/tokens + +check: + type: CheckStream + stream_names: + - context + +definitions: + streams: + context: + type: DeclarativeStream + name: context + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: v2/context + http_method: GET + request_parameters: + owner-id: "{{ config['org_id'] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + incremental_sync: + type: DatetimeBasedCursor + cursor_field: created_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: '{{ config["start_date"] }}' + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/context" + self_ids: + type: DeclarativeStream + name: self_ids + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: v2/me + http_method: GET + request_parameters: + owner-id: "{{ config['org_id'] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/self_ids" + self_collaborations: + type: DeclarativeStream + name: self_collaborations + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: v2/me/collaborations + http_method: GET + request_parameters: + owner-id: "{{ config['org_id'] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/self_collaborations" + me: + type: DeclarativeStream + name: me + primary_key: + - analytics_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: v1.1/me + http_method: GET + request_parameters: + owner-id: "{{ config['org_id'] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + incremental_sync: + type: DatetimeBasedCursor + cursor_field: created_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: '{{ config["start_date"] }}' + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/me" + projects: + type: DeclarativeStream + name: projects + primary_key: + - vcs_url + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: v1.1/projects + http_method: GET + request_parameters: + owner-id: "{{ config['org_id'] }}" + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/projects" + pipelines: + type: DeclarativeStream + name: pipelines + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: v2/pipeline + http_method: GET + request_parameters: + org-slug: circleci/{{ config["org_id"] }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + incremental_sync: + type: DatetimeBasedCursor + cursor_field: created_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: '{{ config["start_date"] }}' + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/pipelines" + specific_project: + type: DeclarativeStream + name: specific_project + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + v2/project/circleci/{{ config["org_id"] }}/{{ config['project_id'] + }} + http_method: GET + request_parameters: + org-slug: circleci/{{ config["org_id"] }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/specific_project" + jobs: + type: DeclarativeStream + name: jobs + primary_key: + - number + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + v2/project/circleci/{{ config["org_id"] }}/{{ config["project_id"] + }}/job/{{ config['job_number'] }} + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/jobs" + workflow: + type: DeclarativeStream + name: workflow + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: v2/workflow/{{ config['workflow_id'] }} + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + incremental_sync: + type: DatetimeBasedCursor + cursor_field: created_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%SZ" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_datetime: + type: MinMaxDatetime + datetime: '{{ config["start_date"] }}' + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/workflow" + insights_metrics: + type: DeclarativeStream + name: insights_metrics + primary_key: + - project_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + v2/insights/pages/circleci/{{ config["org_id"] }}/{{ + config["project_id"] }}/summary + http_method: GET + request_parameters: + org-slug: circleci/{{ config["org_id"] }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/insights_metrics" + insights_branches: + type: DeclarativeStream + name: insights_branches + primary_key: + - project_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + v2/insights/circleci/{{ config["org_id"] }}/{{ config["project_id"] + }}/branches + http_method: GET + request_parameters: + org-slug: circleci/{{ config["org_id"] }} + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/insights_branches" + workflow_jobs: + type: DeclarativeStream + name: workflow_jobs + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: v2/workflow/{{ config['workflow_id'] }}/job + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 3 + backoff_strategies: + - type: ExponentialBackoffStrategy + factor: 2 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + http_codes: + - 429 + error_message: Rate limits hit + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page-token + pagination_strategy: + type: CursorPagination + cursor_value: '{{ response.get("next_page_token", {}) }}' + stop_condition: '{{ not response.get("next_page_token", {}) }}' + incremental_sync: + type: DatetimeBasedCursor + cursor_field: started_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%SZ" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_datetime: + type: MinMaxDatetime + datetime: '{{ config["start_date"] }}' + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/workflow_jobs" + base_requester: + type: HttpRequester + url_base: https://circleci.com/api/ + authenticator: + type: ApiKeyAuthenticator + api_token: '{{ config["api_key"] }}' + inject_into: + type: RequestOption + field_name: Circle-Token + inject_into: header + +streams: + - $ref: "#/definitions/streams/context" + - $ref: "#/definitions/streams/self_ids" + - $ref: "#/definitions/streams/self_collaborations" + - $ref: "#/definitions/streams/me" + - $ref: "#/definitions/streams/projects" + - $ref: "#/definitions/streams/pipelines" + - $ref: "#/definitions/streams/specific_project" + - $ref: "#/definitions/streams/jobs" + - $ref: "#/definitions/streams/workflow" + - $ref: "#/definitions/streams/insights_metrics" + - $ref: "#/definitions/streams/insights_branches" + - $ref: "#/definitions/streams/workflow_jobs" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + - org_id + - start_date + - project_id + properties: + api_key: + type: string + order: 0 + title: API Key + airbyte_secret: true + org_id: + type: string + description: >- + The org ID found in + `https://app.circleci.com/settings/organization/circleci/xxxxx/overview` + order: 1 + title: Organization ID + start_date: + type: string + order: 2 + title: Start date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + project_id: + type: string + description: Project ID found in the project settings + order: 3 + title: Project ID + job_id: + type: string + description: Job ID for fetching information + order: 4 + title: Job ID + workflow_id: + type: string + description: workflow ID of a project pipeline + order: 5 + title: Workflow ID + workflow_name: + type: string + description: Workflow name for fetching information + order: 6 + title: Workflow Name + default: build-and-test + job_number: + type: string + description: Job Number of the workflow + order: 7 + title: Job Number + default: "2" + additionalProperties: true + +metadata: + autoImportSchema: + context: true + self_ids: true + self_collaborations: true + me: true + projects: true + pipelines: true + specific_project: true + jobs: true + workflow: true + insights_metrics: true + insights_branches: true + workflow_jobs: true + testedStreams: + context: + hasRecords: true + streamHash: 2db58db8647b6dbeb05e3040a85515adeba9c208 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + self_ids: + hasRecords: true + streamHash: 81183e512a17f46ff1b436e73de0539cbfe6273e + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + self_collaborations: + hasRecords: true + streamHash: 65dfddfb9cf5a1846147a6925a9e6bfc82b2f8e1 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + me: + hasRecords: true + streamHash: 8c378e8221bef781f6911329df100ab02e9fd4e7 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + projects: + hasRecords: true + streamHash: 39e7dd96dbfb02f9cf73f35c9e0c6600193cea08 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + pipelines: + hasRecords: true + streamHash: 6fe654076efd6526c3fadc28c19f1353f6a9c88c + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + specific_project: + hasRecords: true + streamHash: 99bd62345fe14caaffbdf0da10bab16f7540ecf2 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + jobs: + hasRecords: true + streamHash: b511617fbc1ceebf2c437fa734235fb734596639 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + workflow: + hasRecords: true + streamHash: 6dd1bd7a73fbd4d3b13700520f202302440284a3 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + insights_metrics: + hasRecords: true + streamHash: 1704e974421625cfb99ba8a7111b7e8d0475a90d + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + insights_branches: + hasRecords: true + streamHash: 818709056ee69d5ce1e90b4cdb798cf1db8ef6c4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + workflow_jobs: + hasRecords: true + streamHash: 3a91f3982bc42fc8b860f5f42ea217d2b46ecde1 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + assist: {} + +schemas: + context: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: string + id: + type: string + name: + type: + - string + - "null" + required: + - id + - created_at + self_ids: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + id: + type: string + login: + type: + - string + - "null" + name: + type: + - string + - "null" + required: + - id + self_collaborations: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + avatar_url: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + slug: + type: + - string + - "null" + vcs_type: + type: + - string + - "null" + required: + - id + me: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + admin: + type: + - boolean + - "null" + all_emails: + type: + - array + - "null" + items: + type: + - string + - "null" + analytics_id: + type: string + basic_email_prefs: + type: + - string + - "null" + bitbucket_authorized: + type: + - boolean + - "null" + containers: + type: + - number + - "null" + created_at: + type: string + days_left_in_trial: + type: + - number + - "null" + dev_admin: + type: + - boolean + - "null" + email_authentication: + type: + - object + - "null" + properties: + email_verified: + type: + - boolean + - "null" + login: + type: + - string + - "null" + enrolled_betas: + type: + - array + - "null" + github_oauth_scopes: + type: + - array + - "null" + identities: + type: + - object + - "null" + in_beta_program: + type: + - boolean + - "null" + login: + type: + - string + - "null" + name: + type: + - string + - "null" + num_projects_followed: + type: + - number + - "null" + organization_prefs: + type: + - object + - "null" + parallelism: + type: + - number + - "null" + privacy_optout: + type: + - boolean + - "null" + projects: + type: + - object + - "null" + properties: + //circleci.com/fd70effc-9850-4c06-bfda-2cd8f0aa7e84/1bf14e34-a4d9-4e18-bfdf-20e74b13a7df: + type: + - object + - "null" + properties: + emails: + type: + - string + - "null" + on_dashboard: + type: + - boolean + - "null" + //circleci.com/fd70effc-9850-4c06-bfda-2cd8f0aa7e84/ac888fc0-0fe8-4382-a8dc-1850261359ce: + type: + - object + - "null" + properties: + emails: + type: + - string + - "null" + on_dashboard: + type: + - boolean + - "null" + //circleci.com/fd70effc-9850-4c06-bfda-2cd8f0aa7e84/cb29099f-feac-4587-8dcc-7c83b44fb0e3: + type: + - object + - "null" + properties: + emails: + type: + - string + - "null" + on_dashboard: + type: + - boolean + - "null" + pusher_id: + type: + - string + - "null" + selected_email: + type: + - string + - "null" + sign_in_count: + type: + - number + - "null" + student: + type: + - boolean + - "null" + trial_end: + type: + - string + - "null" + web_ui_pipelines_first_opt_in: + type: + - boolean + - "null" + web_ui_pipelines_optout: + type: + - string + - "null" + required: + - analytics_id + - created_at + projects: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + branches: + type: + - object + - "null" + properties: + circleci-project-setup: + type: + - object + - "null" + properties: + is_using_workflows: + type: + - boolean + - "null" + last_success: + type: + - object + - "null" + properties: + added_at: + type: + - string + - "null" + build_num: + type: + - number + - "null" + is_2_0_job: + type: + - boolean + - "null" + is_workflow_job: + type: + - boolean + - "null" + outcome: + type: + - string + - "null" + pushed_at: + type: + - string + - "null" + status: + type: + - string + - "null" + vcs_revision: + type: + - string + - "null" + latest_completed_workflows: + type: + - object + - "null" + properties: + build: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + status: + type: + - string + - "null" + latest_workflows: + type: + - object + - "null" + properties: + build: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + status: + type: + - string + - "null" + pusher_logins: + type: + - array + - "null" + items: + type: + - string + - "null" + recent_builds: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + added_at: + type: + - string + - "null" + build_num: + type: + - number + - "null" + is_2_0_job: + type: + - boolean + - "null" + is_workflow_job: + type: + - boolean + - "null" + outcome: + type: + - string + - "null" + pushed_at: + type: + - string + - "null" + status: + type: + - string + - "null" + vcs_revision: + type: + - string + - "null" + running_builds: + type: + - array + - "null" + main: + type: + - object + - "null" + properties: + is_using_workflows: + type: + - boolean + - "null" + last_success: + type: + - object + - "null" + properties: + added_at: + type: + - string + - "null" + build_num: + type: + - number + - "null" + is_2_0_job: + type: + - boolean + - "null" + is_workflow_job: + type: + - boolean + - "null" + outcome: + type: + - string + - "null" + pushed_at: + type: + - string + - "null" + status: + type: + - string + - "null" + vcs_revision: + type: + - string + - "null" + latest_completed_workflows: + type: + - object + - "null" + properties: + generate_config: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + status: + type: + - string + - "null" + latest_workflows: + type: + - object + - "null" + properties: + generate_config: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + id: + type: + - string + - "null" + status: + type: + - string + - "null" + pusher_logins: + type: + - array + - "null" + items: + type: + - string + - "null" + recent_builds: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + added_at: + type: + - string + - "null" + build_num: + type: + - number + - "null" + is_2_0_job: + type: + - boolean + - "null" + is_workflow_job: + type: + - boolean + - "null" + outcome: + type: + - string + - "null" + pushed_at: + type: + - string + - "null" + status: + type: + - string + - "null" + vcs_revision: + type: + - string + - "null" + running_builds: + type: + - array + - "null" + default_branch: + type: + - string + - "null" + following: + type: + - boolean + - "null" + has_usable_key: + type: + - boolean + - "null" + oss: + type: + - boolean + - "null" + reponame: + type: + - string + - "null" + username: + type: + - string + - "null" + vcs_type: + type: + - string + - "null" + vcs_url: + type: string + required: + - vcs_url + pipelines: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: string + errors: + type: + - array + - "null" + id: + type: string + number: + type: + - number + - "null" + project_slug: + type: + - string + - "null" + state: + type: + - string + - "null" + trigger: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + actor: + type: + - object + - "null" + properties: + login: + type: + - string + - "null" + received_at: + type: + - string + - "null" + trigger_parameters: + type: + - object + - "null" + properties: + circleci: + type: + - object + - "null" + properties: + actor_id: + type: + - string + - "null" + event_time: + type: + - string + - "null" + event_type: + type: + - string + - "null" + provider_actor_id: + type: + - string + - "null" + provider_login: + type: + - string + - "null" + provider_name: + type: + - string + - "null" + trigger_type: + type: + - string + - "null" + event: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + title: + type: + - string + - "null" + git: + type: + - object + - "null" + properties: + branch: + type: + - string + - "null" + checkout_sha: + type: + - string + - "null" + checkout_url: + type: + - string + - "null" + ref: + type: + - string + - "null" + repo_url: + type: + - string + - "null" + github_app: + type: + - object + - "null" + properties: + branch: + type: + - string + - "null" + checkout_sha: + type: + - string + - "null" + commit_author_email: + type: + - string + - "null" + commit_author_name: + type: + - string + - "null" + commit_message: + type: + - string + - "null" + commit_sha: + type: + - string + - "null" + commit_timestamp: + type: + - string + - "null" + commit_title: + type: + - string + - "null" + content_ref: + type: + - string + - "null" + default_branch: + type: + - string + - "null" + forced: + type: + - string + - "null" + owner: + type: + - string + - "null" + ref: + type: + - string + - "null" + repo_full_name: + type: + - string + - "null" + repo_id: + type: + - string + - "null" + repo_name: + type: + - string + - "null" + repo_url: + type: + - string + - "null" + total_commits_count: + type: + - string + - "null" + user_avatar: + type: + - string + - "null" + user_id: + type: + - string + - "null" + user_name: + type: + - string + - "null" + user_username: + type: + - string + - "null" + web_url: + type: + - string + - "null" + webhook: + type: + - object + - "null" + properties: + body: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + required: + - id + - created_at + specific_project: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + id: + type: string + name: + type: + - string + - "null" + organization_id: + type: + - string + - "null" + organization_name: + type: + - string + - "null" + organization_slug: + type: + - string + - "null" + slug: + type: + - string + - "null" + vcs_info: + type: + - object + - "null" + properties: + default_branch: + type: + - string + - "null" + provider: + type: + - string + - "null" + vcs_url: + type: + - string + - "null" + required: + - id + jobs: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + contexts: + type: + - array + - "null" + created_at: + type: + - string + - "null" + duration: + type: + - number + - "null" + executor: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + resource_class: + type: + - string + - "null" + latest_workflow: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + name: + type: + - string + - "null" + messages: + type: + - array + - "null" + name: + type: + - string + - "null" + number: + type: number + organization: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + parallel_runs: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + index: + type: + - number + - "null" + status: + type: + - string + - "null" + parallelism: + type: + - number + - "null" + pipeline: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + project: + type: + - object + - "null" + properties: + external_url: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + slug: + type: + - string + - "null" + queued_at: + type: + - string + - "null" + started_at: + type: + - string + - "null" + status: + type: + - string + - "null" + stopped_at: + type: + - string + - "null" + web_url: + type: + - string + - "null" + required: + - number + workflow: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: string + id: + type: string + name: + type: + - string + - "null" + pipeline_id: + type: + - string + - "null" + pipeline_number: + type: + - number + - "null" + project_slug: + type: + - string + - "null" + started_by: + type: + - string + - "null" + status: + type: + - string + - "null" + stopped_at: + type: + - string + - "null" + required: + - id + - created_at + insights_metrics: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + all_branches: + type: + - array + - "null" + all_workflows: + type: + - array + - "null" + org_id: + type: + - string + - "null" + project_data: + type: + - object + - "null" + properties: + metrics: + type: + - object + - "null" + properties: + success_rate: + type: + - number + - "null" + throughput: + type: + - number + - "null" + total_credits_used: + type: + - number + - "null" + total_duration_secs: + type: + - number + - "null" + total_runs: + type: + - number + - "null" + trends: + type: + - object + - "null" + properties: + success_rate: + type: + - number + - "null" + throughput: + type: + - number + - "null" + total_credits_used: + type: + - number + - "null" + total_duration_secs: + type: + - number + - "null" + total_runs: + type: + - number + - "null" + project_id: + type: string + project_workflow_branch_data: + type: + - array + - "null" + project_workflow_data: + type: + - array + - "null" + required: + - project_id + insights_branches: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + branches: + type: + - array + - "null" + org_id: + type: + - string + - "null" + project_id: + type: string + required: + - project_id + workflow_jobs: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + dependencies: + type: + - array + - "null" + id: + type: string + job_number: + type: + - number + - "null" + name: + type: + - string + - "null" + project_slug: + type: + - string + - "null" + started_at: + type: string + status: + type: + - string + - "null" + stopped_at: + type: + - string + - "null" + required: + - id + - started_at diff --git a/airbyte-integrations/connectors/source-circleci/metadata.yaml b/airbyte-integrations/connectors/source-circleci/metadata.yaml new file mode 100644 index 0000000000000..fd4082c655955 --- /dev/null +++ b/airbyte-integrations/connectors/source-circleci/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "circleci.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-circleci + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.7.5@sha256:4832cc13b262b4cae4ba72b07da544e6ee2f5d216b7147483480d5ebc5d0d7ca + connectorSubtype: api + connectorType: source + definitionId: dd9a9d23-a64a-483c-b1ed-da1391d13f91 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-circleci + githubIssueLabel: source-circleci + icon: icon.svg + license: MIT + name: Circleci + releaseDate: 2024-09-29 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/circleci + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/circleci.md b/docs/integrations/sources/circleci.md new file mode 100644 index 0000000000000..e4c04d8f9cea1 --- /dev/null +++ b/docs/integrations/sources/circleci.md @@ -0,0 +1,49 @@ +# Circleci +This directory contains the manifest-only connector for [`source-circleci`](https://app.circleci.com/). + +## Documentation reference: +- Visit `https://circleci.com/docs/api/v1/index.html` for V1 API documentation +- Visit `https://circleci.com/docs/api/v2/index.html` for V2 API documentation + +## Authentication setup +`CircleCI` uses api key authentication, Visit `https://app.circleci.com/settings/user/tokens` for getting your api keys. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. | | +| `org_id` | `string` | Organization ID. The org ID found in `https://app.circleci.com/settings/organization/circleci/xxxxx/overview` | | +| `start_date` | `string` | Start date. | | +| `project_id` | `string` | Project ID found in the project settings. | | +| `job_id` | `string` | Job ID for fetching information found in URL. | | +| `workflow_id` | `string` | Workflow ID of a project pipeline. | | +| `workflow_name` | `string` | Workflow name for fetching information. | | +| `job_number` | `string` | Job Number of the workflow. | `2` | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| context | id | DefaultPaginator | ✅ | ✅ | +| self_ids | id | DefaultPaginator | ✅ | ❌ | +| self_collaborations | id | DefaultPaginator | ✅ | ❌ | +| me | analytics_id | DefaultPaginator | ✅ | ✅ | +| projects | vcs_url | DefaultPaginator | ✅ | ❌ | +| pipelines | id | DefaultPaginator | ✅ | ✅ | +| specific_project | id | DefaultPaginator | ✅ | ❌ | +| jobs | number | DefaultPaginator | ✅ | ❌ | +| workflow | id | DefaultPaginator | ✅ | ✅ | +| insights_metrics | project_id | DefaultPaginator | ✅ | ❌ | +| insights_branches | id | DefaultPaginator | ✅ | ❌ | +| workflow_jobs | id | DefaultPaginator | ✅ | ✅ | + +## Changelog + +
+ Expand to review + +| Version | Date |PR| Subject | +|------------------|------------|---|----------------| +| 0.0.1 | 2024-09-29 |[46249](https://github.com/airbytehq/airbyte/pull/46249)| Initial release by [@btkcodedev](https://github.com/btkcodedev) via Connector Builder| + +
\ No newline at end of file From 6a3da7f9b02f0a440c0a5f532a0fc19f901ce9f0 Mon Sep 17 00:00:00 2001 From: Natik Gadzhi Date: Wed, 9 Oct 2024 08:24:53 -0700 Subject: [PATCH 200/379] fix(source-circleci): set manifest CDK version to 5.7.5 (#46677) --- airbyte-integrations/connectors/source-circleci/manifest.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-integrations/connectors/source-circleci/manifest.yaml b/airbyte-integrations/connectors/source-circleci/manifest.yaml index 0e55436ac0fb1..f22a8088598dc 100644 --- a/airbyte-integrations/connectors/source-circleci/manifest.yaml +++ b/airbyte-integrations/connectors/source-circleci/manifest.yaml @@ -1,4 +1,4 @@ -version: 5.11.1 +version: 5.7.5 type: DeclarativeSource From 69cae085c7ff4847112be1796a6f33598af0261b Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Wed, 9 Oct 2024 09:51:10 -0700 Subject: [PATCH 201/379] Bulk Load CDK: Fix: teardown awaits input processing (#46656) --- .../cdk/load/state/CheckpointManager.kt | 72 ++++++++++--------- .../airbyte/cdk/load/state/StreamManager.kt | 2 +- .../io/airbyte/cdk/load/state/SyncManager.kt | 18 +++++ .../cdk/load/task/implementor/TeardownTask.kt | 1 + .../load/task/internal/InputConsumerTask.kt | 1 + .../task/internal/UpdateCheckpointsTask.kt | 3 + .../cdk/load/state/CheckpointManagerTest.kt | 2 +- 7 files changed, 63 insertions(+), 36 deletions(-) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt index a945b27271af4..7a999616c45aa 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt @@ -13,7 +13,6 @@ import io.airbyte.cdk.load.util.use import io.airbyte.protocol.models.v0.AirbyteMessage import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary -import io.micronaut.core.util.clhm.ConcurrentLinkedHashMap import jakarta.inject.Singleton import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentLinkedQueue @@ -65,10 +64,11 @@ abstract class StreamsCheckpointManager : CheckpointManager = AtomicReference(null) private val streamCheckpoints: - ConcurrentHashMap> = + ConcurrentHashMap>> = ConcurrentHashMap() private val globalCheckpoints: ConcurrentLinkedQueue> = ConcurrentLinkedQueue() + private val lastIndexEmitted = ConcurrentHashMap() override suspend fun addStreamCheckpoint( key: DestinationStream.Descriptor, @@ -82,29 +82,18 @@ abstract class StreamsCheckpointManager : CheckpointManager - val map = - if (indexToMessage == null) { - // If the map doesn't exist yet, build it. - ConcurrentLinkedHashMap.Builder() - .maximumWeightedCapacity(1000) - .build() - } else { - if (indexToMessage.isNotEmpty()) { - // Make sure the messages are coming in order - val oldestIndex = indexToMessage.ascendingKeySet().first() - if (oldestIndex > index) { - throw IllegalStateException( - "Checkpoint message received out of order ($oldestIndex before $index)" - ) - } - } - indexToMessage - } - // Actually add the message - map[index] = checkpointMessage - map + val indexedMessages: ConcurrentLinkedQueue> = + streamCheckpoints.getOrPut(key) { ConcurrentLinkedQueue() } + if (indexedMessages.isNotEmpty()) { + // Make sure the messages are coming in order + val (latestIndex, _) = indexedMessages.last()!! + if (latestIndex > index) { + throw IllegalStateException( + "Checkpoint message received out of order ($latestIndex before $index)" + ) + } } + indexedMessages.add(index to checkpointMessage) log.info { "Added checkpoint for stream: $key at index: $index" } } @@ -163,8 +152,9 @@ abstract class StreamsCheckpointManager : CheckpointManager : CheckpointManager : CheckpointManager> + ) { + streamIndexes.forEach { (stream, index) -> + val lastIndex = lastIndexEmitted[stream] + if (lastIndex != null && index <= lastIndex) { + throw IllegalStateException( + "Checkpoint message for $stream emitted out of order (emitting $index after $lastIndex)" + ) + } + lastIndexEmitted[stream] = index + } + lastFlushTimeMs.set(timeProvider.currentTimeMillis()) outputConsumer.invoke(checkpointMessage) } @@ -210,7 +214,7 @@ abstract class StreamsCheckpointManager : CheckpointManager { streamCheckpoints - .mapValues { it.value.ascendingKeySet().firstOrNull() } + .mapValues { it.value.firstOrNull()?.first } .filterValues { it != null } .mapValues { it.value!! } } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/StreamManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/StreamManager.kt index 3931a60ccdfa5..80769f1e8cb18 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/StreamManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/StreamManager.kt @@ -153,7 +153,7 @@ class DefaultStreamManager( batch.ranges.asRanges().map { it.span(Range.singleton(it.upperEndpoint() + 1)) } stateRanges.addAll(expanded) - log.info { "Updated ranges for $stream[${batch.batch.state}]: $stateRanges" } + log.info { "Updated ranges for ${stream.descriptor}[${batch.batch.state}]: $stateRanges" } } /** True if all records in `[0, index)` have reached the given state. */ diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/SyncManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/SyncManager.kt index 2f972f5a6137a..066de1796b519 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/SyncManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/SyncManager.kt @@ -35,11 +35,14 @@ interface SyncManager { /** Suspend until all streams are complete. Returns false if any stream was failed/killed. */ suspend fun awaitAllStreamsCompletedSuccessfully(): Boolean + suspend fun markInputConsumed() + suspend fun markCheckpointsProcessed() suspend fun markFailed(causedBy: Exception): SyncFailure suspend fun markSucceeded() fun isActive(): Boolean + suspend fun awaitInputProcessingComplete(): Unit suspend fun awaitSyncResult(): SyncResult } @@ -53,6 +56,8 @@ class DefaultSyncManager( private val syncResult = CompletableDeferred() private val streamLoaders = ConcurrentHashMap>() + private val inputConsumed = CompletableDeferred() + private val checkpointsProcessed = CompletableDeferred() override fun getStreamManager(stream: DestinationStream.Descriptor): StreamManager { return streamManagers[stream] ?: throw IllegalArgumentException("Stream not found: $stream") @@ -104,6 +109,19 @@ class DefaultSyncManager( override suspend fun awaitSyncResult(): SyncResult { return syncResult.await() } + + override suspend fun awaitInputProcessingComplete() { + inputConsumed.await() + checkpointsProcessed.await() + } + + override suspend fun markInputConsumed() { + inputConsumed.complete(true) + } + + override suspend fun markCheckpointsProcessed() { + checkpointsProcessed.complete(true) + } } @Factory diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/TeardownTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/TeardownTask.kt index 1a361deb0af5d..e0842ac406859 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/TeardownTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/implementor/TeardownTask.kt @@ -33,6 +33,7 @@ class DefaultTeardownTask( override suspend fun execute() { // TODO: This should be its own task, dispatched on a timer or something. + syncManager.awaitInputProcessingComplete() checkpointManager.flushReadyCheckpointMessages() // Run the task exactly once, and only after all streams have closed. diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTask.kt index 27d2e7f72646c..15d99d138618f 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/InputConsumerTask.kt @@ -159,6 +159,7 @@ class DefaultInputConsumerTask( } } } + syncManager.markInputConsumed() } finally { log.info { "Closing record queues" } catalog.streams.forEach { recordQueueSupplier.get(it.descriptor).close() } diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/UpdateCheckpointsTask.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/UpdateCheckpointsTask.kt index 949cc8fed032e..45b03d3eee041 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/UpdateCheckpointsTask.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/task/internal/UpdateCheckpointsTask.kt @@ -12,6 +12,7 @@ import io.airbyte.cdk.load.message.MessageQueue import io.airbyte.cdk.load.message.StreamCheckpointWrapped import io.airbyte.cdk.load.state.CheckpointManager import io.airbyte.cdk.load.state.Reserved +import io.airbyte.cdk.load.state.SyncManager import io.airbyte.cdk.load.task.SyncTask import io.github.oshai.kotlinlogging.KotlinLogging import io.micronaut.context.annotation.Secondary @@ -22,6 +23,7 @@ interface UpdateCheckpointsTask : SyncTask @Singleton @Secondary class DefaultUpdateCheckpointsTask( + private val syncManager: SyncManager, private val checkpointManager: CheckpointManager>, private val checkpointMessageQueue: MessageQueue> @@ -41,6 +43,7 @@ class DefaultUpdateCheckpointsTask( } } } + syncManager.markCheckpointsProcessed() log.info { "All checkpoints (state) updated" } } } diff --git a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/CheckpointManagerTest.kt b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/CheckpointManagerTest.kt index 2b8201112bfa2..246f96a8120db 100644 --- a/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/CheckpointManagerTest.kt +++ b/airbyte-cdk/bulk/core/load/src/test/kotlin/io/airbyte/cdk/load/state/CheckpointManagerTest.kt @@ -149,7 +149,7 @@ class CheckpointManagerTest { expectedStreamOutput = mapOf( stream1.descriptor to listOf("11", "12"), - stream2.descriptor to listOf("22", "21") + stream2.descriptor to listOf("21", "22") ) ), TestCase( From 4b355a42e63172f9578299cadab0fb3cd25d26bd Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Wed, 9 Oct 2024 10:02:35 -0700 Subject: [PATCH 202/379] [source-mysql-v2] consistent state between v1 and v2 (#46324) --- .../connectors/source-mysql-v2/metadata.yaml | 2 +- .../source/mysql/MysqlJdbcPartition.kt | 305 ++++++++++++++++++ .../source/mysql/MysqlJdbcPartitionFactory.kt | 181 +++++++++++ .../source/mysql/MysqlJdbcStreamStateValue.kt | 92 ++++++ .../source/mysql/MysqlCdcIntegrationTest.kt | 3 +- .../source/mysql/MysqlContainerFactory.kt | 1 + .../mysql/MysqlCursorBasedIntegrationTest.kt | 153 +++++++++ .../MysqlSourceDatatypeIntegrationTest.kt | 1 + 8 files changed, 735 insertions(+), 3 deletions(-) create mode 100644 airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcPartition.kt create mode 100644 airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcPartitionFactory.kt create mode 100644 airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcStreamStateValue.kt create mode 100644 airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCursorBasedIntegrationTest.kt diff --git a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml index f46c784501d15..ffc8f3326609a 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml +++ b/airbyte-integrations/connectors/source-mysql-v2/metadata.yaml @@ -9,7 +9,7 @@ data: connectorSubtype: database connectorType: source definitionId: 561393ed-7e3a-4d0d-8b8b-90ded371754c - dockerImageTag: 0.0.19 + dockerImageTag: 0.0.20 dockerRepository: airbyte/source-mysql-v2 documentationUrl: https://docs.airbyte.com/integrations/sources/mysql githubIssueLabel: source-mysql-v2 diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcPartition.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcPartition.kt new file mode 100644 index 0000000000000..5897754b49547 --- /dev/null +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcPartition.kt @@ -0,0 +1,305 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.integrations.source.mysql + +import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.node.ObjectNode +import io.airbyte.cdk.command.OpaqueStateValue +import io.airbyte.cdk.discover.Field +import io.airbyte.cdk.read.And +import io.airbyte.cdk.read.DefaultJdbcStreamState +import io.airbyte.cdk.read.Equal +import io.airbyte.cdk.read.From +import io.airbyte.cdk.read.FromSample +import io.airbyte.cdk.read.Greater +import io.airbyte.cdk.read.GreaterOrEqual +import io.airbyte.cdk.read.JdbcCursorPartition +import io.airbyte.cdk.read.JdbcPartition +import io.airbyte.cdk.read.JdbcSplittablePartition +import io.airbyte.cdk.read.Lesser +import io.airbyte.cdk.read.LesserOrEqual +import io.airbyte.cdk.read.Limit +import io.airbyte.cdk.read.Or +import io.airbyte.cdk.read.OrderBy +import io.airbyte.cdk.read.SelectColumnMaxValue +import io.airbyte.cdk.read.SelectColumns +import io.airbyte.cdk.read.SelectQuery +import io.airbyte.cdk.read.SelectQueryGenerator +import io.airbyte.cdk.read.SelectQuerySpec +import io.airbyte.cdk.read.Stream +import io.airbyte.cdk.read.Where +import io.airbyte.cdk.read.WhereClauseLeafNode +import io.airbyte.cdk.read.WhereClauseNode +import io.airbyte.cdk.read.optimize +import io.airbyte.cdk.util.Jsons + +/** Base class for default implementations of [JdbcPartition] for non resumable partitions. */ +sealed class MysqlJdbcPartition( + val selectQueryGenerator: SelectQueryGenerator, + streamState: DefaultJdbcStreamState, +) : JdbcPartition { + val stream: Stream = streamState.stream + val from = From(stream.name, stream.namespace) + + override val nonResumableQuery: SelectQuery + get() = selectQueryGenerator.generate(nonResumableQuerySpec.optimize()) + + open val nonResumableQuerySpec = SelectQuerySpec(SelectColumns(stream.fields), from) + + override fun samplingQuery(sampleRateInvPow2: Int): SelectQuery { + val sampleSize: Int = streamState.sharedState.maxSampleSize + val querySpec = + SelectQuerySpec( + SelectColumns(stream.fields), + From(stream.name, stream.namespace), + limit = Limit(sampleSize.toLong()), + ) + return selectQueryGenerator.generate(querySpec.optimize()) + } +} + +/** Default implementation of a [JdbcPartition] for an unsplittable snapshot partition. */ +class MysqlJdbcNonResumableSnapshotPartition( + selectQueryGenerator: SelectQueryGenerator, + override val streamState: DefaultJdbcStreamState, +) : MysqlJdbcPartition(selectQueryGenerator, streamState) { + + override val completeState: OpaqueStateValue = MysqlJdbcStreamStateValue.snapshotCompleted +} + +/** + * Default implementation of a [JdbcPartition] for an non resumable snapshot partition preceding a + * cursor-based incremental sync. + */ +class MysqlJdbcNonResumableSnapshotWithCursorPartition( + selectQueryGenerator: SelectQueryGenerator, + override val streamState: DefaultJdbcStreamState, + val cursor: Field, +) : + MysqlJdbcPartition(selectQueryGenerator, streamState), + JdbcCursorPartition { + + override val completeState: OpaqueStateValue + get() = + MysqlJdbcStreamStateValue.cursorIncrementalCheckpoint( + cursor, + cursorCheckpoint = streamState.cursorUpperBound!!, + streamState.stream, + ) + + override val cursorUpperBoundQuery: SelectQuery + get() = selectQueryGenerator.generate(cursorUpperBoundQuerySpec.optimize()) + + val cursorUpperBoundQuerySpec = SelectQuerySpec(SelectColumnMaxValue(cursor), from) +} + +/** Base class for default implementations of [JdbcPartition] for partitions. */ +sealed class MysqlJdbcResumablePartition( + selectQueryGenerator: SelectQueryGenerator, + streamState: DefaultJdbcStreamState, + val checkpointColumns: List, +) : + MysqlJdbcPartition(selectQueryGenerator, streamState), + JdbcSplittablePartition { + abstract val lowerBound: List? + abstract val upperBound: List? + + override val nonResumableQuery: SelectQuery + get() = selectQueryGenerator.generate(nonResumableQuerySpec.optimize()) + + override val nonResumableQuerySpec: SelectQuerySpec + get() = SelectQuerySpec(SelectColumns(stream.fields), from, where) + + override fun resumableQuery(limit: Long): SelectQuery { + val querySpec = + SelectQuerySpec( + SelectColumns((stream.fields + checkpointColumns).distinct()), + from, + where, + OrderBy(checkpointColumns), + Limit(limit), + ) + return selectQueryGenerator.generate(querySpec.optimize()) + } + + override fun samplingQuery(sampleRateInvPow2: Int): SelectQuery { + val sampleSize: Int = streamState.sharedState.maxSampleSize + val querySpec = + SelectQuerySpec( + SelectColumns(stream.fields + checkpointColumns), + FromSample(stream.name, stream.namespace, sampleRateInvPow2, sampleSize), + where, + OrderBy(checkpointColumns), + ) + return selectQueryGenerator.generate(querySpec.optimize()) + } + + val where: Where + get() { + val zippedLowerBound: List> = + lowerBound?.let { checkpointColumns.zip(it) } ?: listOf() + val lowerBoundDisj: List = + zippedLowerBound.mapIndexed { idx: Int, (gtCol: Field, gtValue: JsonNode) -> + val lastLeaf: WhereClauseLeafNode = + if (isLowerBoundIncluded && idx == checkpointColumns.size - 1) { + GreaterOrEqual(gtCol, gtValue) + } else { + Greater(gtCol, gtValue) + } + And( + zippedLowerBound.take(idx).map { (eqCol: Field, eqValue: JsonNode) -> + Equal(eqCol, eqValue) + } + listOf(lastLeaf), + ) + } + val zippedUpperBound: List> = + upperBound?.let { checkpointColumns.zip(it) } ?: listOf() + val upperBoundDisj: List = + zippedUpperBound.mapIndexed { idx: Int, (leqCol: Field, leqValue: JsonNode) -> + val lastLeaf: WhereClauseLeafNode = + if (idx < zippedUpperBound.size - 1) { + Lesser(leqCol, leqValue) + } else { + LesserOrEqual(leqCol, leqValue) + } + And( + zippedUpperBound.take(idx).map { (eqCol: Field, eqValue: JsonNode) -> + Equal(eqCol, eqValue) + } + listOf(lastLeaf), + ) + } + return Where(And(Or(lowerBoundDisj), Or(upperBoundDisj))) + } + + open val isLowerBoundIncluded: Boolean = false +} + +/** Implementation of a [JdbcPartition] for a snapshot partition. */ +class MysqlJdbcSnapshotPartition( + selectQueryGenerator: SelectQueryGenerator, + override val streamState: DefaultJdbcStreamState, + primaryKey: List, + override val lowerBound: List?, + override val upperBound: List?, +) : MysqlJdbcResumablePartition(selectQueryGenerator, streamState, primaryKey) { + + override val completeState: OpaqueStateValue + get() = + when (upperBound) { + null -> MysqlJdbcStreamStateValue.snapshotCompleted + else -> + MysqlJdbcStreamStateValue.snapshotCheckpoint( + primaryKey = checkpointColumns, + primaryKeyCheckpoint = upperBound, + ) + } + + override fun incompleteState(lastRecord: ObjectNode): OpaqueStateValue = + MysqlJdbcStreamStateValue.snapshotCheckpoint( + primaryKey = checkpointColumns, + primaryKeyCheckpoint = checkpointColumns.map { lastRecord[it.id] ?: Jsons.nullNode() }, + ) +} + +/** + * Default implementation of a [JdbcPartition] for a splittable partition involving cursor columns. + */ +sealed class MysqlJdbcCursorPartition( + selectQueryGenerator: SelectQueryGenerator, + streamState: DefaultJdbcStreamState, + checkpointColumns: List, + val cursor: Field, + private val explicitCursorUpperBound: JsonNode?, +) : + MysqlJdbcResumablePartition(selectQueryGenerator, streamState, checkpointColumns), + JdbcCursorPartition { + + val cursorUpperBound: JsonNode + get() = explicitCursorUpperBound ?: streamState.cursorUpperBound!! + + override val cursorUpperBoundQuery: SelectQuery + get() = selectQueryGenerator.generate(cursorUpperBoundQuerySpec.optimize()) + + val cursorUpperBoundQuerySpec = SelectQuerySpec(SelectColumnMaxValue(cursor), from) +} + +/** + * Default implementation of a [JdbcPartition] for a splittable snapshot partition preceding a + * cursor-based incremental sync. + */ +class MysqlJdbcSnapshotWithCursorPartition( + selectQueryGenerator: SelectQueryGenerator, + override val streamState: DefaultJdbcStreamState, + primaryKey: List, + override val lowerBound: List?, + cursor: Field, + cursorUpperBound: JsonNode?, +) : + MysqlJdbcCursorPartition( + selectQueryGenerator, + streamState, + primaryKey, + cursor, + cursorUpperBound + ) { + // UpperBound is not used because the partition is not splittable. + override val upperBound: List? = null + + override val completeState: OpaqueStateValue + get() = + MysqlJdbcStreamStateValue.cursorIncrementalCheckpoint( + cursor, + cursorUpperBound, + stream, + ) + + override fun incompleteState(lastRecord: ObjectNode): OpaqueStateValue = + MysqlJdbcStreamStateValue.snapshotWithCursorCheckpoint( + primaryKey = checkpointColumns, + primaryKeyCheckpoint = checkpointColumns.map { lastRecord[it.id] ?: Jsons.nullNode() }, + cursor, + stream, + ) +} + +/** + * Default implementation of a [JdbcPartition] for a cursor incremental partition. These are always + * splittable. + */ +class MysqlJdbcCursorIncrementalPartition( + selectQueryGenerator: SelectQueryGenerator, + override val streamState: DefaultJdbcStreamState, + cursor: Field, + val cursorLowerBound: JsonNode, + override val isLowerBoundIncluded: Boolean, + cursorUpperBound: JsonNode?, +) : + MysqlJdbcCursorPartition( + selectQueryGenerator, + streamState, + listOf(cursor), + cursor, + cursorUpperBound + ) { + + override val lowerBound: List = listOf(cursorLowerBound) + override val upperBound: List + get() = listOf(cursorUpperBound) + + override val completeState: OpaqueStateValue + get() = + MysqlJdbcStreamStateValue.cursorIncrementalCheckpoint( + cursor, + cursorCheckpoint = cursorUpperBound, + stream, + ) + + override fun incompleteState(lastRecord: ObjectNode): OpaqueStateValue = + MysqlJdbcStreamStateValue.cursorIncrementalCheckpoint( + cursor, + cursorCheckpoint = lastRecord[cursor.id] ?: Jsons.nullNode(), + stream, + ) +} diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcPartitionFactory.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcPartitionFactory.kt new file mode 100644 index 0000000000000..406aa4b28c8e3 --- /dev/null +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcPartitionFactory.kt @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.integrations.source.mysql + +import com.fasterxml.jackson.databind.JsonNode +import io.airbyte.cdk.ConfigErrorException +import io.airbyte.cdk.command.OpaqueStateValue +import io.airbyte.cdk.data.LeafAirbyteSchemaType +import io.airbyte.cdk.discover.Field +import io.airbyte.cdk.read.ConfiguredSyncMode +import io.airbyte.cdk.read.DefaultJdbcSharedState +import io.airbyte.cdk.read.DefaultJdbcStreamState +import io.airbyte.cdk.read.JdbcPartitionFactory +import io.airbyte.cdk.read.Stream +import io.airbyte.cdk.util.Jsons +import io.micronaut.context.annotation.Primary +import java.util.concurrent.ConcurrentHashMap +import javax.inject.Singleton + +@Primary +@Singleton +class MysqlJdbcPartitionFactory( + override val sharedState: DefaultJdbcSharedState, + val selectQueryGenerator: MysqlSourceOperations, +) : + JdbcPartitionFactory< + DefaultJdbcSharedState, + DefaultJdbcStreamState, + MysqlJdbcPartition, + > { + + private val streamStates = ConcurrentHashMap() + + override fun streamState(stream: Stream): DefaultJdbcStreamState = + streamStates.getOrPut(stream.label) { DefaultJdbcStreamState(sharedState, stream) } + + private fun coldStart(streamState: DefaultJdbcStreamState): MysqlJdbcPartition { + val stream: Stream = streamState.stream + val pkChosenFromCatalog: List = stream.configuredPrimaryKey ?: listOf() + if ( + stream.configuredSyncMode == ConfiguredSyncMode.FULL_REFRESH || + sharedState.configuration.global + ) { + if (pkChosenFromCatalog.isEmpty()) { + return MysqlJdbcNonResumableSnapshotPartition( + selectQueryGenerator, + streamState, + ) + } + return MysqlJdbcSnapshotPartition( + selectQueryGenerator, + streamState, + pkChosenFromCatalog, + lowerBound = null, + upperBound = null, + ) + } + + val cursorChosenFromCatalog: Field = + stream.configuredCursor as? Field ?: throw ConfigErrorException("no cursor") + + if (pkChosenFromCatalog.isEmpty()) { + return MysqlJdbcNonResumableSnapshotWithCursorPartition( + selectQueryGenerator, + streamState, + cursorChosenFromCatalog + ) + } + return MysqlJdbcSnapshotWithCursorPartition( + selectQueryGenerator, + streamState, + pkChosenFromCatalog, + lowerBound = null, + cursorChosenFromCatalog, + cursorUpperBound = null, + ) + } + + /** + * Flowchart: + * 1. If the input state is null - using coldstart. + * ``` + * a. If it's global but without PK, use non-resumable snapshot. + * b. If it's global with PK, use snapshot. + * c. If it's not global, use snapshot with cursor. + * ``` + * 2. If the input state is not null - + * ``` + * a. If it's in global mode, JdbcPartitionFactory will not handle this. (TODO) + * b. If it's cursor based, it could be either in PK read phase (initial read) or + * cursor read phase (incremental read). This is differentiated by the stateType. + * i. In PK read phase, use snapshot with cursor. If no PKs were found, + * use non-resumable snapshot with cursor. + * ii. In cursor read phase, use cursor incremental. + * ``` + */ + override fun create( + stream: Stream, + opaqueStateValue: OpaqueStateValue?, + ): MysqlJdbcPartition? { + val streamState: DefaultJdbcStreamState = streamState(stream) + if (opaqueStateValue == null) { + return coldStart(streamState) + } + val sv: MysqlJdbcStreamStateValue = + Jsons.treeToValue(opaqueStateValue, MysqlJdbcStreamStateValue::class.java) + + val isCursorBasedIncremental: Boolean = + stream.configuredSyncMode == ConfiguredSyncMode.INCREMENTAL && + !sharedState.configuration.global + + if (!isCursorBasedIncremental) { + // TODO: This should consider v1 state format for CDC initial read and return + // a MysqlJdbcSnapshotPartition, or a different partition if we can't reuse + // MysqlJdbcStreamStateValue. + return null + } else { + if (sv.stateType != "cursor_based") { + // Loading value from catalog. Note there could be unexpected behaviors if user + // updates their schema but did not reset their state. + val pkChosenFromCatalog: List = stream.configuredPrimaryKey ?: listOf() + val pkLowerBound: JsonNode = Jsons.valueToTree(sv.pkValue) + val cursorChosenFromCatalog: Field = + stream.configuredCursor as? Field ?: throw ConfigErrorException("no cursor") + + // in a state where it's still in primary_key read part. + return MysqlJdbcSnapshotWithCursorPartition( + selectQueryGenerator, + streamState, + pkChosenFromCatalog, + lowerBound = listOf(pkLowerBound), + cursorChosenFromCatalog, + cursorUpperBound = null, + ) + } + // resume back to cursor based increment. + val cursor: Field = stream.fields.find { it.id == sv.cursorField.first() } as Field + val cursorCheckpoint: JsonNode = + when (cursor.type.airbyteSchemaType) { + is LeafAirbyteSchemaType -> + when (cursor.type.airbyteSchemaType as LeafAirbyteSchemaType) { + LeafAirbyteSchemaType.INTEGER -> { + Jsons.valueToTree(sv.cursors.toInt()) + } + LeafAirbyteSchemaType.NUMBER -> { + Jsons.valueToTree(sv.cursors.toDouble()) + } + else -> Jsons.valueToTree(sv.cursors) + } + else -> + throw IllegalStateException( + "Cursor field must be leaf type but is ${cursor.type.airbyteSchemaType}." + ) + } + // Compose a jsonnode of cursor label to cursor value to fit in + // DefaultJdbcCursorIncrementalPartition + if (cursorCheckpoint == streamState.cursorUpperBound) { + // Incremental complete. + return null + } + return MysqlJdbcCursorIncrementalPartition( + selectQueryGenerator, + streamState, + cursor, + cursorLowerBound = cursorCheckpoint, + isLowerBoundIncluded = false, + cursorUpperBound = streamState.cursorUpperBound, + ) + } + } + + override fun split( + unsplitPartition: MysqlJdbcPartition, + opaqueStateValues: List + ): List { + // At this moment we don't support split on within mysql stream in any mode. + return listOf(unsplitPartition) + } +} diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcStreamStateValue.kt b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcStreamStateValue.kt new file mode 100644 index 0000000000000..c43c5069312be --- /dev/null +++ b/airbyte-integrations/connectors/source-mysql-v2/src/main/kotlin/io/airbyte/integrations/source/mysql/MysqlJdbcStreamStateValue.kt @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.integrations.source.mysql + +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.databind.JsonNode +import io.airbyte.cdk.command.OpaqueStateValue +import io.airbyte.cdk.discover.Field +import io.airbyte.cdk.read.Stream +import io.airbyte.cdk.util.Jsons + +data class MysqlJdbcStreamStateValue( + @JsonProperty("cursor") val cursors: String = "", + @JsonProperty("version") val version: Int = 2, + @JsonProperty("state_type") val stateType: String = StateType.CURSOR_BASED.stateType, + @JsonProperty("stream_name") val streamName: String = "", + @JsonProperty("cursor_field") val cursorField: List = listOf(), + @JsonProperty("stream_namespace") val streamNamespace: String = "", + @JsonProperty("cursor_record_count") val cursorRecordCount: Int = 0, + @JsonProperty("pk_name") val pkName: String? = null, + @JsonProperty("pk_value") val pkValue: String? = null, + @JsonProperty("incremental_state") val incrementalState: JsonNode? = null, +) { + companion object { + /** Value representing the completion of a FULL_REFRESH snapshot. */ + val snapshotCompleted: OpaqueStateValue + get() = Jsons.valueToTree(MysqlJdbcStreamStateValue(stateType = "primary_key")) + + /** Value representing the progress of an ongoing incremental cursor read. */ + fun cursorIncrementalCheckpoint( + cursor: Field, + cursorCheckpoint: JsonNode, + stream: Stream, + ): OpaqueStateValue { + return Jsons.valueToTree( + MysqlJdbcStreamStateValue( + cursorField = listOf(cursor.id), + cursors = cursorCheckpoint.asText(), + streamName = stream.name, + streamNamespace = stream.namespace!! + ) + ) + } + + /** Value representing the progress of a ongoing snapshot not involving cursor columns. */ + fun snapshotCheckpoint( + primaryKey: List, + primaryKeyCheckpoint: List, + ): OpaqueStateValue { + val primaryKeyField = primaryKey.first() + return Jsons.valueToTree( + MysqlJdbcStreamStateValue( + pkName = primaryKeyField.id, + pkValue = primaryKeyCheckpoint.first().asText(), + stateType = StateType.PRIMARY_KEY.stateType, + ) + ) + } + + /** Value representing the progress of an ongoing snapshot involving cursor columns. */ + fun snapshotWithCursorCheckpoint( + primaryKey: List, + primaryKeyCheckpoint: List, + cursor: Field, + stream: Stream + ): OpaqueStateValue { + val primaryKeyField = primaryKey.first() + return Jsons.valueToTree( + MysqlJdbcStreamStateValue( + pkName = primaryKeyField.id, + pkValue = primaryKeyCheckpoint.first().asText(), + stateType = StateType.PRIMARY_KEY.stateType, + incrementalState = + Jsons.valueToTree( + MysqlJdbcStreamStateValue( + cursorField = listOf(cursor.id), + streamName = stream.name, + streamNamespace = stream.namespace!! + ) + ), + ) + ) + } + } +} + +enum class StateType(val stateType: String) { + PRIMARY_KEY("primary_key"), + CURSOR_BASED("cursor_based"), +} diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt index 44b12bc7aac18..345b92d318995 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCdcIntegrationTest.kt @@ -126,8 +126,7 @@ class MysqlCdcIntegrationTest { MysqlContainerFactory.exclusive( imageName = "mysql:8.0", MysqlContainerFactory.WithNetwork, - // MysqlContainerFactory.WithGtidModeOn - ) + ) provisionTestContainer(dbContainer, connectionFactory) } diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlContainerFactory.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlContainerFactory.kt index ab417e57691e6..13f8d439371b0 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlContainerFactory.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlContainerFactory.kt @@ -60,6 +60,7 @@ object MysqlContainerFactory { database = "test" checkpointTargetIntervalSeconds = 60 concurrency = 1 + setMethodValue(UserDefinedCursor) } fun MySQLContainer<*>.execAsRoot(sql: String) { diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCursorBasedIntegrationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCursorBasedIntegrationTest.kt new file mode 100644 index 0000000000000..9fbf196e18c8c --- /dev/null +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlCursorBasedIntegrationTest.kt @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2024 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.integrations.source.mysql + +import io.airbyte.cdk.StreamIdentifier +import io.airbyte.cdk.command.CliRunner +import io.airbyte.cdk.discover.DiscoveredStream +import io.airbyte.cdk.discover.Field +import io.airbyte.cdk.discover.JdbcAirbyteStreamFactory +import io.airbyte.cdk.jdbc.IntFieldType +import io.airbyte.cdk.jdbc.JdbcConnectionFactory +import io.airbyte.cdk.jdbc.StringFieldType +import io.airbyte.cdk.output.BufferingOutputConsumer +import io.airbyte.cdk.util.Jsons +import io.airbyte.protocol.models.v0.AirbyteRecordMessage +import io.airbyte.protocol.models.v0.AirbyteStateMessage +import io.airbyte.protocol.models.v0.AirbyteStream +import io.airbyte.protocol.models.v0.CatalogHelpers +import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog +import io.airbyte.protocol.models.v0.ConfiguredAirbyteStream +import io.airbyte.protocol.models.v0.StreamDescriptor +import io.airbyte.protocol.models.v0.SyncMode +import io.github.oshai.kotlinlogging.KotlinLogging +import java.sql.Connection +import java.sql.Statement +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.BeforeAll +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.Timeout +import org.testcontainers.containers.MySQLContainer + +class MysqlCursorBasedIntegrationTest { + + @Test + fun testCursorBasedRead() { + val run1: BufferingOutputConsumer = + CliRunner.source("read", config, getConfiguredCatalog()).run() + + val lastStateMessageFromRun1 = run1.states().last() + val lastStreamStateFromRun1 = lastStateMessageFromRun1.stream.streamState + + assertEquals("20", lastStreamStateFromRun1.get("cursor").textValue()) + assertEquals(2, lastStreamStateFromRun1.get("version").intValue()) + assertEquals("cursor_based", lastStreamStateFromRun1.get("state_type").asText()) + assertEquals(tableName, lastStreamStateFromRun1.get("stream_name").asText()) + assertEquals(listOf("k"), lastStreamStateFromRun1.get("cursor_field").map { it.asText() }) + assertEquals("test", lastStreamStateFromRun1.get("stream_namespace").asText()) + assertEquals(0, lastStreamStateFromRun1.get("cursor_record_count").asInt()) + + connectionFactory.get().use { connection: Connection -> + connection.isReadOnly = false + connection.createStatement().use { stmt: Statement -> + stmt.execute("INSERT INTO test.$tableName (k, v) VALUES (3, 'baz-ignore')") + stmt.execute("INSERT INTO test.$tableName (k, v) VALUES (13, 'baz-ignore')") + stmt.execute("INSERT INTO test.$tableName (k, v) VALUES (30, 'baz')") + } + } + + val run2InputState: List = listOf(lastStateMessageFromRun1) + val run2: BufferingOutputConsumer = + CliRunner.source("read", config, getConfiguredCatalog(), run2InputState).run() + val recordMessageFromRun2: List = run2.records() + assertEquals(recordMessageFromRun2.size, 1) + } + + @Test + fun testWithV1State() { + var state: AirbyteStateMessage = Jsons.readValue(V1_STATE, AirbyteStateMessage::class.java) + val run1: BufferingOutputConsumer = + CliRunner.source("read", config, getConfiguredCatalog(), listOf(state)).run() + val recordMessageFromRun1: List = run1.records() + assertEquals(recordMessageFromRun1.size, 1) + } + + companion object { + val log = KotlinLogging.logger {} + val dbContainer: MySQLContainer<*> = MysqlContainerFactory.shared(imageName = "mysql:8.0") + + val config: MysqlSourceConfigurationSpecification = + MysqlContainerFactory.config(dbContainer) + + val connectionFactory: JdbcConnectionFactory by lazy { + JdbcConnectionFactory(MysqlSourceConfigurationFactory().make(config)) + } + + fun getConfiguredCatalog(): ConfiguredAirbyteCatalog { + val desc = StreamDescriptor().withName(tableName).withNamespace("test") + val discoveredStream = + DiscoveredStream( + id = StreamIdentifier.Companion.from(desc), + columns = listOf(Field("k", IntFieldType), Field("v", StringFieldType)), + primaryKeyColumnIDs = listOf(listOf("k")), + ) + val stream: AirbyteStream = JdbcAirbyteStreamFactory().createGlobal(discoveredStream) + val configuredStream: ConfiguredAirbyteStream = + CatalogHelpers.toDefaultConfiguredStream(stream) + .withSyncMode(SyncMode.INCREMENTAL) + .withPrimaryKey(discoveredStream.primaryKeyColumnIDs) + .withCursorField(listOf("k")) + return ConfiguredAirbyteCatalog().withStreams(listOf(configuredStream)) + } + + @JvmStatic + @BeforeAll + @Timeout(value = 300) + fun startAndProvisionTestContainer() { + provisionTestContainer(connectionFactory) + } + + lateinit var tableName: String + + fun provisionTestContainer(targetConnectionFactory: JdbcConnectionFactory) { + tableName = (1..8).map { ('a'..'z').random() }.joinToString("") + + targetConnectionFactory.get().use { connection: Connection -> + connection.isReadOnly = false + connection.createStatement().use { stmt: Statement -> + stmt.execute("CREATE TABLE test.$tableName(k INT PRIMARY KEY, v VARCHAR(80))") + } + connection.createStatement().use { stmt: Statement -> + stmt.execute( + "INSERT INTO test.$tableName (k, v) VALUES (10, 'foo'), (20, 'bar')" + ) + } + } + } + } + val V1_STATE: String = + """ + { + "type": "STREAM", + "stream": { + "stream_descriptor": { + "name": "${tableName}", + "namespace": "test" + }, + "stream_state": { + "cursor": "10", + "version": 2, + "state_type": "cursor_based", + "stream_name": "${tableName}", + "cursor_field": [ + "k" + ], + "stream_namespace": "test", + "cursor_record_count": 1 + } + } + } + """ +} diff --git a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt index 5b2eee35bb686..b7d5b26f03844 100644 --- a/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt +++ b/airbyte-integrations/connectors/source-mysql-v2/src/test/kotlin/io/airbyte/integrations/source/mysql/MysqlSourceDatatypeIntegrationTest.kt @@ -145,6 +145,7 @@ class MysqlSourceDatatypeIntegrationTest { Jsons.createArrayNode().apply { addAll(data.sortedBy { it.toString() }) } val actualRecords: List = actualRead?.records() ?: listOf() + val actual: JsonNode = sortedRecordData(actualRecords.mapNotNull { it.data }) log.info { "test case $streamName: emitted records $actual" } val expected: JsonNode = sortedRecordData(allStreamNamesAndRecordData[streamName]!!) From 15471cbf8b971a9cba3d7fd5b4ffa672a1af89d1 Mon Sep 17 00:00:00 2001 From: Aazam Thakur <59562284+aazam-gh@users.noreply.github.com> Date: Wed, 9 Oct 2024 23:01:26 +0530 Subject: [PATCH 203/379] source-sharetribe contribution from aazam-gh (#46334) Co-authored-by: Marcos Marx --- .../connectors/source-sharetribe/README.md | 39 + .../acceptance-test-config.yml | 17 + .../connectors/source-sharetribe/icon.svg | 2 + .../source-sharetribe/manifest.yaml | 1944 +++++++++++++++++ .../source-sharetribe/metadata.yaml | 35 + docs/integrations/sources/sharetribe.md | 57 + 6 files changed, 2094 insertions(+) create mode 100644 airbyte-integrations/connectors/source-sharetribe/README.md create mode 100644 airbyte-integrations/connectors/source-sharetribe/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-sharetribe/icon.svg create mode 100644 airbyte-integrations/connectors/source-sharetribe/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-sharetribe/metadata.yaml create mode 100644 docs/integrations/sources/sharetribe.md diff --git a/airbyte-integrations/connectors/source-sharetribe/README.md b/airbyte-integrations/connectors/source-sharetribe/README.md new file mode 100644 index 0000000000000..7d781dac7a60b --- /dev/null +++ b/airbyte-integrations/connectors/source-sharetribe/README.md @@ -0,0 +1,39 @@ +# Sharetribe +This directory contains the manifest-only connector for `source-sharetribe`. + +The Sharetribe source connector which ingests data from the sharetribe integrations API. +Sharetribe is a no code marketplace builder tool. The source supports a number of API changes. +For more information, checkout the website https://www.sharetribe.com/ + +This source uses the OAuth configuration for handling requests. +A client_ID and client_secret is required in order to setup a connection. +For more details about the API, check out https://www.sharetribe.com/api-reference/integration.html + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-sharetribe:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-sharetribe build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-sharetribe test +``` + diff --git a/airbyte-integrations/connectors/source-sharetribe/acceptance-test-config.yml b/airbyte-integrations/connectors/source-sharetribe/acceptance-test-config.yml new file mode 100644 index 0000000000000..4227bd8db9741 --- /dev/null +++ b/airbyte-integrations/connectors/source-sharetribe/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-sharetribe:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-sharetribe/icon.svg b/airbyte-integrations/connectors/source-sharetribe/icon.svg new file mode 100644 index 0000000000000..2c062c990e488 --- /dev/null +++ b/airbyte-integrations/connectors/source-sharetribe/icon.svg @@ -0,0 +1,2 @@ + + diff --git a/airbyte-integrations/connectors/source-sharetribe/manifest.yaml b/airbyte-integrations/connectors/source-sharetribe/manifest.yaml new file mode 100644 index 0000000000000..9ba389e80d59f --- /dev/null +++ b/airbyte-integrations/connectors/source-sharetribe/manifest.yaml @@ -0,0 +1,1944 @@ +version: 5.10.3 + +type: DeclarativeSource + +description: >- + The Sharetribe source connector which ingests data from the sharetribe integrations API. + Sharetribe is a no code marketplace builder tool. + The source supports a number of API changes. + For more information, checkout the website https://www.sharetribe.com/ + + This source uses the OAuth configuration for handling requests. + A client_ID and client_secret is required in order to setup a connection. + For more details about the API, check out https://www.sharetribe.com/api-reference/integration.html + +check: + type: CheckStream + stream_names: + - users + +definitions: + streams: + users: + type: DeclarativeStream + name: users + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/integration_api/users/query + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: createdAt + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: createdAtStart + inject_into: request_parameter + transformations: + - type: AddFields + fields: + - path: + - createdAt + value: "{{ record['attributes']['createdAt'] }}" + - type: RemoveFields + field_pointers: + - - attributes + - createdAt + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/users" + marketplace: + type: DeclarativeStream + name: marketplace + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/integration_api/marketplace/show + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/marketplace" + listings: + type: DeclarativeStream + name: listings + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/integration_api/listings/query + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: createdAt + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: createdAtStart + inject_into: request_parameter + transformations: + - type: AddFields + fields: + - path: + - createdAt + value: "{{ record['attributes']['createdAt'] }}" + - type: RemoveFields + field_pointers: + - - attributes + - createdAt + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/listings" + transactions: + type: DeclarativeStream + name: transactions + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/integration_api/transactions/query + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: createdAt + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: createdAtStart + inject_into: request_parameter + transformations: + - type: AddFields + fields: + - path: + - createdAt + value: "{{ record['attributes']['createdAt'] }}" + - type: RemoveFields + field_pointers: + - - attributes + - createdAt + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/transactions" + events: + type: DeclarativeStream + name: events + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/integration_api/events/query + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: createdAt + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: createdAtStart + inject_into: request_parameter + transformations: + - type: AddFields + fields: + - path: + - createdAt + value: "{{ record['attributes']['createdAt'] }}" + - type: RemoveFields + field_pointers: + - - attributes + - createdAt + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/events" + messages: + type: DeclarativeStream + name: messages + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/integration_api/transactions/query + http_method: GET + request_parameters: + include: messages + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - included + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: createdAt + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: createdAtStart + inject_into: request_parameter + transformations: + - type: AddFields + fields: + - path: + - createdAt + value: "{{ record['attributes']['createdAt'] }}" + - type: RemoveFields + field_pointers: + - - attributes + - createdAt + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/messages" + bookings: + type: DeclarativeStream + name: bookings + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/integration_api/transactions/query + http_method: GET + request_parameters: + include: booking + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - included + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: createdAt + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: createdAtStart + inject_into: request_parameter + transformations: + - type: AddFields + fields: + - path: + - createdAt + value: "{{ record['attributes']['createdAt'] }}" + - type: RemoveFields + field_pointers: + - - attributes + - createdAt + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/bookings" + reviews: + type: DeclarativeStream + name: reviews + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /v1/integration_api/transactions/query + http_method: GET + request_parameters: + include: reviews + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - included + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: perPage + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 100 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: createdAt + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%fZ" + datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: createdAtStart + inject_into: request_parameter + transformations: + - type: AddFields + fields: + - path: + - createdAt + value: "{{ record['attributes']['createdAt'] }}" + - type: RemoveFields + field_pointers: + - - attributes + - createdAt + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/reviews" + base_requester: + type: HttpRequester + url_base: https://flex-api.sharetribe.com + authenticator: + type: OAuthAuthenticator + scopes: + - integ + client_id: "{{ config[\"client_id\"] }}" + grant_type: client_credentials + client_secret: "{{ config[\"client_secret\"] }}" + access_token_name: access_token + refresh_request_body: {} + token_refresh_endpoint: https://flex-api.sharetribe.com/v1/auth/token + +streams: + - $ref: "#/definitions/streams/users" + - $ref: "#/definitions/streams/marketplace" + - $ref: "#/definitions/streams/listings" + - $ref: "#/definitions/streams/transactions" + - $ref: "#/definitions/streams/events" + - $ref: "#/definitions/streams/messages" + - $ref: "#/definitions/streams/bookings" + - $ref: "#/definitions/streams/reviews" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - client_id + - client_secret + - start_date + properties: + client_id: + type: string + order: 0 + title: Client ID + airbyte_secret: true + client_secret: + type: string + order: 1 + title: Client secret + airbyte_secret: true + start_date: + type: string + order: 2 + title: Start date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + oauth_access_token: + type: string + description: >- + The current access token. This field might be overridden by the + connector based on the token refresh endpoint response. + title: Access token + airbyte_secret: true + order: 3 + oauth_token_expiry_date: + type: string + description: >- + The date the current access token expires in. This field might be + overridden by the connector based on the token refresh endpoint + response. + title: Token expiry date + format: date-time + order: 4 + additionalProperties: true + +metadata: + autoImportSchema: + users: true + marketplace: true + listings: true + transactions: true + events: true + messages: true + bookings: true + reviews: true + testedStreams: + users: + streamHash: db0703aac3abe86912fd2b77069132d164f7a0cf + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + marketplace: + streamHash: 295c2db2cc5ab7fc45ae59bc15b2860800bc31df + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + listings: + streamHash: 4aea47adbb1caa9e65411ec5da81362d8e1265f8 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + transactions: + streamHash: 89520ec0e3208b722492c95c4e8565dc093b7fbd + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + events: + streamHash: 151acf210509220554188a3f5e68ba5626d4b02d + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + messages: + streamHash: d3ca766498bd2fc164853112a2099d7a4613a518 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + bookings: + streamHash: b1f4dcb1c3551c679fdf3ed5bf74e834237ad3be + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + reviews: + streamHash: 332199c4894cb71f381b46dd6838d3ac40b47ecb + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: {} + +schemas: + users: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + banned: + type: + - boolean + - "null" + deleted: + type: + - boolean + - "null" + email: + type: + - string + - "null" + emailVerified: + type: + - boolean + - "null" + identityProviders: + type: + - array + - "null" + permissions: + type: + - object + - "null" + properties: + initiateTransactions: + type: + - string + - "null" + postListings: + type: + - string + - "null" + read: + type: + - string + - "null" + profile: + type: + - object + - "null" + properties: + metadata: + type: + - object + - "null" + abbreviatedName: + type: + - string + - "null" + displayName: + type: + - string + - "null" + firstName: + type: + - string + - "null" + lastName: + type: + - string + - "null" + privateData: + type: + - object + - "null" + protectedData: + type: + - object + - "null" + properties: + terms: + type: + - array + - "null" + items: + type: + - string + - "null" + publicData: + type: + - object + - "null" + state: + type: + - string + - "null" + stripeConnected: + type: + - boolean + - "null" + createdAt: + type: string + id: + type: string + required: + - id + - createdAt + marketplace: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + id: + type: string + required: + - id + listings: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + metadata: + type: + - object + - "null" + availabilityPlan: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + entries: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + dayOfWeek: + type: + - string + - "null" + endTime: + type: + - string + - "null" + seats: + type: + - number + - "null" + startTime: + type: + - string + - "null" + timezone: + type: + - string + - "null" + deleted: + type: + - boolean + - "null" + geolocation: + type: + - object + - "null" + properties: + lat: + type: + - number + - "null" + lng: + type: + - number + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + privateData: + type: + - object + - "null" + publicData: + type: + - object + - "null" + properties: + exampleField: + type: + - string + - "null" + listingType: + type: + - string + - "null" + location: + type: + - object + - "null" + properties: + address: + type: + - string + - "null" + building: + type: + - string + - "null" + transactionProcessAlias: + type: + - string + - "null" + unitType: + type: + - string + - "null" + state: + type: + - string + - "null" + title: + type: + - string + - "null" + createdAt: + type: string + id: + type: string + required: + - id + - createdAt + transactions: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + metadata: + type: + - object + - "null" + lastTransition: + type: + - string + - "null" + lastTransitionedAt: + type: + - string + - "null" + lineItems: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + code: + type: + - string + - "null" + includeFor: + type: + - array + - "null" + items: + type: + - string + - "null" + lineTotal: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + percentage: + type: + - number + - "null" + quantity: + type: + - number + - "null" + reversal: + type: + - boolean + - "null" + unitPrice: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + payinTotal: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + payoutTotal: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + processName: + type: + - string + - "null" + processVersion: + type: + - number + - "null" + protectedData: + type: + - object + - "null" + properties: + shippingDetails: + type: + - object + - "null" + properties: + address: + type: + - object + - "null" + properties: + city: + type: + - string + - "null" + country: + type: + - string + - "null" + line1: + type: + - string + - "null" + postalCode: + type: + - string + - "null" + name: + type: + - string + - "null" + stripePaymentIntents: + type: + - object + - "null" + properties: + default: + type: + - object + - "null" + properties: + stripePaymentIntentClientSecret: + type: + - string + - "null" + stripePaymentIntentId: + type: + - string + - "null" + unitType: + type: + - string + - "null" + transitions: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + by: + type: + - string + - "null" + createdAt: + type: + - string + - "null" + transition: + type: + - string + - "null" + createdAt: + type: string + id: + type: string + required: + - id + - createdAt + events: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + auditData: + type: + - object + - "null" + properties: + clientId: + type: + - string + - "null" + requestId: + type: + - string + - "null" + userId: + type: + - string + - "null" + eventType: + type: + - string + - "null" + marketplaceId: + type: + - string + - "null" + previousValues: + type: + - object + - "null" + properties: + attributes: + type: + - object + - "null" + properties: + emailVerified: + type: + - boolean + - "null" + lastTransition: + type: + - string + - "null" + lastTransitionedAt: + type: + - string + - "null" + publicData: + type: + - object + - "null" + properties: {} + state: + type: + - string + - "null" + stripeConnected: + type: + - boolean + - "null" + transitions: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + by: + type: + - string + - "null" + createdAt: + type: + - string + - "null" + transition: + type: + - string + - "null" + relationships: + type: + - object + - "null" + properties: + images: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + stripeAccount: + type: + - object + - "null" + properties: {} + resource: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + metadata: + type: + - object + - "null" + availabilityPlan: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + entries: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + dayOfWeek: + type: + - string + - "null" + endTime: + type: + - string + - "null" + seats: + type: + - number + - "null" + startTime: + type: + - string + - "null" + timezone: + type: + - string + - "null" + banned: + type: + - boolean + - "null" + createdAt: + type: + - string + - "null" + deleted: + type: + - boolean + - "null" + displayEnd: + type: + - string + - "null" + displayStart: + type: + - string + - "null" + email: + type: + - string + - "null" + emailVerified: + type: + - boolean + - "null" + end: + type: + - string + - "null" + geolocation: + type: + - object + - "null" + properties: + lat: + type: + - number + - "null" + lng: + type: + - number + - "null" + identityProviders: + type: + - array + - "null" + lastTransition: + type: + - string + - "null" + lastTransitionedAt: + type: + - string + - "null" + lineItems: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + code: + type: + - string + - "null" + includeFor: + type: + - array + - "null" + items: + type: + - string + - "null" + lineTotal: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + percentage: + type: + - number + - "null" + quantity: + type: + - number + - "null" + reversal: + type: + - boolean + - "null" + unitPrice: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + payinTotal: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + payoutTotal: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + permissions: + type: + - object + - "null" + properties: + initiateTransactions: + type: + - string + - "null" + postListings: + type: + - string + - "null" + read: + type: + - string + - "null" + price: + type: + - object + - "null" + properties: + amount: + type: + - number + - "null" + currency: + type: + - string + - "null" + privateData: + type: + - object + - "null" + processName: + type: + - string + - "null" + processVersion: + type: + - number + - "null" + profile: + type: + - object + - "null" + properties: + metadata: + type: + - object + - "null" + abbreviatedName: + type: + - string + - "null" + displayName: + type: + - string + - "null" + firstName: + type: + - string + - "null" + lastName: + type: + - string + - "null" + privateData: + type: + - object + - "null" + protectedData: + type: + - object + - "null" + properties: + terms: + type: + - array + - "null" + items: + type: + - string + - "null" + publicData: + type: + - object + - "null" + protectedData: + type: + - object + - "null" + properties: + shippingDetails: + type: + - object + - "null" + properties: + address: + type: + - object + - "null" + properties: + city: + type: + - string + - "null" + country: + type: + - string + - "null" + line1: + type: + - string + - "null" + postalCode: + type: + - string + - "null" + name: + type: + - string + - "null" + stripePaymentIntents: + type: + - object + - "null" + properties: + default: + type: + - object + - "null" + properties: + stripePaymentIntentClientSecret: + type: + - string + - "null" + stripePaymentIntentId: + type: + - string + - "null" + unitType: + type: + - string + - "null" + publicData: + type: + - object + - "null" + properties: + exampleField: + type: + - string + - "null" + listingType: + type: + - string + - "null" + location: + type: + - object + - "null" + properties: + address: + type: + - string + - "null" + building: + type: + - string + - "null" + transactionProcessAlias: + type: + - string + - "null" + unitType: + type: + - string + - "null" + seats: + type: + - number + - "null" + start: + type: + - string + - "null" + state: + type: + - string + - "null" + stripeConnected: + type: + - boolean + - "null" + title: + type: + - string + - "null" + transitions: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + by: + type: + - string + - "null" + createdAt: + type: + - string + - "null" + transition: + type: + - string + - "null" + id: + type: + - string + - "null" + relationships: + type: + - object + - "null" + properties: + author: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + booking: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + currentStock: + type: + - object + - "null" + properties: {} + customer: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + images: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + listing: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + marketplace: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + profileImage: + type: + - object + - "null" + properties: {} + provider: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + stockReservation: + type: + - object + - "null" + properties: {} + stripeAccount: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + transaction: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + resourceId: + type: + - string + - "null" + resourceType: + type: + - string + - "null" + sequenceId: + type: + - number + - "null" + source: + type: + - string + - "null" + createdAt: + type: string + id: + type: string + required: + - id + - createdAt + messages: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + content: + type: + - string + - "null" + createdAt: + type: string + id: + type: string + required: + - id + - createdAt + bookings: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + displayEnd: + type: + - string + - "null" + displayStart: + type: + - string + - "null" + end: + type: + - string + - "null" + seats: + type: + - number + - "null" + start: + type: + - string + - "null" + state: + type: + - string + - "null" + createdAt: + type: string + id: + type: string + required: + - id + - createdAt + reviews: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + content: + type: + - string + - "null" + rating: + type: + - number + - "null" + state: + type: + - string + - "null" + createdAt: + type: string + id: + type: string + required: + - id + - createdAt diff --git a/airbyte-integrations/connectors/source-sharetribe/metadata.yaml b/airbyte-integrations/connectors/source-sharetribe/metadata.yaml new file mode 100644 index 0000000000000..ebe3b8a2f0293 --- /dev/null +++ b/airbyte-integrations/connectors/source-sharetribe/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "flex-api.sharetribe.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-sharetribe + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: efe368ce-cd19-4be4-a2b1-11c69dc6bffb + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-sharetribe + githubIssueLabel: source-sharetribe + icon: icon.svg + license: MIT + name: Sharetribe + releaseDate: 2024-10-03 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/sharetribe + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/sharetribe.md b/docs/integrations/sources/sharetribe.md new file mode 100644 index 0000000000000..cc1d5333828a0 --- /dev/null +++ b/docs/integrations/sources/sharetribe.md @@ -0,0 +1,57 @@ +# Sharetribe + +This is the guide for the Sharetribe source connector which ingests data from the sharetribe integrations API. +Sharetribe is a no code marketplace builder tool. The important streams are `listings` and `transactions`. +Except for the `marketplace` endpoint, all the streams support incremental sync. + +## Prerequisites + +The source supports a number of API changes. For more information, checkout the website https://www.sharetribe.com/ +This source uses the OAuth configuration for handling requests. + +Once you create an account, log in and navigate to your sharetribe console. +In the sidebar, under the `Advanced` section, click on `Application` to create an application. +A client_ID and client_secret is required in order to setup a connection. Note down these credientials. +For more details about the API, check out https://www.sharetribe.com/api-reference/integration.html + +## Set up the Adjust source connector + +1. Click **Sources** and then click **+ New source**. +2. On the Set up the source page, select **Sharetribe** from the Source type dropdown. +3. Enter a name for your new source. +4. For **Client Id**, enter your client_id obtained in the previous step. +5. For **Client Secret**, enter your client_secret obtained in the previous step. +6. For **Start Date**, enter a start date from where you would like to sync the records. +7. Click **Set up source**. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `client_id` | `string` | Client ID. | | +| `client_secret` | `string` | Client secret. | | +| `oauth_access_token` | `string` | Access token. The current access token. This field might be overridden by the connector based on the token refresh endpoint response. | | +| `oauth_token_expiry_date` | `string` | Token expiry date. The date the current access token expires in. This field might be overridden by the connector based on the token refresh endpoint response. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| users | id | Default pagination | ✅ | ✅ | +| marketplace | id | No pagination | ✅ | ❌ | +| listings | id | Default pagination | ✅ | ✅ | +| transactions | id | Default pagination | ✅ | ✅ | +| events | id | Default pagination | ✅ | ✅ | +| bookings | id | Default pagination | ✅ | ✅ | +| messages | id | Default pagination | ✅ | ✅ | +| reviews | id | Default pagination | ✅ | ✅ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-03 | | Initial release by [@aazam-gh](https://github.com/aazam-gh) via Connector Builder | + +
From 051a789262c15828716202def0497e9782fb6643 Mon Sep 17 00:00:00 2001 From: Aazam Thakur <59562284+aazam-gh@users.noreply.github.com> Date: Wed, 9 Oct 2024 23:24:31 +0530 Subject: [PATCH 204/379] source-campaign-monitor contribution from aazam-gh (#46512) --- .../source-campaign-monitor/README.md | 39 + .../acceptance-test-config.yml | 17 + .../source-campaign-monitor/icon.svg | 1 + .../source-campaign-monitor/manifest.yaml | 919 ++++++++++++++++++ .../source-campaign-monitor/metadata.yaml | 35 + docs/integrations/sources/campaign-monitor.md | 64 ++ 6 files changed, 1075 insertions(+) create mode 100644 airbyte-integrations/connectors/source-campaign-monitor/README.md create mode 100644 airbyte-integrations/connectors/source-campaign-monitor/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-campaign-monitor/icon.svg create mode 100644 airbyte-integrations/connectors/source-campaign-monitor/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-campaign-monitor/metadata.yaml create mode 100644 docs/integrations/sources/campaign-monitor.md diff --git a/airbyte-integrations/connectors/source-campaign-monitor/README.md b/airbyte-integrations/connectors/source-campaign-monitor/README.md new file mode 100644 index 0000000000000..2864828066590 --- /dev/null +++ b/airbyte-integrations/connectors/source-campaign-monitor/README.md @@ -0,0 +1,39 @@ +# Campaign Monitor +This directory contains the manifest-only connector for `source-campaign-monitor`. + +This is the setup guide for the Campaign Monitor source. + +Campaign Monitor is an email marketing and services platform https://www.campaignmonitor.com/ +This connector ingests a variety of endpoints from the Campaign Monitor API. +In order to use the API, you must first create an account. You can generate your API key in the account settings. +https://www.campaignmonitor.com/api/v3-3/getting-started/ + + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-campaign-monitor:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-campaign-monitor build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-campaign-monitor test +``` + diff --git a/airbyte-integrations/connectors/source-campaign-monitor/acceptance-test-config.yml b/airbyte-integrations/connectors/source-campaign-monitor/acceptance-test-config.yml new file mode 100644 index 0000000000000..b9c9f948bf453 --- /dev/null +++ b/airbyte-integrations/connectors/source-campaign-monitor/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-campaign-monitor:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-campaign-monitor/icon.svg b/airbyte-integrations/connectors/source-campaign-monitor/icon.svg new file mode 100644 index 0000000000000..407992d26e81b --- /dev/null +++ b/airbyte-integrations/connectors/source-campaign-monitor/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-campaign-monitor/manifest.yaml b/airbyte-integrations/connectors/source-campaign-monitor/manifest.yaml new file mode 100644 index 0000000000000..8bd68ca48a31d --- /dev/null +++ b/airbyte-integrations/connectors/source-campaign-monitor/manifest.yaml @@ -0,0 +1,919 @@ +version: 5.10.3 + +type: DeclarativeSource + +description: > + This is the setup guide for the Campaign Monitor source. + + + Campaign Monitor is an email marketing and services platform + https://www.campaignmonitor.com/ + + This connector ingests a variety of endpoints from the Campaign Monitor API. + + In order to use the API, you must first create an account. You can generate + your API key in the account settings. + + https://www.campaignmonitor.com/api/v3-3/getting-started/ + +check: + type: CheckStream + stream_names: + - clients + +definitions: + streams: + clients: + type: DeclarativeStream + name: clients + primary_key: + - ClientID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/clients" + admins: + type: DeclarativeStream + name: admins + primary_key: + - EmailAddress + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: admins.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/admins" + client_details: + type: DeclarativeStream + name: client_details + primary_key: + - ClientID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + transformations: + - type: AddFields + fields: + - path: + - ClientID + value: "{{ record['BasicDetails']['ClientID'] }}" + - type: RemoveFields + field_pointers: + - - BasicDetails + - ClientID + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/client_details" + segments: + type: DeclarativeStream + name: segments + primary_key: + - SegmentID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/segments.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/segments" + templates: + type: DeclarativeStream + name: templates + primary_key: + - TemplateID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/templates.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/templates" + people: + type: DeclarativeStream + name: people + primary_key: + - EmailAddress + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/people.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/people" + tags: + type: DeclarativeStream + name: tags + primary_key: + - Name + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/tags.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/tags" + subscriber_lists: + type: DeclarativeStream + name: subscriber_lists + primary_key: + - ListID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/lists.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/subscriber_lists" + suppression_lists: + type: DeclarativeStream + name: suppression_lists + primary_key: + - EmailAddress + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/suppressionlist.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - Results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: pagesize + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 1000 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/suppression_lists" + sent_campaigns: + type: DeclarativeStream + name: sent_campaigns + primary_key: + - CampaignID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/campaigns.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - Results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: pagesize + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 1000 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: SentDate + cursor_datetime_formats: + - "%Y-%m-%d %H:%M:%S" + datetime_format: "%Y-%m-%d %H:%M:%S" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config['start_date'] }}" + datetime_format: "%Y-%m-%d" + start_time_option: + type: RequestOption + field_name: sentFromDate + inject_into: request_parameter + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/sent_campaigns" + draft_campaigns: + type: DeclarativeStream + name: draft_campaigns + primary_key: + - CampaignID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/drafts.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/draft_campaigns" + scheduled_campaigns: + type: DeclarativeStream + name: scheduled_campaigns + primary_key: + - CampaignID + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: clients/{{ stream_partition.client }}/scheduled.json + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: ClientID + partition_field: client + stream: + $ref: "#/definitions/streams/clients" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/scheduled_campaigns" + base_requester: + type: HttpRequester + url_base: https://api.createsend.com/api/v3.3/ + authenticator: + type: BasicHttpAuthenticator + password: "{{ config[\"password\"] }}" + username: "{{ config[\"username\"] }}" + +streams: + - $ref: "#/definitions/streams/clients" + - $ref: "#/definitions/streams/admins" + - $ref: "#/definitions/streams/client_details" + - $ref: "#/definitions/streams/segments" + - $ref: "#/definitions/streams/templates" + - $ref: "#/definitions/streams/people" + - $ref: "#/definitions/streams/tags" + - $ref: "#/definitions/streams/subscriber_lists" + - $ref: "#/definitions/streams/suppression_lists" + - $ref: "#/definitions/streams/sent_campaigns" + - $ref: "#/definitions/streams/draft_campaigns" + - $ref: "#/definitions/streams/scheduled_campaigns" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - username + properties: + username: + type: string + order: 0 + title: Username + password: + type: string + order: 1 + title: Password + always_show: true + airbyte_secret: true + start_date: + type: string + description: Date from when the sync should start + order: 2 + title: start_date + additionalProperties: true + +metadata: + autoImportSchema: + clients: true + admins: true + client_details: true + segments: true + templates: true + people: true + tags: true + subscriber_lists: true + suppression_lists: true + sent_campaigns: true + draft_campaigns: true + scheduled_campaigns: true + testedStreams: + clients: + hasRecords: true + streamHash: 94dac85b511a5ac97e21301d8e5b1058fe85693f + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + admins: + hasRecords: true + streamHash: 98d12e6061d4a1dae696088e7363d642f38a2b9d + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + client_details: + streamHash: 3cd55a694d57629f4b8f3e20e77abf609542652b + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + segments: + hasRecords: true + streamHash: 37115d05f4739801cae156adc01caa844b56ccd9 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + templates: + hasRecords: true + streamHash: b5bde153fcd637ffef8ca78caf79d67a59f8227d + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + people: + hasRecords: true + streamHash: 989c65aaee1a276464d92d9ed36db9510372277a + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + tags: + hasRecords: true + streamHash: ac01a61c7ea13a604f2c0ce1e0482a298d9c432e + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + subscriber_lists: + hasRecords: true + streamHash: 290d9668664152c199172a5febcea3ade8ac48d3 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + suppression_lists: + hasRecords: true + streamHash: 473290834046dec6ec6a9346658b1edb92a87c51 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + sent_campaigns: + hasRecords: true + streamHash: 35ca7056cd3848b286e4c9e2a2e26f56cc79480f + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + draft_campaigns: + hasRecords: true + streamHash: a98c8a83835e3f9ea6b02564ea790985683755fe + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + scheduled_campaigns: + streamHash: 2cf08000013f8b0c3df0942b9e01fbd16fdd96ca + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: {} + +schemas: + clients: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + ClientID: + type: string + Name: + type: + - string + - "null" + required: + - ClientID + admins: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + EmailAddress: + type: string + Name: + type: + - string + - "null" + Status: + type: + - string + - "null" + required: + - EmailAddress + client_details: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + ApiKey: + type: + - string + - "null" + BasicDetails: + type: + - object + - "null" + properties: + CompanyName: + type: + - string + - "null" + ContactName: + type: + - string + - "null" + Country: + type: + - string + - "null" + EmailAddress: + type: + - string + - "null" + TimeZone: + type: + - string + - "null" + BillingDetails: + type: + - object + - "null" + properties: + BaseDeliveryRate: + type: + - number + - "null" + BaseDesignSpamTestRate: + type: + - number + - "null" + BaseRatePerRecipient: + type: + - number + - "null" + CanPurchaseCredits: + type: + - boolean + - "null" + ClientPays: + type: + - boolean + - "null" + Credits: + type: + - number + - "null" + Currency: + type: + - string + - "null" + MarkupOnDelivery: + type: + - number + - "null" + MarkupOnDesignSpamTest: + type: + - number + - "null" + MarkupPerRecipient: + type: + - number + - "null" + ClientID: + type: string + required: + - ClientID + segments: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + ListID: + type: + - string + - "null" + SegmentID: + type: string + Title: + type: + - string + - "null" + required: + - SegmentID + templates: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + Name: + type: + - string + - "null" + PreviewURL: + type: + - string + - "null" + ScreenshotURL: + type: + - string + - "null" + TemplateID: + type: string + required: + - TemplateID + people: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + AccessLevel: + type: + - number + - "null" + EmailAddress: + type: string + Name: + type: + - string + - "null" + Status: + type: + - string + - "null" + required: + - EmailAddress + tags: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + Name: + type: string + NumberOfCampaigns: + type: + - number + - "null" + required: + - Name + subscriber_lists: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + ListID: + type: string + Name: + type: + - string + - "null" + required: + - ListID + suppression_lists: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + Date: + type: + - string + - "null" + EmailAddress: + type: string + State: + type: + - string + - "null" + SuppressionReason: + type: + - string + - "null" + required: + - EmailAddress + sent_campaigns: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + CampaignID: + type: string + FromEmail: + type: + - string + - "null" + FromName: + type: + - string + - "null" + Name: + type: + - string + - "null" + ReplyTo: + type: + - string + - "null" + SentDate: + type: string + Subject: + type: + - string + - "null" + Tags: + type: + - array + - "null" + TotalRecipients: + type: + - number + - "null" + WebVersionTextURL: + type: + - string + - "null" + WebVersionURL: + type: + - string + - "null" + required: + - CampaignID + - SentDate + draft_campaigns: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + CampaignID: + type: string + DateCreated: + type: + - string + - "null" + FromEmail: + type: + - string + - "null" + FromName: + type: + - string + - "null" + Name: + type: + - string + - "null" + PreviewTextURL: + type: + - string + - "null" + PreviewURL: + type: + - string + - "null" + ReplyTo: + type: + - string + - "null" + Subject: + type: + - string + - "null" + Tags: + type: + - array + - "null" + items: + type: + - string + - "null" + required: + - CampaignID + scheduled_campaigns: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + CampaignID: + type: string + DateCreated: + type: + - string + - "null" + DateScheduled: + type: + - string + - "null" + FromEmail: + type: + - string + - "null" + FromName: + type: + - string + - "null" + Name: + type: + - string + - "null" + PreviewTextURL: + type: + - string + - "null" + PreviewURL: + type: + - string + - "null" + ReplyTo: + type: + - string + - "null" + ScheduledTimeZone: + type: + - string + - "null" + Subject: + type: + - string + - "null" + Tags: + type: + - array + - "null" + required: + - CampaignID diff --git a/airbyte-integrations/connectors/source-campaign-monitor/metadata.yaml b/airbyte-integrations/connectors/source-campaign-monitor/metadata.yaml new file mode 100644 index 0000000000000..274c11c36fce9 --- /dev/null +++ b/airbyte-integrations/connectors/source-campaign-monitor/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.createsend.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-campaign-monitor + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: 9d350ec7-2860-4106-a331-7d9403dd9a02 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-campaign-monitor + githubIssueLabel: source-campaign-monitor + icon: icon.svg + license: MIT + name: Campaign Monitor + releaseDate: 2024-10-05 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/campaign-monitor + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/campaign-monitor.md b/docs/integrations/sources/campaign-monitor.md new file mode 100644 index 0000000000000..293adc223749d --- /dev/null +++ b/docs/integrations/sources/campaign-monitor.md @@ -0,0 +1,64 @@ +# Campaign Monitor + +This is the setup for the Campaign Monitor source which ingests data from the campaign monitor api. +The different types of `campaign` endpoints are available in this source. + +## Prerequisites + +A username and password associated with your Campaign Monitor account is required for authentication. +You can get your API key from the Account Settings page when logged into your Campaign Monitor account. +Enter the API key in the username field and enter any value in the password field https://www.campaignmonitor.com/api/v3-3/getting-started/ + +You can specify a `start_date` for replicating data from the beginning of that date. + +## Set up the Adjust source connector + +1. Click **Sources** and then click **+ New source**. +2. On the Set up the source page, select **Campaign Monitor** from the Source type dropdown. +3. Enter a name for your new source. +4. For **username**, enter your API key obtained in the previous step. +5. For **password**, enter your any dummy value. +6. For **start_date**, enter a date in YYYY-MM-DD format (UTC timezone is assumed). Data starting from this date will be replicated. +8. Click **Set up source**. + +## Supported sync modes + +The source connector supports the following [sync modes](https://docs.airbyte.com/cloud/core-concepts#connection-sync-modes): + +- Full Refresh +- Incremental + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `username` | `string` | Username. | | +| `password` | `string` | Password. | | +| `start_date` | `string` | start_date. Date from when the sync should start | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| clients | ClientID | No pagination | ✅ | ❌ | +| admins | EmailAddress | No pagination | ✅ | ❌ | +| client_details | ClientID | No pagination | ✅ | ❌ | +| segments | SegmentID | No pagination | ✅ | ❌ | +| templates | TemplateID | No pagination | ✅ | ❌ | +| people | EmailAddress | No pagination | ✅ | ❌ | +| tags | Name | No pagination | ✅ | ❌ | +| subscriber_lists | ListID | No pagination | ✅ | ❌ | +| suppression_lists | EmailAddress | DefaultPaginator | ✅ | ❌ | +| sent_campaigns | CampaignID | DefaultPaginator | ✅ | ✅ | +| draft_campaigns | CampaignID | No pagination | ✅ | ❌ | +| scheduled_campaigns | CampaignID | No pagination | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-05 | | Initial release by [@aazam-gh](https://github.com/aazam-gh) via Connector Builder | + +
From 1b49022b66c863269bacedab1d555a70037dd182 Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants <36314070+artem1205@users.noreply.github.com> Date: Wed, 9 Oct 2024 19:57:48 +0200 Subject: [PATCH 205/379] ref(source-shopify): raise exception on missing stream (#46578) Signed-off-by: Artem Inzhyyants --- .../connectors/source-shopify/metadata.yaml | 2 +- .../connectors/source-shopify/poetry.lock | 247 +++++++++--------- .../connectors/source-shopify/pyproject.toml | 2 +- .../source-shopify/source_shopify/source.py | 4 - docs/integrations/sources/shopify.md | 161 ++++++------ 5 files changed, 207 insertions(+), 209 deletions(-) diff --git a/airbyte-integrations/connectors/source-shopify/metadata.yaml b/airbyte-integrations/connectors/source-shopify/metadata.yaml index 7494cbc76787d..ba28463d28313 100644 --- a/airbyte-integrations/connectors/source-shopify/metadata.yaml +++ b/airbyte-integrations/connectors/source-shopify/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 9da77001-af33-4bcd-be46-6252bf9342b9 - dockerImageTag: 2.5.4 + dockerImageTag: 2.5.5 dockerRepository: airbyte/source-shopify documentationUrl: https://docs.airbyte.com/integrations/sources/shopify erdUrl: https://dbdocs.io/airbyteio/source-shopify?view=relationships diff --git a/airbyte-integrations/connectors/source-shopify/poetry.lock b/airbyte-integrations/connectors/source-shopify/poetry.lock index 0316586e1a09b..4bff0fa1a962e 100644 --- a/airbyte-integrations/connectors/source-shopify/poetry.lock +++ b/airbyte-integrations/connectors/source-shopify/poetry.lock @@ -1,14 +1,14 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "5.10.2" +version = "5.11.1" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.10.2-py3-none-any.whl", hash = "sha256:f12b16b03da68cd4b28094b48a2bbf8e6b9c1e54da048cdea9a478a5831f4ef8"}, - {file = "airbyte_cdk-5.10.2.tar.gz", hash = "sha256:1037bbac47733a8b402104acd1425a8f91a15328e870fb28600133a3221df373"}, + {file = "airbyte_cdk-5.11.1-py3-none-any.whl", hash = "sha256:efddee85179128cb7d65b11a9a4aba353ea5b01daaa56fc3069d12ce156d2857"}, + {file = "airbyte_cdk-5.11.1.tar.gz", hash = "sha256:0cc1cdc1d50909bbb2791a9c389c0f3db32474502addf65eb745d87af7d36fd9"}, ] [package.dependencies] @@ -747,13 +747,13 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.131" +version = "0.1.132" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, - {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, + {file = "langsmith-0.1.132-py3-none-any.whl", hash = "sha256:2320894203675c1c292b818cbecf68b69e47a9f7814d4e950237d1faaafd5dee"}, + {file = "langsmith-0.1.132.tar.gz", hash = "sha256:007b8fac469138abdba89db931900a26c5d316640e27ff4660d28c92a766aae1"}, ] [package.dependencies] @@ -765,71 +765,72 @@ requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "markupsafe" -version = "2.1.5" +version = "3.0.0" description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:380faf314c3c84c1682ca672e6280c6c59e92d0bc13dc71758ffa2de3cd4e252"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1ee9790be6f62121c4c58bbced387b0965ab7bffeecb4e17cc42ef290784e363"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ddf5cb8e9c00d9bf8b0c75949fb3ff9ea2096ba531693e2e87336d197fdb908"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b36473a2d3e882d1873ea906ce54408b9588dc2c65989664e6e7f5a2de353d7"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dba0f83119b9514bc37272ad012f0cc03f0805cc6a2bea7244e19250ac8ff29f"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:409535e0521c4630d5b5a1bf284e9d3c76d2fc2f153ebb12cf3827797798cc99"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64a7c7856c3a409011139b17d137c2924df4318dab91ee0530800819617c4381"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4deea1d9169578917d1f35cdb581bc7bab56a7e8c5be2633bd1b9549c3c22a01"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-win32.whl", hash = "sha256:3cd0bba31d484fe9b9d77698ddb67c978704603dc10cdc905512af308cfcca6b"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:4ca04c60006867610a06575b46941ae616b19da0adc85b9f8f3d9cbd7a3da385"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e64b390a306f9e849ee809f92af6a52cda41741c914358e0e9f8499d03741526"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c524203207f5b569df06c96dafdc337228921ee8c3cc5f6e891d024c6595352"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c409691696bec2b5e5c9efd9593c99025bf2f317380bf0d993ee0213516d908a"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64f7d04410be600aa5ec0626d73d43e68a51c86500ce12917e10fd013e258df5"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:105ada43a61af22acb8774514c51900dc820c481cc5ba53f17c09d294d9c07ca"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a5fd5500d4e4f7cc88d8c0f2e45126c4307ed31e08f8ec521474f2fd99d35ac3"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:25396abd52b16900932e05b7104bcdc640a4d96c914f39c3b984e5a17b01fba0"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3efde9a8c56c3b6e5f3fa4baea828f8184970c7c78480fedb620d804b1c31e5c"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-win32.whl", hash = "sha256:12ddac720b8965332d36196f6f83477c6351ba6a25d4aff91e30708c729350d7"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:658fdf6022740896c403d45148bf0c36978c6b48c9ef8b1f8d0c7a11b6cdea86"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d261ec38b8a99a39b62e0119ed47fe3b62f7691c500bc1e815265adc016438c1"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e363440c8534bf2f2ef1b8fdc02037eb5fff8fce2a558519b22d6a3a38b3ec5e"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7835de4c56066e096407a1852e5561f6033786dd987fa90dc384e45b9bd21295"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6cc46a27d904c9be5732029769acf4b0af69345172ed1ef6d4db0c023ff603b"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0411641d31aa6f7f0cc13f0f18b63b8dc08da5f3a7505972a42ab059f479ba3"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b2a7afd24d408b907672015555bc10be2382e6c5f62a488e2d452da670bbd389"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c8ab7efeff1884c5da8e18f743b667215300e09043820d11723718de0b7db934"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8219e2207f6c188d15614ea043636c2b36d2d79bf853639c124a179412325a13"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-win32.whl", hash = "sha256:59420b5a9a5d3fee483a32adb56d7369ae0d630798da056001be1e9f674f3aa6"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:7ed789d0f7f11fcf118cf0acb378743dfdd4215d7f7d18837c88171405c9a452"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:27d6a73682b99568916c54a4bfced40e7d871ba685b580ea04bbd2e405dfd4c5"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:494a64efc535e147fcc713dba58eecfce3a79f1e93ebe81995b387f5cd9bc2e1"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5243044a927e8a6bb28517838662a019cd7f73d7f106bbb37ab5e7fa8451a92"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63dae84964a9a3d2610808cee038f435d9a111620c37ccf872c2fcaeca6865b3"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcbee57fedc9b2182c54ffc1c5eed316c3da8bbfeda8009e1b5d7220199d15da"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f846fd7c241e5bd4161e2a483663eb66e4d8e12130fcdc052f310f388f1d61c6"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:678fbceb202382aae42c1f0cd9f56b776bc20a58ae5b553ee1fe6b802983a1d6"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bd9b8e458e2bab52f9ad3ab5dc8b689a3c84b12b2a2f64cd9a0dfe209fb6b42f"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-win32.whl", hash = "sha256:1fd02f47596e00a372f5b4af2b4c45f528bade65c66dfcbc6e1ea1bfda758e98"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:b94bec9eda10111ec7102ef909eca4f3c2df979643924bfe58375f560713a7d1"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:509c424069dd037d078925b6815fc56b7271f3aaec471e55e6fa513b0a80d2aa"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81be2c0084d8c69e97e3c5d73ce9e2a6e523556f2a19c4e195c09d499be2f808"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b43ac1eb9f91e0c14aac1d2ef0f76bc7b9ceea51de47536f61268191adf52ad7"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b231255770723f1e125d63c14269bcd8b8136ecfb620b9a18c0297e046d0736"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c182d45600556917f811aa019d834a89fe4b6f6255da2fd0bdcf80e970f95918"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f91c90f8f3bf436f81c12eeb4d79f9ddd263c71125e6ad71341906832a34386"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a7171d2b869e9be238ea318c196baf58fbf272704e9c1cd4be8c380eea963342"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cb244adf2499aa37d5dc43431990c7f0b632d841af66a51d22bd89c437b60264"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-win32.whl", hash = "sha256:96e3ed550600185d34429477f1176cedea8293fa40e47fe37a05751bcb64c997"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:1d151b9cf3307e259b749125a5a08c030ba15a8f1d567ca5bfb0e92f35e761f5"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:23efb2be7221105c8eb0e905433414d2439cb0a8c5d5ca081c1c72acef0f5613"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81ee9c967956b9ea39b3a5270b7cb1740928d205b0dc72629164ce621b4debf9"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5509a8373fed30b978557890a226c3d30569746c565b9daba69df80c160365a5"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1c13c6c908811f867a8e9e66efb2d6c03d1cdd83e92788fe97f693c457dc44f"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7e63d1977d3806ce0a1a3e0099b089f61abdede5238ca6a3f3bf8877b46d095"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d2c099be5274847d606574234e494f23a359e829ba337ea9037c3a72b0851942"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e042ccf8fe5bf8b6a4b38b3f7d618eb10ea20402b0c9f4add9293408de447974"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:98fb3a2bf525ad66db96745707b93ba0f78928b7a1cb2f1cb4b143bc7e2ba3b3"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-win32.whl", hash = "sha256:a80c6740e1bfbe50cea7cbf74f48823bb57bd59d914ee22ff8a81963b08e62d2"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:5d207ff5cceef77796f8aacd44263266248cf1fbc601441524d7835613f8abec"}, + {file = "markupsafe-3.0.0.tar.gz", hash = "sha256:03ff62dea2fef3eadf2f1853bc6332bcb0458d9608b11dfb1cd5aeda1c178ea6"}, ] [[package]] @@ -859,64 +860,64 @@ twitter = ["twython"] [[package]] name = "numpy" -version = "2.1.1" +version = "2.1.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, - {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, - {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, - {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, - {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, - {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, - {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, - {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, - {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, - {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, - {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, - {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, - {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, - {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, - {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, - {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, - {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, - {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, - {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, - {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, - {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, - {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, - {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, - {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, - {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, - {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, - {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, - {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, - {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, - {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30d53720b726ec36a7f88dc873f0eec8447fbc93d93a8f079dfac2629598d6ee"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8d3ca0a72dd8846eb6f7dfe8f19088060fcb76931ed592d29128e0219652884"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:fc44e3c68ff00fd991b59092a54350e6e4911152682b4782f68070985aa9e648"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7c1c60328bd964b53f8b835df69ae8198659e2b9302ff9ebb7de4e5a5994db3d"}, + {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cdb606a7478f9ad91c6283e238544451e3a95f30fb5467fbf715964341a8a86"}, + {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d666cb72687559689e9906197e3bec7b736764df6a2e58ee265e360663e9baf7"}, + {file = "numpy-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c6eef7a2dbd0abfb0d9eaf78b73017dbfd0b54051102ff4e6a7b2980d5ac1a03"}, + {file = "numpy-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:12edb90831ff481f7ef5f6bc6431a9d74dc0e5ff401559a71e5e4611d4f2d466"}, + {file = "numpy-2.1.2-cp310-cp310-win32.whl", hash = "sha256:a65acfdb9c6ebb8368490dbafe83c03c7e277b37e6857f0caeadbbc56e12f4fb"}, + {file = "numpy-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:860ec6e63e2c5c2ee5e9121808145c7bf86c96cca9ad396c0bd3e0f2798ccbe2"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b42a1a511c81cc78cbc4539675713bbcf9d9c3913386243ceff0e9429ca892fe"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:faa88bc527d0f097abdc2c663cddf37c05a1c2f113716601555249805cf573f1"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c82af4b2ddd2ee72d1fc0c6695048d457e00b3582ccde72d8a1c991b808bb20f"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:13602b3174432a35b16c4cfb5de9a12d229727c3dd47a6ce35111f2ebdf66ff4"}, + {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ebec5fd716c5a5b3d8dfcc439be82a8407b7b24b230d0ad28a81b61c2f4659a"}, + {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2b49c3c0804e8ecb05d59af8386ec2f74877f7ca8fd9c1e00be2672e4d399b1"}, + {file = "numpy-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cbba4b30bf31ddbe97f1c7205ef976909a93a66bb1583e983adbd155ba72ac2"}, + {file = "numpy-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8e00ea6fc82e8a804433d3e9cedaa1051a1422cb6e443011590c14d2dea59146"}, + {file = "numpy-2.1.2-cp311-cp311-win32.whl", hash = "sha256:5006b13a06e0b38d561fab5ccc37581f23c9511879be7693bd33c7cd15ca227c"}, + {file = "numpy-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:f1eb068ead09f4994dec71c24b2844f1e4e4e013b9629f812f292f04bd1510d9"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7bf0a4f9f15b32b5ba53147369e94296f5fffb783db5aacc1be15b4bf72f43b"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b1d0fcae4f0949f215d4632be684a539859b295e2d0cb14f78ec231915d644db"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f751ed0a2f250541e19dfca9f1eafa31a392c71c832b6bb9e113b10d050cb0f1"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:bd33f82e95ba7ad632bc57837ee99dba3d7e006536200c4e9124089e1bf42426"}, + {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8cde4f11f0a975d1fd59373b32e2f5a562ade7cde4f85b7137f3de8fbb29a0"}, + {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d95f286b8244b3649b477ac066c6906fbb2905f8ac19b170e2175d3d799f4df"}, + {file = "numpy-2.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ab4754d432e3ac42d33a269c8567413bdb541689b02d93788af4131018cbf366"}, + {file = "numpy-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e585c8ae871fd38ac50598f4763d73ec5497b0de9a0ab4ef5b69f01c6a046142"}, + {file = "numpy-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9c6c754df29ce6a89ed23afb25550d1c2d5fdb9901d9c67a16e0b16eaf7e2550"}, + {file = "numpy-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:456e3b11cb79ac9946c822a56346ec80275eaf2950314b249b512896c0d2505e"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a84498e0d0a1174f2b3ed769b67b656aa5460c92c9554039e11f20a05650f00d"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4d6ec0d4222e8ffdab1744da2560f07856421b367928026fb540e1945f2eeeaf"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:259ec80d54999cc34cd1eb8ded513cb053c3bf4829152a2e00de2371bd406f5e"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:675c741d4739af2dc20cd6c6a5c4b7355c728167845e3c6b0e824e4e5d36a6c3"}, + {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b2d4e667895cc55e3ff2b56077e4c8a5604361fc21a042845ea3ad67465aa8"}, + {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43cca367bf94a14aca50b89e9bc2061683116cfe864e56740e083392f533ce7a"}, + {file = "numpy-2.1.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:76322dcdb16fccf2ac56f99048af32259dcc488d9b7e25b51e5eca5147a3fb98"}, + {file = "numpy-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:32e16a03138cabe0cb28e1007ee82264296ac0983714094380b408097a418cfe"}, + {file = "numpy-2.1.2-cp313-cp313-win32.whl", hash = "sha256:242b39d00e4944431a3cd2db2f5377e15b5785920421993770cddb89992c3f3a"}, + {file = "numpy-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:f2ded8d9b6f68cc26f8425eda5d3877b47343e68ca23d0d0846f4d312ecaa445"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ffef621c14ebb0188a8633348504a35c13680d6da93ab5cb86f4e54b7e922b5"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ad369ed238b1959dfbade9018a740fb9392c5ac4f9b5173f420bd4f37ba1f7a0"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d82075752f40c0ddf57e6e02673a17f6cb0f8eb3f587f63ca1eaab5594da5b17"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:1600068c262af1ca9580a527d43dc9d959b0b1d8e56f8a05d830eea39b7c8af6"}, + {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a26ae94658d3ba3781d5e103ac07a876b3e9b29db53f68ed7df432fd033358a8"}, + {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13311c2db4c5f7609b462bc0f43d3c465424d25c626d95040f073e30f7570e35"}, + {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:2abbf905a0b568706391ec6fa15161fad0fb5d8b68d73c461b3c1bab6064dd62"}, + {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ef444c57d664d35cac4e18c298c47d7b504c66b17c2ea91312e979fcfbdfb08a"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bdd407c40483463898b84490770199d5714dcc9dd9b792f6c6caccc523c00952"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:da65fb46d4cbb75cb417cddf6ba5e7582eb7bb0b47db4b99c9fe5787ce5d91f5"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c193d0b0238638e6fc5f10f1b074a6993cb13b0b431f64079a509d63d3aa8b7"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a7d80b2e904faa63068ead63107189164ca443b42dd1930299e0d1cb041cec2e"}, + {file = "numpy-2.1.2.tar.gz", hash = "sha256:13532a088217fa624c99b843eeb54640de23b3414b14aa66d023805eb731066c"}, ] [[package]] diff --git a/airbyte-integrations/connectors/source-shopify/pyproject.toml b/airbyte-integrations/connectors/source-shopify/pyproject.toml index 9062a5c4e184a..8e9f3121270c5 100644 --- a/airbyte-integrations/connectors/source-shopify/pyproject.toml +++ b/airbyte-integrations/connectors/source-shopify/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "2.5.4" +version = "2.5.5" name = "source-shopify" description = "Source CDK implementation for Shopify." authors = [ "Airbyte ",] diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/source.py b/airbyte-integrations/connectors/source-shopify/source_shopify/source.py index 15a94437b5370..3d420b3318919 100644 --- a/airbyte-integrations/connectors/source-shopify/source_shopify/source.py +++ b/airbyte-integrations/connectors/source-shopify/source_shopify/source.py @@ -131,10 +131,6 @@ class SourceShopify(AbstractSource): def continue_sync_on_stream_failure(self) -> bool: return True - @property - def raise_exception_on_missing_stream(self) -> bool: - return False - @staticmethod def get_shop_name(config) -> str: split_pattern = ".myshopify.com" diff --git a/docs/integrations/sources/shopify.md b/docs/integrations/sources/shopify.md index c079e5f4ad549..5d7f8613a0a2a 100644 --- a/docs/integrations/sources/shopify.md +++ b/docs/integrations/sources/shopify.md @@ -247,86 +247,87 @@ For all `Shopify GraphQL BULK` api requests these limitations are applied: https | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 2.5.4 | 2024-10-05 | [45759](https://github.com/airbytehq/airbyte/pull/45759) | Update dependencies | -| 2.5.3 | 2024-09-27 | [46095](https://github.com/airbytehq/airbyte/pull/46095) | Fixed duplicates for `Product Images`, `Metafield Product Images` and `Metafield Products` streams for Incremental syncs | -| 2.5.2 | 2024-09-17 | [45633](https://github.com/airbytehq/airbyte/pull/45633) | Adds `read_inventory` as a required scope for `product_variants` stream | -| 2.5.1 | 2024-09-14 | [45255](https://github.com/airbytehq/airbyte/pull/45255) | Update dependencies | -| 2.5.0 | 2024-09-06 | [45190](https://github.com/airbytehq/airbyte/pull/45190) | Migrate to CDK v5 | -| 2.4.24 | 2024-09-03 | [45116](https://github.com/airbytehq/airbyte/pull/45116) | Have message and description be nullable for custom_collections deleted events | -| 2.4.23 | 2024-08-31 | [44971](https://github.com/airbytehq/airbyte/pull/44971) | Update dependencies | -| 2.4.22 | 2024-08-24 | [44723](https://github.com/airbytehq/airbyte/pull/44723) | Update dependencies | -| 2.4.21 | 2024-08-17 | [44318](https://github.com/airbytehq/airbyte/pull/44318) | Update dependencies | -| 2.4.20 | 2024-08-12 | [43834](https://github.com/airbytehq/airbyte/pull/43834) | Update dependencies | -| 2.4.19 | 2024-08-10 | [43194](https://github.com/airbytehq/airbyte/pull/43194) | Update dependencies | -| 2.4.18 | 2024-08-06 | [43326](https://github.com/airbytehq/airbyte/pull/43326) | Added missing `type` type for `customer_journey_summary` field for `Customer Journey Summary` stream schema | -| 2.4.17 | 2024-08-02 | [42973](https://github.com/airbytehq/airbyte/pull/42973) | Fixed `FAILED` Job handling for `no-checkpointing` BULK Streams, fixed STATE collision for REST Streams with `Deleted Events` | -| 2.4.16 | 2024-07-21 | [42095](https://github.com/airbytehq/airbyte/pull/42095) | Added the `Checkpointing` for the `BULK` streams, fixed the `store` redirection | -| 2.4.15 | 2024-07-27 | [42806](https://github.com/airbytehq/airbyte/pull/42806) | Update dependencies | -| 2.4.14 | 2024-07-20 | [42150](https://github.com/airbytehq/airbyte/pull/42150) | Update dependencies | -| 2.4.13 | 2024-07-13 | [41809](https://github.com/airbytehq/airbyte/pull/41809) | Update dependencies | -| 2.4.12 | 2024-07-10 | [41103](https://github.com/airbytehq/airbyte/pull/41103) | Update dependencies | -| 2.4.11 | 2024-07-09 | [41068](https://github.com/airbytehq/airbyte/pull/41068) | Added `options` field to `Product Variants` stream | -| 2.4.10 | 2024-07-09 | [41042](https://github.com/airbytehq/airbyte/pull/41042) | Use latest `CDK`: 3.0.0 | -| 2.4.9 | 2024-07-06 | [40768](https://github.com/airbytehq/airbyte/pull/40768) | Update dependencies | -| 2.4.8 | 2024-07-03 | [40707](https://github.com/airbytehq/airbyte/pull/40707) | Fixed the bug when `product_images` stream emitted records with no `primary_key` | -| 2.4.7 | 2024-06-27 | [40593](https://github.com/airbytehq/airbyte/pull/40593) | Use latest `CDK` version possible | -| 2.4.6 | 2024-06-26 | [40526](https://github.com/airbytehq/airbyte/pull/40526) | Made `BULK Job termination threshold` limit adjustable from `input configuration`, increased the default value to `1 hour`. | -| 2.4.5 | 2024-06-25 | [40484](https://github.com/airbytehq/airbyte/pull/40484) | Update dependencies | -| 2.4.4 | 2024-06-19 | [39594](https://github.com/airbytehq/airbyte/pull/39594) | Extended the `Discount Codes`, `Fulfillment Orders`, `Inventory Items`, `Inventory Levels`, `Products`, `Product Variants` and `Transactions` stream schemas | -| 2.4.3 | 2024-06-06 | [38084](https://github.com/airbytehq/airbyte/pull/38084) | add resiliency on some transient errors using the HttpClient | -| 2.4.1 | 2024-06-20 | [39651](https://github.com/airbytehq/airbyte/pull/39651) | Update dependencies | -| 2.4.0 | 2024-06-17 | [39527](https://github.com/airbytehq/airbyte/pull/39527) | Added new stream `Order Agreements` | -| 2.3.0 | 2024-06-14 | [39487](https://github.com/airbytehq/airbyte/pull/39487) | Added new stream `Customer Journey Summary` | -| 2.2.3 | 2024-06-06 | [38084](https://github.com/airbytehq/airbyte/pull/38084) | add resiliency on some transient errors using the HttpClient | -| 2.2.2 | 2024-06-04 | [39019](https://github.com/airbytehq/airbyte/pull/39019) | [autopull] Upgrade base image to v1.2.1 | -| 2.2.1 | 2024-05-30 | [38769](https://github.com/airbytehq/airbyte/pull/38769) | Have products stream return all the tags comma separated | -| 2.2.0 | 2024-05-29 | [38746](https://github.com/airbytehq/airbyte/pull/38746) | Updated countries schema | -| 2.1.4 | 2024-05-24 | [38610](https://github.com/airbytehq/airbyte/pull/38610) | Updated the source `API Version` to `2024-04` | -| 2.1.3 | 2024-05-23 | [38464](https://github.com/airbytehq/airbyte/pull/38464) | Added missing fields to `Products` stream | -| 2.1.2 | 2024-05-23 | [38352](https://github.com/airbytehq/airbyte/pull/38352) | Migrated `Order Risks` stream to `GraphQL BULK` | -| 2.1.1 | 2024-05-20 | [38251](https://github.com/airbytehq/airbyte/pull/38251) | Replace AirbyteLogger with logging.Logger | -| 2.1.0 | 2024-05-02 | [37767](https://github.com/airbytehq/airbyte/pull/37767) | Migrated `Products`, `Product Images` and `Product Variants` to `GraphQL BULK` | -| 2.0.8 | 2024-05-02 | [37589](https://github.com/airbytehq/airbyte/pull/37589) | Added retry for known HTTP Errors for BULK streams | -| 2.0.7 | 2024-04-24 | [36660](https://github.com/airbytehq/airbyte/pull/36660) | Schema descriptions | -| 2.0.6 | 2024-04-22 | [37468](https://github.com/airbytehq/airbyte/pull/37468) | Fixed one time retry for `Internal Server Error` for BULK streams | -| 2.0.5 | 2024-04-03 | [36788](https://github.com/airbytehq/airbyte/pull/36788) | Added ability to dynamically adjust the size of the `slice` | -| 2.0.4 | 2024-03-22 | [36355](https://github.com/airbytehq/airbyte/pull/36355) | Update CDK version to ensure Per-Stream Error Messaging and Record Counts In State (features were already there so just upping the version) | -| 2.0.3 | 2024-03-15 | [36170](https://github.com/airbytehq/airbyte/pull/36170) | Fixed the `STATE` messages emittion frequency for the `nested` sub-streams | -| 2.0.2 | 2024-03-12 | [36000](https://github.com/airbytehq/airbyte/pull/36000) | Fix and issue where invalid shop name causes index out of bounds error | -| 2.0.1 | 2024-03-11 | [35952](https://github.com/airbytehq/airbyte/pull/35952) | Fixed the issue when `start date` is missing but the `stream` required it | -| 2.0.0 | 2024-02-12 | [32345](https://github.com/airbytehq/airbyte/pull/32345) | Fixed the issue with `state` causing the `substreams` to skip the records, made `metafield_*`: `collections, customers, draft_orders, locations, orders, product_images, product_variants, products`, and `fulfillment_orders, collections, discount_codes, inventory_levels, inventory_items, transactions_graphql, customer_address` streams to use `BULK Operations` instead of `REST` | -| 1.1.8 | 2024-02-12 | [35166](https://github.com/airbytehq/airbyte/pull/35166) | Manage dependencies with Poetry. | -| 1.1.7 | 2024-01-19 | [33804](https://github.com/airbytehq/airbyte/pull/33804) | Updated documentation with list of all supported streams | -| 1.1.6 | 2024-01-04 | [33414](https://github.com/airbytehq/airbyte/pull/33414) | Prepare for airbyte-lib | -| 1.1.5 | 2023-12-28 | [33827](https://github.com/airbytehq/airbyte/pull/33827) | Fix GraphQL query | -| 1.1.4 | 2023-10-19 | [31599](https://github.com/airbytehq/airbyte/pull/31599) | Base image migration: remove Dockerfile and use the python-connector-base image | -| 1.1.3 | 2023-10-17 | [31500](https://github.com/airbytehq/airbyte/pull/31500) | Fixed the issue caused by the `missing access token` while setup the new source and not yet authenticated | -| 1.1.2 | 2023-10-13 | [31381](https://github.com/airbytehq/airbyte/pull/31381) | Fixed the issue caused by the `state` presence while fetching the `deleted events` with pagination | -| 1.1.1 | 2023-09-18 | [30560](https://github.com/airbytehq/airbyte/pull/30560) | Performance testing - include socat binary in docker image | -| 1.1.0 | 2023-09-07 | [30246](https://github.com/airbytehq/airbyte/pull/30246) | Added ability to fetch `destroyed` records for `Articles, Blogs, CustomCollections, Orders, Pages, PriceRules, Products` | -| 1.0.0 | 2023-08-11 | [29361](https://github.com/airbytehq/airbyte/pull/29361) | Migrate to the `2023-07` Shopify API Version | -| 0.6.2 | 2023-08-09 | [29302](https://github.com/airbytehq/airbyte/pull/29302) | Handle the `Internal Server Error` when entity could be fetched | -| 0.6.1 | 2023-08-08 | [28291](https://github.com/airbytehq/airbyte/pull/28291) | Allow `shop` field to accept `*.myshopify.com` shop names, updated `OAuth Spec` | -| 0.6.0 | 2023-08-02 | [28770](https://github.com/airbytehq/airbyte/pull/28770) | Added `Disputes` stream | -| 0.5.1 | 2023-07-13 | [28700](https://github.com/airbytehq/airbyte/pull/28700) | Improved `error messages` with more user-friendly description, refactored code | -| 0.5.0 | 2023-06-13 | [27732](https://github.com/airbytehq/airbyte/pull/27732) | License Update: Elv2 | -| 0.4.0 | 2023-06-13 | [27083](https://github.com/airbytehq/airbyte/pull/27083) | Added `CustomerSavedSearch`, `CustomerAddress` and `Countries` streams | -| 0.3.4 | 2023-05-10 | [25961](https://github.com/airbytehq/airbyte/pull/25961) | Added validation for `shop` in input configuration (accepts non-url-like inputs) | -| 0.3.3 | 2023-04-12 | [25110](https://github.com/airbytehq/airbyte/pull/25110) | Fixed issue when `cursor_field` is `"None"`, added missing properties to stream schemas, fixed `access_scopes` validation error | -| 0.3.2 | 2023-02-27 | [23473](https://github.com/airbytehq/airbyte/pull/23473) | Fixed OOM / Memory leak issue for Airbyte Cloud | -| 0.3.1 | 2023-01-16 | [21461](https://github.com/airbytehq/airbyte/pull/21461) | Added `discount_applications` to `orders` stream | -| 0.3.0 | 2022-11-16 | [19492](https://github.com/airbytehq/airbyte/pull/19492) | Added support for graphql and add a graphql products stream | -| 0.2.0 | 2022-10-21 | [18298](https://github.com/airbytehq/airbyte/pull/18298) | Updated API version to the `2022-10`, make stream schemas backward cpmpatible | -| 0.1.39 | 2022-10-13 | [17962](https://github.com/airbytehq/airbyte/pull/17962) | Added metafield streams; support for nested list streams | -| 0.1.38 | 2022-10-10 | [17777](https://github.com/airbytehq/airbyte/pull/17777) | Fixed `404` for configured streams, fix missing `cursor` error for old records | -| 0.1.37 | 2022-04-30 | [12500](https://github.com/airbytehq/airbyte/pull/12500) | Improve input configuration copy | -| 0.1.36 | 2022-03-22 | [9850](https://github.com/airbytehq/airbyte/pull/9850) | Added `BalanceTransactions` stream | -| 0.1.35 | 2022-03-07 | [10915](https://github.com/airbytehq/airbyte/pull/10915) | Fixed a bug which caused `full-refresh` syncs of child REST entities configured for `incremental` | -| 0.1.34 | 2022-03-02 | [10794](https://github.com/airbytehq/airbyte/pull/10794) | Minor specification re-order, fixed links in documentation | -| 0.1.33 | 2022-02-17 | [10419](https://github.com/airbytehq/airbyte/pull/10419) | Fixed wrong field type for tax_exemptions for `Abandoned_checkouts` stream | -| 0.1.32 | 2022-02-18 | [10449](https://github.com/airbytehq/airbyte/pull/10449) | Added `tender_transactions` stream | -| 0.1.31 | 2022-02-08 | [10175](https://github.com/airbytehq/airbyte/pull/10175) | Fixed compatibility issues for legacy user config | -| 0.1.30 | 2022-01-24 | [9648](https://github.com/airbytehq/airbyte/pull/9648) | Added permission validation before sync | +| 2.5.5 | 2024-10-05 | [46578](https://github.com/airbytehq/airbyte/pull/46578) | Raise exception on missing stream | +| 2.5.4 | 2024-10-05 | [45759](https://github.com/airbytehq/airbyte/pull/45759) | Update dependencies | +| 2.5.3 | 2024-09-27 | [46095](https://github.com/airbytehq/airbyte/pull/46095) | Fixed duplicates for `Product Images`, `Metafield Product Images` and `Metafield Products` streams for Incremental syncs | +| 2.5.2 | 2024-09-17 | [45633](https://github.com/airbytehq/airbyte/pull/45633) | Adds `read_inventory` as a required scope for `product_variants` stream | +| 2.5.1 | 2024-09-14 | [45255](https://github.com/airbytehq/airbyte/pull/45255) | Update dependencies | +| 2.5.0 | 2024-09-06 | [45190](https://github.com/airbytehq/airbyte/pull/45190) | Migrate to CDK v5 | +| 2.4.24 | 2024-09-03 | [45116](https://github.com/airbytehq/airbyte/pull/45116) | Have message and description be nullable for custom_collections deleted events | +| 2.4.23 | 2024-08-31 | [44971](https://github.com/airbytehq/airbyte/pull/44971) | Update dependencies | +| 2.4.22 | 2024-08-24 | [44723](https://github.com/airbytehq/airbyte/pull/44723) | Update dependencies | +| 2.4.21 | 2024-08-17 | [44318](https://github.com/airbytehq/airbyte/pull/44318) | Update dependencies | +| 2.4.20 | 2024-08-12 | [43834](https://github.com/airbytehq/airbyte/pull/43834) | Update dependencies | +| 2.4.19 | 2024-08-10 | [43194](https://github.com/airbytehq/airbyte/pull/43194) | Update dependencies | +| 2.4.18 | 2024-08-06 | [43326](https://github.com/airbytehq/airbyte/pull/43326) | Added missing `type` type for `customer_journey_summary` field for `Customer Journey Summary` stream schema | +| 2.4.17 | 2024-08-02 | [42973](https://github.com/airbytehq/airbyte/pull/42973) | Fixed `FAILED` Job handling for `no-checkpointing` BULK Streams, fixed STATE collision for REST Streams with `Deleted Events` | +| 2.4.16 | 2024-07-21 | [42095](https://github.com/airbytehq/airbyte/pull/42095) | Added the `Checkpointing` for the `BULK` streams, fixed the `store` redirection | +| 2.4.15 | 2024-07-27 | [42806](https://github.com/airbytehq/airbyte/pull/42806) | Update dependencies | +| 2.4.14 | 2024-07-20 | [42150](https://github.com/airbytehq/airbyte/pull/42150) | Update dependencies | +| 2.4.13 | 2024-07-13 | [41809](https://github.com/airbytehq/airbyte/pull/41809) | Update dependencies | +| 2.4.12 | 2024-07-10 | [41103](https://github.com/airbytehq/airbyte/pull/41103) | Update dependencies | +| 2.4.11 | 2024-07-09 | [41068](https://github.com/airbytehq/airbyte/pull/41068) | Added `options` field to `Product Variants` stream | +| 2.4.10 | 2024-07-09 | [41042](https://github.com/airbytehq/airbyte/pull/41042) | Use latest `CDK`: 3.0.0 | +| 2.4.9 | 2024-07-06 | [40768](https://github.com/airbytehq/airbyte/pull/40768) | Update dependencies | +| 2.4.8 | 2024-07-03 | [40707](https://github.com/airbytehq/airbyte/pull/40707) | Fixed the bug when `product_images` stream emitted records with no `primary_key` | +| 2.4.7 | 2024-06-27 | [40593](https://github.com/airbytehq/airbyte/pull/40593) | Use latest `CDK` version possible | +| 2.4.6 | 2024-06-26 | [40526](https://github.com/airbytehq/airbyte/pull/40526) | Made `BULK Job termination threshold` limit adjustable from `input configuration`, increased the default value to `1 hour`. | +| 2.4.5 | 2024-06-25 | [40484](https://github.com/airbytehq/airbyte/pull/40484) | Update dependencies | +| 2.4.4 | 2024-06-19 | [39594](https://github.com/airbytehq/airbyte/pull/39594) | Extended the `Discount Codes`, `Fulfillment Orders`, `Inventory Items`, `Inventory Levels`, `Products`, `Product Variants` and `Transactions` stream schemas | +| 2.4.3 | 2024-06-06 | [38084](https://github.com/airbytehq/airbyte/pull/38084) | add resiliency on some transient errors using the HttpClient | +| 2.4.1 | 2024-06-20 | [39651](https://github.com/airbytehq/airbyte/pull/39651) | Update dependencies | +| 2.4.0 | 2024-06-17 | [39527](https://github.com/airbytehq/airbyte/pull/39527) | Added new stream `Order Agreements` | +| 2.3.0 | 2024-06-14 | [39487](https://github.com/airbytehq/airbyte/pull/39487) | Added new stream `Customer Journey Summary` | +| 2.2.3 | 2024-06-06 | [38084](https://github.com/airbytehq/airbyte/pull/38084) | add resiliency on some transient errors using the HttpClient | +| 2.2.2 | 2024-06-04 | [39019](https://github.com/airbytehq/airbyte/pull/39019) | [autopull] Upgrade base image to v1.2.1 | +| 2.2.1 | 2024-05-30 | [38769](https://github.com/airbytehq/airbyte/pull/38769) | Have products stream return all the tags comma separated | +| 2.2.0 | 2024-05-29 | [38746](https://github.com/airbytehq/airbyte/pull/38746) | Updated countries schema | +| 2.1.4 | 2024-05-24 | [38610](https://github.com/airbytehq/airbyte/pull/38610) | Updated the source `API Version` to `2024-04` | +| 2.1.3 | 2024-05-23 | [38464](https://github.com/airbytehq/airbyte/pull/38464) | Added missing fields to `Products` stream | +| 2.1.2 | 2024-05-23 | [38352](https://github.com/airbytehq/airbyte/pull/38352) | Migrated `Order Risks` stream to `GraphQL BULK` | +| 2.1.1 | 2024-05-20 | [38251](https://github.com/airbytehq/airbyte/pull/38251) | Replace AirbyteLogger with logging.Logger | +| 2.1.0 | 2024-05-02 | [37767](https://github.com/airbytehq/airbyte/pull/37767) | Migrated `Products`, `Product Images` and `Product Variants` to `GraphQL BULK` | +| 2.0.8 | 2024-05-02 | [37589](https://github.com/airbytehq/airbyte/pull/37589) | Added retry for known HTTP Errors for BULK streams | +| 2.0.7 | 2024-04-24 | [36660](https://github.com/airbytehq/airbyte/pull/36660) | Schema descriptions | +| 2.0.6 | 2024-04-22 | [37468](https://github.com/airbytehq/airbyte/pull/37468) | Fixed one time retry for `Internal Server Error` for BULK streams | +| 2.0.5 | 2024-04-03 | [36788](https://github.com/airbytehq/airbyte/pull/36788) | Added ability to dynamically adjust the size of the `slice` | +| 2.0.4 | 2024-03-22 | [36355](https://github.com/airbytehq/airbyte/pull/36355) | Update CDK version to ensure Per-Stream Error Messaging and Record Counts In State (features were already there so just upping the version) | +| 2.0.3 | 2024-03-15 | [36170](https://github.com/airbytehq/airbyte/pull/36170) | Fixed the `STATE` messages emittion frequency for the `nested` sub-streams | +| 2.0.2 | 2024-03-12 | [36000](https://github.com/airbytehq/airbyte/pull/36000) | Fix and issue where invalid shop name causes index out of bounds error | +| 2.0.1 | 2024-03-11 | [35952](https://github.com/airbytehq/airbyte/pull/35952) | Fixed the issue when `start date` is missing but the `stream` required it | +| 2.0.0 | 2024-02-12 | [32345](https://github.com/airbytehq/airbyte/pull/32345) | Fixed the issue with `state` causing the `substreams` to skip the records, made `metafield_*`: `collections, customers, draft_orders, locations, orders, product_images, product_variants, products`, and `fulfillment_orders, collections, discount_codes, inventory_levels, inventory_items, transactions_graphql, customer_address` streams to use `BULK Operations` instead of `REST` | +| 1.1.8 | 2024-02-12 | [35166](https://github.com/airbytehq/airbyte/pull/35166) | Manage dependencies with Poetry. | +| 1.1.7 | 2024-01-19 | [33804](https://github.com/airbytehq/airbyte/pull/33804) | Updated documentation with list of all supported streams | +| 1.1.6 | 2024-01-04 | [33414](https://github.com/airbytehq/airbyte/pull/33414) | Prepare for airbyte-lib | +| 1.1.5 | 2023-12-28 | [33827](https://github.com/airbytehq/airbyte/pull/33827) | Fix GraphQL query | +| 1.1.4 | 2023-10-19 | [31599](https://github.com/airbytehq/airbyte/pull/31599) | Base image migration: remove Dockerfile and use the python-connector-base image | +| 1.1.3 | 2023-10-17 | [31500](https://github.com/airbytehq/airbyte/pull/31500) | Fixed the issue caused by the `missing access token` while setup the new source and not yet authenticated | +| 1.1.2 | 2023-10-13 | [31381](https://github.com/airbytehq/airbyte/pull/31381) | Fixed the issue caused by the `state` presence while fetching the `deleted events` with pagination | +| 1.1.1 | 2023-09-18 | [30560](https://github.com/airbytehq/airbyte/pull/30560) | Performance testing - include socat binary in docker image | +| 1.1.0 | 2023-09-07 | [30246](https://github.com/airbytehq/airbyte/pull/30246) | Added ability to fetch `destroyed` records for `Articles, Blogs, CustomCollections, Orders, Pages, PriceRules, Products` | +| 1.0.0 | 2023-08-11 | [29361](https://github.com/airbytehq/airbyte/pull/29361) | Migrate to the `2023-07` Shopify API Version | +| 0.6.2 | 2023-08-09 | [29302](https://github.com/airbytehq/airbyte/pull/29302) | Handle the `Internal Server Error` when entity could be fetched | +| 0.6.1 | 2023-08-08 | [28291](https://github.com/airbytehq/airbyte/pull/28291) | Allow `shop` field to accept `*.myshopify.com` shop names, updated `OAuth Spec` | +| 0.6.0 | 2023-08-02 | [28770](https://github.com/airbytehq/airbyte/pull/28770) | Added `Disputes` stream | +| 0.5.1 | 2023-07-13 | [28700](https://github.com/airbytehq/airbyte/pull/28700) | Improved `error messages` with more user-friendly description, refactored code | +| 0.5.0 | 2023-06-13 | [27732](https://github.com/airbytehq/airbyte/pull/27732) | License Update: Elv2 | +| 0.4.0 | 2023-06-13 | [27083](https://github.com/airbytehq/airbyte/pull/27083) | Added `CustomerSavedSearch`, `CustomerAddress` and `Countries` streams | +| 0.3.4 | 2023-05-10 | [25961](https://github.com/airbytehq/airbyte/pull/25961) | Added validation for `shop` in input configuration (accepts non-url-like inputs) | +| 0.3.3 | 2023-04-12 | [25110](https://github.com/airbytehq/airbyte/pull/25110) | Fixed issue when `cursor_field` is `"None"`, added missing properties to stream schemas, fixed `access_scopes` validation error | +| 0.3.2 | 2023-02-27 | [23473](https://github.com/airbytehq/airbyte/pull/23473) | Fixed OOM / Memory leak issue for Airbyte Cloud | +| 0.3.1 | 2023-01-16 | [21461](https://github.com/airbytehq/airbyte/pull/21461) | Added `discount_applications` to `orders` stream | +| 0.3.0 | 2022-11-16 | [19492](https://github.com/airbytehq/airbyte/pull/19492) | Added support for graphql and add a graphql products stream | +| 0.2.0 | 2022-10-21 | [18298](https://github.com/airbytehq/airbyte/pull/18298) | Updated API version to the `2022-10`, make stream schemas backward cpmpatible | +| 0.1.39 | 2022-10-13 | [17962](https://github.com/airbytehq/airbyte/pull/17962) | Added metafield streams; support for nested list streams | +| 0.1.38 | 2022-10-10 | [17777](https://github.com/airbytehq/airbyte/pull/17777) | Fixed `404` for configured streams, fix missing `cursor` error for old records | +| 0.1.37 | 2022-04-30 | [12500](https://github.com/airbytehq/airbyte/pull/12500) | Improve input configuration copy | +| 0.1.36 | 2022-03-22 | [9850](https://github.com/airbytehq/airbyte/pull/9850) | Added `BalanceTransactions` stream | +| 0.1.35 | 2022-03-07 | [10915](https://github.com/airbytehq/airbyte/pull/10915) | Fixed a bug which caused `full-refresh` syncs of child REST entities configured for `incremental` | +| 0.1.34 | 2022-03-02 | [10794](https://github.com/airbytehq/airbyte/pull/10794) | Minor specification re-order, fixed links in documentation | +| 0.1.33 | 2022-02-17 | [10419](https://github.com/airbytehq/airbyte/pull/10419) | Fixed wrong field type for tax_exemptions for `Abandoned_checkouts` stream | +| 0.1.32 | 2022-02-18 | [10449](https://github.com/airbytehq/airbyte/pull/10449) | Added `tender_transactions` stream | +| 0.1.31 | 2022-02-08 | [10175](https://github.com/airbytehq/airbyte/pull/10175) | Fixed compatibility issues for legacy user config | +| 0.1.30 | 2022-01-24 | [9648](https://github.com/airbytehq/airbyte/pull/9648) | Added permission validation before sync | | 0.1.29 | 2022-01-20 | [9049](https://github.com/airbytehq/airbyte/pull/9248) | Added `shop_url` to the record for all streams | | 0.1.28 | 2022-01-19 | [9591](https://github.com/airbytehq/airbyte/pull/9591) | Implemented `OAuth2.0` authentication method for Airbyte Cloud | | 0.1.27 | 2021-12-22 | [9049](https://github.com/airbytehq/airbyte/pull/9049) | Updated connector fields title/description | From 04b6c1bc39c3aa8ccd338564827211d0d54aeb6e Mon Sep 17 00:00:00 2001 From: Aazam Thakur <59562284+aazam-gh@users.noreply.github.com> Date: Wed, 9 Oct 2024 23:32:21 +0530 Subject: [PATCH 206/379] source-safetyculture contribution from aazam-gh (#46385) --- .../connectors/source-safetyculture/README.md | 39 + .../acceptance-test-config.yml | 17 + .../connectors/source-safetyculture/icon.svg | 1 + .../source-safetyculture/manifest.yaml | 1584 +++++++++++++++++ .../source-safetyculture/metadata.yaml | 35 + docs/integrations/sources/safetyculture.md | 59 + 6 files changed, 1735 insertions(+) create mode 100644 airbyte-integrations/connectors/source-safetyculture/README.md create mode 100644 airbyte-integrations/connectors/source-safetyculture/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-safetyculture/icon.svg create mode 100644 airbyte-integrations/connectors/source-safetyculture/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-safetyculture/metadata.yaml create mode 100644 docs/integrations/sources/safetyculture.md diff --git a/airbyte-integrations/connectors/source-safetyculture/README.md b/airbyte-integrations/connectors/source-safetyculture/README.md new file mode 100644 index 0000000000000..ed66d4c420d3f --- /dev/null +++ b/airbyte-integrations/connectors/source-safetyculture/README.md @@ -0,0 +1,39 @@ +# SafetyCulture +This directory contains the manifest-only connector for `source-safetyculture`. + +The Safetyculture source connector which ingests data from the Safetyculture API. +Safetyculture is a workplace operations platform. The source supports a number of API changes. +For more information, checkout the website https://www.safetyculture.com/ + +This source uses the Authorization Bearer Token for handling requests. +An API Token is required for using this connector. +For more details about the API, check out https://developer.safetyculture.com/reference/introduction + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-safetyculture:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-safetyculture build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-safetyculture test +``` + diff --git a/airbyte-integrations/connectors/source-safetyculture/acceptance-test-config.yml b/airbyte-integrations/connectors/source-safetyculture/acceptance-test-config.yml new file mode 100644 index 0000000000000..a5165a05dab13 --- /dev/null +++ b/airbyte-integrations/connectors/source-safetyculture/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-safetyculture:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-safetyculture/icon.svg b/airbyte-integrations/connectors/source-safetyculture/icon.svg new file mode 100644 index 0000000000000..1e6b71cfeac14 --- /dev/null +++ b/airbyte-integrations/connectors/source-safetyculture/icon.svg @@ -0,0 +1 @@ + diff --git a/airbyte-integrations/connectors/source-safetyculture/manifest.yaml b/airbyte-integrations/connectors/source-safetyculture/manifest.yaml new file mode 100644 index 0000000000000..64dfa28f3fc0f --- /dev/null +++ b/airbyte-integrations/connectors/source-safetyculture/manifest.yaml @@ -0,0 +1,1584 @@ +version: 5.10.3 + +type: DeclarativeSource + +description: >- + The Safetyculture source connector which ingests data from the Safetyculture API. + Safetyculture is a workplace operations platform. The source supports a number of API changes. + For more information, checkout the website https://www.safetyculture.com/ + + This source uses the Authorization Bearer Token for handling requests. + An API Token is required for using this connector. + For more details about the API, check out https://developer.safetyculture.com/reference/introduction + +check: + type: CheckStream + stream_names: + - feed_users + +definitions: + streams: + feed_users: + type: DeclarativeStream + name: feed_users + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /feed/users + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestPath + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get('metadata', {}).get('next_page') }}" + stop_condition: "{{ response.get('metadata', {}).get('next_page') is none }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/feed_users" + groups: + type: DeclarativeStream + name: groups + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /groups + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - groups + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/groups" + connections: + type: DeclarativeStream + name: connections + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /share/connections + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - groups + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/connections" + heads_up: + type: DeclarativeStream + name: heads_up + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /announcements/v1/announcement:ListHeadsUpManage + http_method: POST + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - heads_ups + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: page_token + page_size_option: + type: RequestOption + field_name: page_size + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"next_page_token\", {}) }}" + stop_condition: "{{ not response.get(\"next_page_token\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/heads_up" + assets: + type: DeclarativeStream + name: assets + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /assets/v1/assets/list + http_method: POST + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - assets + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: page_token + page_size_option: + type: RequestOption + field_name: page_size + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"next_page_token\", {}) }}" + stop_condition: "{{ not response.get(\"next_page_token\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/assets" + folders: + type: DeclarativeStream + name: folders + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /directory/v1/folders + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - folders + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: page_token + page_size_option: + type: RequestOption + field_name: page_size + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"next_page_token\", {}) }}" + stop_condition: "{{ not response.get(\"next_page_token\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/folders" + global_response_sets: + type: DeclarativeStream + name: global_response_sets + primary_key: + - responseset_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /response_sets/v2 + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - response_sets + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/global_response_sets" + schedule_items: + type: DeclarativeStream + name: schedule_items + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /schedules/v1/schedule_items + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: page_token + page_size_option: + type: RequestOption + field_name: page_size + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"next_page_token\", {}) }}" + stop_condition: "{{ not response.get(\"next_page_token\", {}) }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/schedule_items" + actions: + type: DeclarativeStream + name: actions + primary_key: + - unique_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /tasks/v1/actions/list + http_method: POST + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - actions + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: page_token + page_size_option: + type: RequestOption + field_name: page_size + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"next_page_token\", {}) }}" + stop_condition: "{{ not response.get(\"next_page_token\", {}) }}" + transformations: + - type: AddFields + fields: + - path: + - unique_id + value: "{{record['task']['unique_id']}}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/actions" + templates: + type: DeclarativeStream + name: templates + primary_key: + - template_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /templates/search + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - templates + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/templates" + feed_templates: + type: DeclarativeStream + name: feed_templates + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /feed/templates + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestPath + pagination_strategy: + type: CursorPagination + cursor_value: "{{ response.get('metadata', {}).get('next_page') }}" + stop_condition: "{{ response.get('metadata', {}).get('next_page') is none }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/feed_templates" + issues: + type: DeclarativeStream + name: issues + primary_key: + - unique_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /tasks/v1/incidents/list + http_method: POST + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - incidents + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: body_json + field_name: page_token + page_size_option: + type: RequestOption + field_name: page_size + inject_into: body_json + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ response.get(\"next_page_token\", {}) }}" + stop_condition: "{{ not response.get(\"next_page_token\", {}) }}" + transformations: + - type: AddFields + fields: + - path: + - unique_id + value: "{{record['task']['unique_id']}}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/issues" + base_requester: + type: HttpRequester + url_base: https://api.safetyculture.io + authenticator: + type: BearerAuthenticator + api_token: "{{ config[\"api_key\"] }}" + +streams: + - $ref: "#/definitions/streams/feed_users" + - $ref: "#/definitions/streams/groups" + - $ref: "#/definitions/streams/connections" + - $ref: "#/definitions/streams/heads_up" + - $ref: "#/definitions/streams/assets" + - $ref: "#/definitions/streams/folders" + - $ref: "#/definitions/streams/global_response_sets" + - $ref: "#/definitions/streams/schedule_items" + - $ref: "#/definitions/streams/actions" + - $ref: "#/definitions/streams/templates" + - $ref: "#/definitions/streams/feed_templates" + - $ref: "#/definitions/streams/issues" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + order: 0 + title: API Key + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + feed_users: true + groups: false + connections: true + heads_up: true + assets: true + folders: true + global_response_sets: true + schedule_items: true + actions: true + templates: true + feed_templates: true + issues: true + testedStreams: + feed_users: + hasRecords: true + streamHash: fbf4f16be8839503c772a3be1f754cdddbb579ac + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + groups: + hasRecords: true + streamHash: 92444425dcc802dee1570910bfed220729ccf7ee + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + connections: + hasRecords: true + streamHash: 2265722254844ad82a2bac059b555b2fb2e8e826 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + heads_up: + hasRecords: true + streamHash: 0197f79c3c35855b4a5382395f34f0edea17bbbe + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + assets: + hasRecords: true + streamHash: 4db37744c0daa27b220727480162c4ba9f792611 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + folders: + hasRecords: true + streamHash: f9821a74f96239ba7b518060251e70a86845b2af + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + global_response_sets: + hasRecords: true + streamHash: 6f4cd77f8a14478987c2aab4f739f1ea52c990f7 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + schedule_items: + hasRecords: true + streamHash: 3d80019d9b20550e393e332a5a3bfbed21ebce62 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + actions: + streamHash: c1463b5f5464290ed35d498dde7dbfe3d1d2c8e9 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + templates: + hasRecords: true + streamHash: 2a884117adc409a6b0d83242e0227f40bf49fa8f + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + feed_templates: + hasRecords: true + streamHash: a2736e1dc94a3307f61c8341b025a1972d016b3a + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + issues: + streamHash: 33815d3c0af8075389ddf6944e4b4fd0677928de + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://developer.safetyculture.com/reference/introduction + +schemas: + feed_users: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + active: + type: + - boolean + - "null" + email: + type: + - string + - "null" + firstname: + type: + - string + - "null" + id: + type: string + last_seen_at: + type: + - string + - "null" + lastname: + type: + - string + - "null" + organisation_id: + type: + - string + - "null" + seat_type: + type: + - string + - "null" + required: + - id + groups: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + id: + type: string + name: + type: + - string + - "null" + required: + - id + connections: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + required: + - id + heads_up: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + acknowledgement_count: + type: + - number + - "null" + assigned_users_count: + type: + - number + - "null" + author_id: + type: + - string + - "null" + author_name: + type: + - string + - "null" + complete: + type: + - boolean + - "null" + has_acknowledgement: + type: + - boolean + - "null" + id: + type: string + is_comments_disabled: + type: + - boolean + - "null" + is_reactions_disabled: + type: + - boolean + - "null" + media_type: + type: + - string + - "null" + message_count: + type: + - number + - "null" + published_at: + type: + - string + - "null" + reaction_count: + type: + - number + - "null" + title: + type: + - string + - "null" + viewed_count: + type: + - number + - "null" + required: + - id + assets: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + name: + type: + - string + - "null" + type_id: + type: + - string + - "null" + code: + type: + - string + - "null" + created_at: + type: + - string + - "null" + fields: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + field_id: + type: + - string + - "null" + name: + type: + - string + - "null" + id: + type: string + media: + type: + - array + - "null" + modified_at: + type: + - string + - "null" + sourced_from_external_system: + type: + - boolean + - "null" + state: + type: + - string + - "null" + required: + - id + folders: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + creator_id: + type: + - string + - "null" + deleted: + type: + - boolean + - "null" + id: + type: string + managers_count: + type: + - number + - "null" + members_count: + type: + - number + - "null" + meta_label: + type: + - string + - "null" + modified_at: + type: + - string + - "null" + name: + type: + - string + - "null" + org_id: + type: + - string + - "null" + required: + - id + global_response_sets: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + name: + type: + - string + - "null" + responseset_id: + type: string + required: + - responseset_id + schedule_items: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + assignees: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + can_late_submit: + type: + - boolean + - "null" + created_at: + type: + - string + - "null" + creator: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + document: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + duration: + type: + - string + - "null" + from_date: + type: + - string + - "null" + id: + type: string + location_id: + type: + - string + - "null" + modified_at: + type: + - string + - "null" + must_complete: + type: + - string + - "null" + next_occurrence: + type: + - object + - "null" + properties: + due: + type: + - string + - "null" + start: + type: + - string + - "null" + recurrence: + type: + - string + - "null" + reminders: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + duration: + type: + - string + - "null" + event: + type: + - string + - "null" + site_based_assignment_enabled: + type: + - boolean + - "null" + start_time: + type: + - object + - "null" + properties: + hour: + type: + - number + - "null" + minute: + type: + - number + - "null" + status: + type: + - string + - "null" + timezone: + type: + - string + - "null" + required: + - id + actions: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + custom_field_and_values: + type: + - array + - "null" + task: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + action_label: + type: + - array + - "null" + asset_id: + type: + - string + - "null" + collaborators: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + assigned_role: + type: + - string + - "null" + collaborator_id: + type: + - string + - "null" + collaborator_type: + type: + - string + - "null" + user: + type: + - object + - "null" + properties: + firstname: + type: + - string + - "null" + lastname: + type: + - string + - "null" + user_id: + type: + - string + - "null" + created_at: + type: + - string + - "null" + creator: + type: + - object + - "null" + properties: + firstname: + type: + - string + - "null" + lastname: + type: + - string + - "null" + user_id: + type: + - string + - "null" + due_at: + type: + - string + - "null" + inspection: + type: + - object + - "null" + properties: + inspection_id: + type: + - string + - "null" + inspection_name: + type: + - string + - "null" + inspection_item: + type: + - object + - "null" + properties: + inspection_item_id: + type: + - string + - "null" + inspection_item_name: + type: + - string + - "null" + inspection_item_response_values: + type: + - array + - "null" + inspection_item_type: + type: + - string + - "null" + modified_at: + type: + - string + - "null" + priority_id: + type: + - string + - "null" + references: + type: + - array + - "null" + site: + type: + - object + - "null" + properties: + area: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + region: + type: + - string + - "null" + status: + type: + - object + - "null" + properties: + display_order: + type: + - number + - "null" + key: + type: + - string + - "null" + label: + type: + - string + - "null" + status_id: + type: + - string + - "null" + status_id: + type: + - string + - "null" + task_id: + type: + - string + - "null" + task_templates: + type: + - array + - "null" + template_id: + type: + - string + - "null" + template_name: + type: + - string + - "null" + templates: + type: + - array + - "null" + title: + type: + - string + - "null" + unique_id: + type: + - string + - "null" + unique_id: + type: string + required: + - unique_id + templates: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created_at: + type: + - string + - "null" + modified_at: + type: + - string + - "null" + name: + type: + - string + - "null" + template_id: + type: string + required: + - template_id + feed_templates: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + archived: + type: + - boolean + - "null" + author_id: + type: + - string + - "null" + author_name: + type: + - string + - "null" + created_at: + type: + - string + - "null" + id: + type: string + modified_at: + type: + - string + - "null" + name: + type: + - string + - "null" + organisation_id: + type: + - string + - "null" + owner_id: + type: + - string + - "null" + owner_name: + type: + - string + - "null" + required: + - id + issues: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + category: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + display_order: + type: + - number + - "null" + id: + type: + - string + - "null" + is_visible: + type: + - boolean + - "null" + items: + type: + - array + - "null" + key: + type: + - string + - "null" + label: + type: + - string + - "null" + linked_template_ids: + type: + - array + - "null" + notification_detail: + type: + - string + - "null" + use_category_access_whitelist: + type: + - boolean + - "null" + user_access_as_reporter: + type: + - string + - "null" + category_id: + type: + - string + - "null" + inspections: + type: + - array + - "null" + items: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + is_disabled: + type: + - boolean + - "null" + is_mandatory: + type: + - boolean + - "null" + name: + type: + - string + - "null" + question_data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + is_mandatory: + type: + - boolean + - "null" + text: + type: + - string + - "null" + location: + type: + - object + - "null" + properties: + administrative_area: + type: + - string + - "null" + country: + type: + - string + - "null" + geo_position: + type: + - object + - "null" + properties: + accuracy: + type: + - number + - "null" + latitude: + type: + - number + - "null" + longitude: + type: + - number + - "null" + iso_country_code: + type: + - string + - "null" + locality: + type: + - string + - "null" + name: + type: + - string + - "null" + postal_code: + type: + - string + - "null" + sub_administrative_area: + type: + - string + - "null" + sub_locality: + type: + - string + - "null" + sub_thoroughfare: + type: + - string + - "null" + thoroughfare: + type: + - string + - "null" + media: + type: + - array + - "null" + question_answers: + type: + - array + - "null" + task: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + action_label: + type: + - array + - "null" + asset_id: + type: + - string + - "null" + collaborators: + type: + - array + - "null" + created_at: + type: + - string + - "null" + creator: + type: + - object + - "null" + properties: + firstname: + type: + - string + - "null" + lastname: + type: + - string + - "null" + user_id: + type: + - string + - "null" + inspection: + type: + - object + - "null" + properties: + inspection_id: + type: + - string + - "null" + inspection_name: + type: + - string + - "null" + inspection_item: + type: + - object + - "null" + properties: + inspection_item_id: + type: + - string + - "null" + inspection_item_name: + type: + - string + - "null" + inspection_item_response_values: + type: + - array + - "null" + inspection_item_type: + type: + - string + - "null" + modified_at: + type: + - string + - "null" + occurred_at: + type: + - string + - "null" + priority_id: + type: + - string + - "null" + references: + type: + - array + - "null" + site: + type: + - object + - "null" + properties: + area: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + region: + type: + - string + - "null" + status_id: + type: + - string + - "null" + task_id: + type: + - string + - "null" + task_templates: + type: + - array + - "null" + template_id: + type: + - string + - "null" + template_name: + type: + - string + - "null" + templates: + type: + - array + - "null" + title: + type: + - string + - "null" + unique_id: + type: + - string + - "null" + unique_id: + type: string + required: + - unique_id diff --git a/airbyte-integrations/connectors/source-safetyculture/metadata.yaml b/airbyte-integrations/connectors/source-safetyculture/metadata.yaml new file mode 100644 index 0000000000000..becfbc3d22b8c --- /dev/null +++ b/airbyte-integrations/connectors/source-safetyculture/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.safetyculture.io" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-safetyculture + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.10.2@sha256:81db4f78a92d199f33c38c17f5b63fc87c56739f14dc10276ddec86c7b707b7a + connectorSubtype: api + connectorType: source + definitionId: 570b875e-52d9-40e0-a43c-340ebae2d9f8 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-safetyculture + githubIssueLabel: source-safetyculture + icon: icon.svg + license: MIT + name: SafetyCulture + releaseDate: 2024-10-04 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/safetyculture + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/safetyculture.md b/docs/integrations/sources/safetyculture.md new file mode 100644 index 0000000000000..b9508137919b0 --- /dev/null +++ b/docs/integrations/sources/safetyculture.md @@ -0,0 +1,59 @@ +# SafetyCulture + +This is the guide for the Safetyculture source connector which ingests data from the Safetyculture API. + +## Prerequisites + +This source uses the Authorization Bearer Token for handling requests. In order to obtain the credientials, you must first create a Safetyculture account. +The API usage is only availabe for paid plans https://www.safetyculture.com/ + +Once you have created your account, you can log in to your account. +You can create an API token under Account Settings -> Integrations -> Manage MY API Tokens +You can find more about their API here https://developer.safetyculture.com/reference/introduction + +## Set up the Adjust source connector + +1. Click **Sources** and then click **+ New source**. +2. On the Set up the source page, select **Safetyculture** from the Source type dropdown. +3. Enter a name for your new source. +4. For **API Token**, enter your API token obtained in the previous step. +5. Click **Set up source**. + +## Supported sync modes + +The source connector supports the following [sync modes](https://docs.airbyte.com/cloud/core-concepts#connection-sync-modes): + +- Full Refresh + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| feed_users | id | DefaultPaginator | ✅ | ❌ | +| groups | id | No pagination | ✅ | ❌ | +| connections | id | No pagination | ✅ | ❌ | +| heads_up | id | DefaultPaginator | ✅ | ❌ | +| assets | id | DefaultPaginator | ✅ | ❌ | +| folders | id | DefaultPaginator | ✅ | ❌ | +| global_response_sets | responseset_id | No pagination | ✅ | ❌ | +| schedule_items | id | DefaultPaginator | ✅ | ❌ | +| actions | unique_id | DefaultPaginator | ✅ | ❌ | +| templates | template_id | No pagination | ✅ | ❌ | +| feed_templates | id | DefaultPaginator | ✅ | ❌ | +| issues | unique_id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-04 | | Initial release by [@aazam-gh](https://github.com/aazam-gh) via Connector Builder | + +
From 9249347736873448bdbea4eb1edc197d95d0d046 Mon Sep 17 00:00:00 2001 From: Patrick Nilan Date: Wed, 9 Oct 2024 11:18:32 -0700 Subject: [PATCH 207/379] [airbyte-cdk] - Add `XmlDecoder` component to low code CDK (#46360) --- .../declarative_component_schema.yaml | 13 + .../sources/declarative/decoders/__init__.py | 5 +- .../decoders/pagination_decoder_decorator.py | 36 + .../declarative/decoders/xml_decoder.py | 93 + .../models/declarative_component_schema.py | 28 +- .../parsers/model_to_component_factory.py | 62 +- .../paginators/default_paginator.py | 5 +- .../strategies/cursor_pagination_strategy.py | 5 +- .../paginators/strategies/offset_increment.py | 4 +- airbyte-cdk/python/poetry.lock | 2681 +++++++++-------- airbyte-cdk/python/pyproject.toml | 1 + .../test_pagination_decoder_decorator.py | 26 + .../declarative/decoders/test_xml_decoder.py | 38 + .../test_model_to_component_factory.py | 16 +- .../paginators/test_default_paginator.py | 53 +- 15 files changed, 1746 insertions(+), 1320 deletions(-) create mode 100644 airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py create mode 100644 airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/xml_decoder.py create mode 100644 airbyte-cdk/python/unit_tests/sources/declarative/decoders/test_pagination_decoder_decorator.py create mode 100644 airbyte-cdk/python/unit_tests/sources/declarative/decoders/test_xml_decoder.py diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml b/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml index 4409ad29ee456..1fd7e7c6562f8 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/declarative_component_schema.yaml @@ -1407,6 +1407,7 @@ definitions: description: Component used to decode the response. anyOf: - "$ref": "#/definitions/JsonDecoder" + - "$ref": "#/definitions/XmlDecoder" $parameters: type: object additionalProperties: true @@ -1739,6 +1740,16 @@ definitions: type: type: string enum: [IterableDecoder] + XmlDecoder: + title: XML Decoder + description: Use this is the response is XML. + type: object + required: + - type + properties: + type: + type: string + enum: [XmlDecoder] ListPartitionRouter: title: List Partition Router description: A Partition router that specifies a list of attributes where each attribute describes a portion of the complete data set for a stream. During a sync, each value is iterated over and can be used as input to outbound API requests. @@ -2382,6 +2393,7 @@ definitions: - "$ref": "#/definitions/JsonDecoder" - "$ref": "#/definitions/JsonlDecoder" - "$ref": "#/definitions/IterableDecoder" + - "$ref": "#/definitions/XmlDecoder" $parameters: type: object additionalProperties: true @@ -2497,6 +2509,7 @@ definitions: - "$ref": "#/definitions/JsonDecoder" - "$ref": "#/definitions/JsonlDecoder" - "$ref": "#/definitions/IterableDecoder" + - "$ref": "#/definitions/XmlDecoder" $parameters: type: object additionalProperties: true diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/__init__.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/__init__.py index 5c9676ea3adaa..b67561e989cee 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/__init__.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/__init__.py @@ -5,6 +5,7 @@ from airbyte_cdk.sources.declarative.decoders.decoder import Decoder from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder, JsonlDecoder, IterableDecoder from airbyte_cdk.sources.declarative.decoders.noop_decoder import NoopDecoder +from airbyte_cdk.sources.declarative.decoders.pagination_decoder_decorator import PaginationDecoderDecorator +from airbyte_cdk.sources.declarative.decoders.xml_decoder import XmlDecoder - -__all__ = ["Decoder", "JsonDecoder", "JsonlDecoder", "IterableDecoder", "NoopDecoder"] +__all__ = ["Decoder", "JsonDecoder", "JsonlDecoder", "IterableDecoder", "NoopDecoder", "PaginationDecoderDecorator", "XmlDecoder"] diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py new file mode 100644 index 0000000000000..dadb717a1723d --- /dev/null +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py @@ -0,0 +1,36 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + +import logging +from dataclasses import dataclass +from typing import Any, Generator, MutableMapping + +import requests +from airbyte_cdk.sources.declarative.decoders import Decoder + +logger = logging.getLogger("airbyte") + + +@dataclass +class PaginationDecoderDecorator(Decoder): + """ + Decoder to wrap other decoders when instantiating a DefaultPaginator in order to bypass decoding if the response is streamed. + """ + + def __init__(self, decoder: Decoder): + self._decoder = decoder + + @property + def decoder(self) -> Decoder: + return self._decoder + + def is_stream_response(self) -> bool: + return self._decoder.is_stream_response() + + def decode(self, response: requests.Response) -> Generator[MutableMapping[str, Any], None, None]: + if self._decoder.is_stream_response(): + logger.warning("Response is streamed and therefore will not be decoded for pagination.") + yield {} + else: + yield from self._decoder.decode(response) diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/xml_decoder.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/xml_decoder.py new file mode 100644 index 0000000000000..7b598ba851f97 --- /dev/null +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/decoders/xml_decoder.py @@ -0,0 +1,93 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# + +import logging +from dataclasses import InitVar, dataclass +from typing import Any, Generator, Mapping, MutableMapping +from xml.parsers.expat import ExpatError + +import requests +import xmltodict +from airbyte_cdk.sources.declarative.decoders.decoder import Decoder + +logger = logging.getLogger("airbyte") + + +@dataclass +class XmlDecoder(Decoder): + """ + XmlDecoder is a decoder strategy that parses the XML content of the resopnse, and converts it to a dict. + + This class handles XML attributes by prefixing them with an '@' symbol and represents XML text content by using the '#text' key if the element has attributes or the element name/tag. It does not currently support XML namespace declarations. + + Example XML Input: + + + San Francisco + + + Book Title 1 + 10.99 + + + Gadget + 299.99 + A useful gadget + + + + Converted Output: + { + "root": { + "location: { + "@id": "123, + "#text": "San Francisco" + }, + "item": [ + { + "@id": "1", + "@category": "books", + "name": "Book Title 1", + "price": "10.99" + }, + { + "@id": "2", + "@category": "electronics", + "name": "Gadget", + "price": "299.99", + "description": "A useful gadget" + } + ] + } + } + + Notes: + - Attributes of an XML element are prefixed with an '@' symbol in the dictionary output. + - Text content of an XML element is handled in two different ways, depending on whether + the element has attributes. + - If the element has attributes, the text content will be + represented by the "#text" key. + - If the element does not have any attributes, the text content will be + represented by element name. + - Namespace declarations are not supported in the current implementation. + """ + + parameters: InitVar[Mapping[str, Any]] + + def is_stream_response(self) -> bool: + return False + + def decode(self, response: requests.Response) -> Generator[MutableMapping[str, Any], None, None]: + body_xml = response.text + try: + body_json = xmltodict.parse(body_xml) + if not isinstance(body_json, list): + body_json = [body_json] + if len(body_json) == 0: + yield {} + else: + yield from body_json + except ExpatError as exc: + logger.warning(f"Response cannot be parsed from XML: {response.status_code=}, {response.text=}, {exc=}") + yield {} diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py index 9cf9fbea05ae7..a339fd08dd35d 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py @@ -685,6 +685,10 @@ class IterableDecoder(BaseModel): type: Literal['IterableDecoder'] +class XmlDecoder(BaseModel): + type: Literal['XmlDecoder'] + + class MinMaxDatetime(BaseModel): type: Literal['MinMaxDatetime'] datetime: str = Field( @@ -1458,8 +1462,8 @@ class SessionTokenAuthenticator(BaseModel): description='Authentication method to use for requests sent to the API, specifying how to inject the session token.', title='Data Request Authentication', ) - decoder: Optional[JsonDecoder] = Field( - None, description='Component decoding the response', title='Decoder' + decoder: Optional[Union[JsonDecoder, XmlDecoder]] = Field( + None, description='Component used to decode the response.', title='Decoder' ) parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') @@ -1625,10 +1629,12 @@ class SimpleRetriever(BaseModel): description='PartitionRouter component that describes how to partition the stream, enabling incremental syncs and checkpointing.', title='Partition Router', ) - decoder: Optional[Union[JsonDecoder, JsonlDecoder, IterableDecoder]] = Field( - None, - description='Component decoding the response so records can be extracted.', - title='Decoder', + decoder: Optional[Union[JsonDecoder, JsonlDecoder, IterableDecoder, XmlDecoder]] = ( + Field( + None, + description='Component decoding the response so records can be extracted.', + title='Decoder', + ) ) parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') @@ -1689,10 +1695,12 @@ class AsyncRetriever(BaseModel): description='PartitionRouter component that describes how to partition the stream, enabling incremental syncs and checkpointing.', title='Partition Router', ) - decoder: Optional[Union[JsonDecoder, JsonlDecoder, IterableDecoder]] = Field( - None, - description='Component decoding the response so records can be extracted.', - title='Decoder', + decoder: Optional[Union[JsonDecoder, JsonlDecoder, IterableDecoder, XmlDecoder]] = ( + Field( + None, + description='Component decoding the response so records can be extracted.', + title='Decoder', + ) ) parameters: Optional[Dict[str, Any]] = Field(None, alias='$parameters') diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py index 64a1d5422adb1..761b2dabe4431 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py @@ -31,7 +31,14 @@ from airbyte_cdk.sources.declarative.concurrency_level import ConcurrencyLevel from airbyte_cdk.sources.declarative.datetime import MinMaxDatetime from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream -from airbyte_cdk.sources.declarative.decoders import Decoder, IterableDecoder, JsonDecoder, JsonlDecoder +from airbyte_cdk.sources.declarative.decoders import ( + Decoder, + IterableDecoder, + JsonDecoder, + JsonlDecoder, + PaginationDecoderDecorator, + XmlDecoder, +) from airbyte_cdk.sources.declarative.extractors import DpathExtractor, RecordFilter, RecordSelector, ResponseToFileExtractor from airbyte_cdk.sources.declarative.extractors.record_filter import ClientSideIncrementalRecordFilterDecorator from airbyte_cdk.sources.declarative.extractors.record_selector import SCHEMA_TRANSFORMER_TYPE_MAPPING @@ -118,6 +125,7 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import ValueType from airbyte_cdk.sources.declarative.models.declarative_component_schema import WaitTimeFromHeader as WaitTimeFromHeaderModel from airbyte_cdk.sources.declarative.models.declarative_component_schema import WaitUntilTimeFromHeader as WaitUntilTimeFromHeaderModel +from airbyte_cdk.sources.declarative.models.declarative_component_schema import XmlDecoder as XmlDecoderModel from airbyte_cdk.sources.declarative.partition_routers import ( CartesianProductStreamSlicer, ListPartitionRouter, @@ -227,6 +235,7 @@ def _init_mappings(self) -> None: JsonlDecoderModel: self.create_jsonl_decoder, KeysToLowerModel: self.create_keys_to_lower_transformation, IterableDecoderModel: self.create_iterable_decoder, + XmlDecoderModel: self.create_xml_decoder, JsonFileSchemaLoaderModel: self.create_json_file_schema_loader, JwtAuthenticatorModel: self.create_jwt_authenticator, LegacyToPerPartitionStateMigrationModel: self.create_legacy_to_per_partition_state_migration, @@ -385,8 +394,6 @@ def create_session_token_authenticator( self, model: SessionTokenAuthenticatorModel, config: Config, name: str, **kwargs: Any ) -> Union[ApiKeyAuthenticator, BearerAuthenticator]: decoder = self._create_component_from_model(model=model.decoder, config=config) if model.decoder else JsonDecoder(parameters={}) - if not isinstance(decoder, JsonDecoder): - raise ValueError(f"Provided decoder of {type(model.decoder)=} is not supported. Please set JsonDecoder instead.") login_requester = self._create_component_from_model( model=model.login_requester, config=config, name=f"{name}_login_requester", decoder=decoder ) @@ -461,11 +468,20 @@ def create_constant_backoff_strategy(model: ConstantBackoffStrategyModel, config def create_cursor_pagination( self, model: CursorPaginationModel, config: Config, decoder: Decoder, **kwargs: Any ) -> CursorPaginationStrategy: - if not isinstance(decoder, JsonDecoder): - raise ValueError(f"Provided decoder of {type(decoder)=} is not supported. Please set JsonDecoder instead.") + if isinstance(decoder, PaginationDecoderDecorator): + if not isinstance(decoder.decoder, (JsonDecoder, XmlDecoder)): + raise ValueError( + f"Provided decoder of {type(decoder.decoder)=} is not supported. Please set JsonDecoder or XmlDecoder instead." + ) + decoder_to_use = decoder + else: + if not isinstance(decoder, (JsonDecoder, XmlDecoder)): + raise ValueError(f"Provided decoder of {type(decoder)=} is not supported. Please set JsonDecoder or XmlDecoder instead.") + decoder_to_use = PaginationDecoderDecorator(decoder=decoder) + return CursorPaginationStrategy( cursor_value=model.cursor_value, - decoder=decoder, + decoder=decoder_to_use, page_size=model.page_size, stop_condition=model.stop_condition, config=config, @@ -824,9 +840,12 @@ def create_default_paginator( decoder: Optional[Decoder] = None, cursor_used_for_stop_condition: Optional[DeclarativeCursor] = None, ) -> Union[DefaultPaginator, PaginatorTestReadDecorator]: - decoder_to_use = decoder if decoder else JsonDecoder(parameters={}) - if not isinstance(decoder_to_use, JsonDecoder): - raise ValueError(f"Provided decoder of {type(decoder_to_use)=} is not supported. Please set JsonDecoder instead.") + if decoder: + if not isinstance(decoder, (JsonDecoder, XmlDecoder)): + raise ValueError(f"Provided decoder of {type(decoder)=} is not supported. Please set JsonDecoder or XmlDecoder instead.") + decoder_to_use = PaginationDecoderDecorator(decoder=decoder) + else: + decoder_to_use = PaginationDecoderDecorator(decoder=JsonDecoder(parameters={})) page_size_option = ( self._create_component_from_model(model=model.page_size_option, config=config) if model.page_size_option else None ) @@ -854,7 +873,10 @@ def create_default_paginator( def create_dpath_extractor( self, model: DpathExtractorModel, config: Config, decoder: Optional[Decoder] = None, **kwargs: Any ) -> DpathExtractor: - decoder_to_use = decoder if decoder else JsonDecoder(parameters={}) + if decoder: + decoder_to_use = decoder + else: + decoder_to_use = JsonDecoder(parameters={}) model_field_path: List[Union[InterpolatedString, str]] = [x for x in model.field_path] return DpathExtractor(decoder=decoder_to_use, field_path=model_field_path, config=config, parameters=model.parameters or {}) @@ -945,6 +967,10 @@ def create_jsonl_decoder(model: JsonlDecoderModel, config: Config, **kwargs: Any def create_iterable_decoder(model: IterableDecoderModel, config: Config, **kwargs: Any) -> IterableDecoder: return IterableDecoder(parameters={}) + @staticmethod + def create_xml_decoder(model: XmlDecoderModel, config: Config, **kwargs: Any) -> XmlDecoder: + return XmlDecoder(parameters={}) + @staticmethod def create_json_file_schema_loader(model: JsonFileSchemaLoaderModel, config: Config, **kwargs: Any) -> JsonFileSchemaLoader: return JsonFileSchemaLoader(file_path=model.file_path or "", config=config, parameters=model.parameters or {}) @@ -1056,12 +1082,20 @@ def create_oauth_authenticator(self, model: OAuthAuthenticatorModel, config: Con @staticmethod def create_offset_increment(model: OffsetIncrementModel, config: Config, decoder: Decoder, **kwargs: Any) -> OffsetIncrement: - if not isinstance(decoder, JsonDecoder): - raise ValueError(f"Provided decoder of {type(decoder)=} is not supported. Please set JsonDecoder instead.") + if isinstance(decoder, PaginationDecoderDecorator): + if not isinstance(decoder.decoder, (JsonDecoder, XmlDecoder)): + raise ValueError( + f"Provided decoder of {type(decoder.decoder)=} is not supported. Please set JsonDecoder or XmlDecoder instead." + ) + decoder_to_use = decoder + else: + if not isinstance(decoder, (JsonDecoder, XmlDecoder)): + raise ValueError(f"Provided decoder of {type(decoder)=} is not supported. Please set JsonDecoder or XmlDecoder instead.") + decoder_to_use = PaginationDecoderDecorator(decoder=decoder) return OffsetIncrement( page_size=model.page_size, config=config, - decoder=decoder, + decoder=decoder_to_use, inject_on_first_request=model.inject_on_first_request or False, parameters=model.parameters or {}, ) @@ -1106,9 +1140,9 @@ def create_record_selector( self, model: RecordSelectorModel, config: Config, - decoder: Optional[Decoder] = None, *, transformations: List[RecordTransformation], + decoder: Optional[Decoder] = None, client_side_incremental_sync: Optional[Dict[str, Any]] = None, **kwargs: Any, ) -> RecordSelector: diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py index f8ad541ec7c51..c92e997700706 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py @@ -6,8 +6,7 @@ from typing import Any, Mapping, MutableMapping, Optional, Union import requests -from airbyte_cdk.sources.declarative.decoders.decoder import Decoder -from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder +from airbyte_cdk.sources.declarative.decoders import Decoder, JsonDecoder, PaginationDecoderDecorator from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString from airbyte_cdk.sources.declarative.requesters.paginators.paginator import Paginator from airbyte_cdk.sources.declarative.requesters.paginators.strategies.pagination_strategy import PaginationStrategy @@ -90,7 +89,7 @@ class DefaultPaginator(Paginator): config: Config url_base: Union[InterpolatedString, str] parameters: InitVar[Mapping[str, Any]] - decoder: Decoder = field(default_factory=lambda: JsonDecoder(parameters={})) + decoder: Decoder = field(default_factory=lambda: PaginationDecoderDecorator(decoder=JsonDecoder(parameters={}))) page_size_option: Optional[RequestOption] = None page_token_option: Optional[Union[RequestPath, RequestOption]] = None diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py index 8d10e4b5a246b..7ba3c1d096acf 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py @@ -6,8 +6,7 @@ from typing import Any, Dict, Mapping, Optional, Union import requests -from airbyte_cdk.sources.declarative.decoders.decoder import Decoder -from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder +from airbyte_cdk.sources.declarative.decoders import Decoder, JsonDecoder, PaginationDecoderDecorator from airbyte_cdk.sources.declarative.interpolation.interpolated_boolean import InterpolatedBoolean from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString from airbyte_cdk.sources.declarative.requesters.paginators.strategies.pagination_strategy import PaginationStrategy @@ -32,7 +31,7 @@ class CursorPaginationStrategy(PaginationStrategy): parameters: InitVar[Mapping[str, Any]] page_size: Optional[int] = None stop_condition: Optional[Union[InterpolatedBoolean, str]] = None - decoder: Decoder = field(default_factory=lambda: JsonDecoder(parameters={})) + decoder: Decoder = field(default_factory=lambda: PaginationDecoderDecorator(decoder=JsonDecoder(parameters={}))) def __post_init__(self, parameters: Mapping[str, Any]) -> None: self._initial_cursor = None diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py index 2789181eedb8f..295b09082b56f 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py @@ -6,7 +6,7 @@ from typing import Any, Mapping, Optional, Union import requests -from airbyte_cdk.sources.declarative.decoders import Decoder, JsonDecoder +from airbyte_cdk.sources.declarative.decoders import Decoder, JsonDecoder, PaginationDecoderDecorator from airbyte_cdk.sources.declarative.interpolation import InterpolatedString from airbyte_cdk.sources.declarative.requesters.paginators.strategies.pagination_strategy import PaginationStrategy from airbyte_cdk.sources.types import Config, Record @@ -39,7 +39,7 @@ class OffsetIncrement(PaginationStrategy): config: Config page_size: Optional[Union[str, int]] parameters: InitVar[Mapping[str, Any]] - decoder: Decoder = field(default_factory=lambda: JsonDecoder(parameters={})) + decoder: Decoder = field(default_factory=lambda: PaginationDecoderDecorator(decoder=JsonDecoder(parameters={}))) inject_on_first_request: bool = False def __post_init__(self, parameters: Mapping[str, Any]) -> None: diff --git a/airbyte-cdk/python/poetry.lock b/airbyte-cdk/python/poetry.lock index 26d8c715c5425..ec926aaa98646 100644 --- a/airbyte-cdk/python/poetry.lock +++ b/airbyte-cdk/python/poetry.lock @@ -2,113 +2,113 @@ [[package]] name = "aiohappyeyeballs" -version = "2.4.0" +version = "2.4.3" description = "Happy Eyeballs for asyncio" optional = true python-versions = ">=3.8" files = [ - {file = "aiohappyeyeballs-2.4.0-py3-none-any.whl", hash = "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd"}, - {file = "aiohappyeyeballs-2.4.0.tar.gz", hash = "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2"}, + {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, + {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, ] [[package]] name = "aiohttp" -version = "3.10.5" +version = "3.10.9" description = "Async http client/server framework (asyncio)" optional = true python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:18a01eba2574fb9edd5f6e5fb25f66e6ce061da5dab5db75e13fe1558142e0a3"}, - {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:94fac7c6e77ccb1ca91e9eb4cb0ac0270b9fb9b289738654120ba8cebb1189c6"}, - {file = "aiohttp-3.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f1f1c75c395991ce9c94d3e4aa96e5c59c8356a15b1c9231e783865e2772699"}, - {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7acae3cf1a2a2361ec4c8e787eaaa86a94171d2417aae53c0cca6ca3118ff6"}, - {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94c4381ffba9cc508b37d2e536b418d5ea9cfdc2848b9a7fea6aebad4ec6aac1"}, - {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c31ad0c0c507894e3eaa843415841995bf8de4d6b2d24c6e33099f4bc9fc0d4f"}, - {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0912b8a8fadeb32ff67a3ed44249448c20148397c1ed905d5dac185b4ca547bb"}, - {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d93400c18596b7dc4794d48a63fb361b01a0d8eb39f28800dc900c8fbdaca91"}, - {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d00f3c5e0d764a5c9aa5a62d99728c56d455310bcc288a79cab10157b3af426f"}, - {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d742c36ed44f2798c8d3f4bc511f479b9ceef2b93f348671184139e7d708042c"}, - {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:814375093edae5f1cb31e3407997cf3eacefb9010f96df10d64829362ae2df69"}, - {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8224f98be68a84b19f48e0bdc14224b5a71339aff3a27df69989fa47d01296f3"}, - {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9a487ef090aea982d748b1b0d74fe7c3950b109df967630a20584f9a99c0683"}, - {file = "aiohttp-3.10.5-cp310-cp310-win32.whl", hash = "sha256:d9ef084e3dc690ad50137cc05831c52b6ca428096e6deb3c43e95827f531d5ef"}, - {file = "aiohttp-3.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:66bf9234e08fe561dccd62083bf67400bdbf1c67ba9efdc3dac03650e97c6088"}, - {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c6a4e5e40156d72a40241a25cc226051c0a8d816610097a8e8f517aeacd59a2"}, - {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c634a3207a5445be65536d38c13791904fda0748b9eabf908d3fe86a52941cf"}, - {file = "aiohttp-3.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4aff049b5e629ef9b3e9e617fa6e2dfeda1bf87e01bcfecaf3949af9e210105e"}, - {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1942244f00baaacaa8155eca94dbd9e8cc7017deb69b75ef67c78e89fdad3c77"}, - {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04a1f2a65ad2f93aa20f9ff9f1b672bf912413e5547f60749fa2ef8a644e061"}, - {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f2bfc0032a00405d4af2ba27f3c429e851d04fad1e5ceee4080a1c570476697"}, - {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:424ae21498790e12eb759040bbb504e5e280cab64693d14775c54269fd1d2bb7"}, - {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:975218eee0e6d24eb336d0328c768ebc5d617609affaca5dbbd6dd1984f16ed0"}, - {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4120d7fefa1e2d8fb6f650b11489710091788de554e2b6f8347c7a20ceb003f5"}, - {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b90078989ef3fc45cf9221d3859acd1108af7560c52397ff4ace8ad7052a132e"}, - {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ba5a8b74c2a8af7d862399cdedce1533642fa727def0b8c3e3e02fcb52dca1b1"}, - {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:02594361128f780eecc2a29939d9dfc870e17b45178a867bf61a11b2a4367277"}, - {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8fb4fc029e135859f533025bc82047334e24b0d489e75513144f25408ecaf058"}, - {file = "aiohttp-3.10.5-cp311-cp311-win32.whl", hash = "sha256:e1ca1ef5ba129718a8fc827b0867f6aa4e893c56eb00003b7367f8a733a9b072"}, - {file = "aiohttp-3.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:349ef8a73a7c5665cca65c88ab24abe75447e28aa3bc4c93ea5093474dfdf0ff"}, - {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:305be5ff2081fa1d283a76113b8df7a14c10d75602a38d9f012935df20731487"}, - {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3a1c32a19ee6bbde02f1cb189e13a71b321256cc1d431196a9f824050b160d5a"}, - {file = "aiohttp-3.10.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:61645818edd40cc6f455b851277a21bf420ce347baa0b86eaa41d51ef58ba23d"}, - {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c225286f2b13bab5987425558baa5cbdb2bc925b2998038fa028245ef421e75"}, - {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ba01ebc6175e1e6b7275c907a3a36be48a2d487549b656aa90c8a910d9f3178"}, - {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8eaf44ccbc4e35762683078b72bf293f476561d8b68ec8a64f98cf32811c323e"}, - {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c43eb1ab7cbf411b8e387dc169acb31f0ca0d8c09ba63f9eac67829585b44f"}, - {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de7a5299827253023c55ea549444e058c0eb496931fa05d693b95140a947cb73"}, - {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4790f0e15f00058f7599dab2b206d3049d7ac464dc2e5eae0e93fa18aee9e7bf"}, - {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:44b324a6b8376a23e6ba25d368726ee3bc281e6ab306db80b5819999c737d820"}, - {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0d277cfb304118079e7044aad0b76685d30ecb86f83a0711fc5fb257ffe832ca"}, - {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:54d9ddea424cd19d3ff6128601a4a4d23d54a421f9b4c0fff740505813739a91"}, - {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4f1c9866ccf48a6df2b06823e6ae80573529f2af3a0992ec4fe75b1a510df8a6"}, - {file = "aiohttp-3.10.5-cp312-cp312-win32.whl", hash = "sha256:dc4826823121783dccc0871e3f405417ac116055bf184ac04c36f98b75aacd12"}, - {file = "aiohttp-3.10.5-cp312-cp312-win_amd64.whl", hash = "sha256:22c0a23a3b3138a6bf76fc553789cb1a703836da86b0f306b6f0dc1617398abc"}, - {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7f6b639c36734eaa80a6c152a238242bedcee9b953f23bb887e9102976343092"}, - {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f29930bc2921cef955ba39a3ff87d2c4398a0394ae217f41cb02d5c26c8b1b77"}, - {file = "aiohttp-3.10.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f489a2c9e6455d87eabf907ac0b7d230a9786be43fbe884ad184ddf9e9c1e385"}, - {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:123dd5b16b75b2962d0fff566effb7a065e33cd4538c1692fb31c3bda2bfb972"}, - {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b98e698dc34966e5976e10bbca6d26d6724e6bdea853c7c10162a3235aba6e16"}, - {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3b9162bab7e42f21243effc822652dc5bb5e8ff42a4eb62fe7782bcbcdfacf6"}, - {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1923a5c44061bffd5eebeef58cecf68096e35003907d8201a4d0d6f6e387ccaa"}, - {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55f011da0a843c3d3df2c2cf4e537b8070a419f891c930245f05d329c4b0689"}, - {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:afe16a84498441d05e9189a15900640a2d2b5e76cf4efe8cbb088ab4f112ee57"}, - {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8112fb501b1e0567a1251a2fd0747baae60a4ab325a871e975b7bb67e59221f"}, - {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1e72589da4c90337837fdfe2026ae1952c0f4a6e793adbbfbdd40efed7c63599"}, - {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:4d46c7b4173415d8e583045fbc4daa48b40e31b19ce595b8d92cf639396c15d5"}, - {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33e6bc4bab477c772a541f76cd91e11ccb6d2efa2b8d7d7883591dfb523e5987"}, - {file = "aiohttp-3.10.5-cp313-cp313-win32.whl", hash = "sha256:c58c6837a2c2a7cf3133983e64173aec11f9c2cd8e87ec2fdc16ce727bcf1a04"}, - {file = "aiohttp-3.10.5-cp313-cp313-win_amd64.whl", hash = "sha256:38172a70005252b6893088c0f5e8a47d173df7cc2b2bd88650957eb84fcf5022"}, - {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f6f18898ace4bcd2d41a122916475344a87f1dfdec626ecde9ee802a711bc569"}, - {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5ede29d91a40ba22ac1b922ef510aab871652f6c88ef60b9dcdf773c6d32ad7a"}, - {file = "aiohttp-3.10.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:673f988370f5954df96cc31fd99c7312a3af0a97f09e407399f61583f30da9bc"}, - {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58718e181c56a3c02d25b09d4115eb02aafe1a732ce5714ab70326d9776457c3"}, - {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b38b1570242fbab8d86a84128fb5b5234a2f70c2e32f3070143a6d94bc854cf"}, - {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:074d1bff0163e107e97bd48cad9f928fa5a3eb4b9d33366137ffce08a63e37fe"}, - {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd31f176429cecbc1ba499d4aba31aaccfea488f418d60376b911269d3b883c5"}, - {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7384d0b87d4635ec38db9263e6a3f1eb609e2e06087f0aa7f63b76833737b471"}, - {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8989f46f3d7ef79585e98fa991e6ded55d2f48ae56d2c9fa5e491a6e4effb589"}, - {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c83f7a107abb89a227d6c454c613e7606c12a42b9a4ca9c5d7dad25d47c776ae"}, - {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cde98f323d6bf161041e7627a5fd763f9fd829bcfcd089804a5fdce7bb6e1b7d"}, - {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:676f94c5480d8eefd97c0c7e3953315e4d8c2b71f3b49539beb2aa676c58272f"}, - {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2d21ac12dc943c68135ff858c3a989f2194a709e6e10b4c8977d7fcd67dfd511"}, - {file = "aiohttp-3.10.5-cp38-cp38-win32.whl", hash = "sha256:17e997105bd1a260850272bfb50e2a328e029c941c2708170d9d978d5a30ad9a"}, - {file = "aiohttp-3.10.5-cp38-cp38-win_amd64.whl", hash = "sha256:1c19de68896747a2aa6257ae4cf6ef59d73917a36a35ee9d0a6f48cff0f94db8"}, - {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7e2fe37ac654032db1f3499fe56e77190282534810e2a8e833141a021faaab0e"}, - {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5bf3ead3cb66ab990ee2561373b009db5bc0e857549b6c9ba84b20bc462e172"}, - {file = "aiohttp-3.10.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1b2c16a919d936ca87a3c5f0e43af12a89a3ce7ccbce59a2d6784caba945b68b"}, - {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad146dae5977c4dd435eb31373b3fe9b0b1bf26858c6fc452bf6af394067e10b"}, - {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c5c6fa16412b35999320f5c9690c0f554392dc222c04e559217e0f9ae244b92"}, - {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:95c4dc6f61d610bc0ee1edc6f29d993f10febfe5b76bb470b486d90bbece6b22"}, - {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da452c2c322e9ce0cfef392e469a26d63d42860f829026a63374fde6b5c5876f"}, - {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:898715cf566ec2869d5cb4d5fb4be408964704c46c96b4be267442d265390f32"}, - {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:391cc3a9c1527e424c6865e087897e766a917f15dddb360174a70467572ac6ce"}, - {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:380f926b51b92d02a34119d072f178d80bbda334d1a7e10fa22d467a66e494db"}, - {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce91db90dbf37bb6fa0997f26574107e1b9d5ff939315247b7e615baa8ec313b"}, - {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9093a81e18c45227eebe4c16124ebf3e0d893830c6aca7cc310bfca8fe59d857"}, - {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ee40b40aa753d844162dcc80d0fe256b87cba48ca0054f64e68000453caead11"}, - {file = "aiohttp-3.10.5-cp39-cp39-win32.whl", hash = "sha256:03f2645adbe17f274444953bdea69f8327e9d278d961d85657cb0d06864814c1"}, - {file = "aiohttp-3.10.5-cp39-cp39-win_amd64.whl", hash = "sha256:d17920f18e6ee090bdd3d0bfffd769d9f2cb4c8ffde3eb203777a3895c128862"}, - {file = "aiohttp-3.10.5.tar.gz", hash = "sha256:f071854b47d39591ce9a17981c46790acb30518e2f83dfca8db2dfa091178691"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8b3fb28a9ac8f2558760d8e637dbf27aef1e8b7f1d221e8669a1074d1a266bb2"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91aa966858593f64c8a65cdefa3d6dc8fe3c2768b159da84c1ddbbb2c01ab4ef"}, + {file = "aiohttp-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63649309da83277f06a15bbdc2a54fbe75efb92caa2c25bb57ca37762789c746"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e7fabedb3fe06933f47f1538df7b3a8d78e13d7167195f51ca47ee12690373"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c070430fda1a550a1c3a4c2d7281d3b8cfc0c6715f616e40e3332201a253067"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d0a4901b27272ae54e42067bc4b9a90e619a690b4dc43ea5950eb3070afc32"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fec5fac7aea6c060f317f07494961236434928e6f4374e170ef50b3001e14581"}, + {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:172ad884bb61ad31ed7beed8be776eb17e7fb423f1c1be836d5cb357a096bf12"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d646fdd74c25bbdd4a055414f0fe32896c400f38ffbdfc78c68e62812a9e0257"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e86260b76786c28acf0b5fe31c8dca4c2add95098c709b11e8c35b424ebd4f5b"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d7cafc11d70fdd8801abfc2ff276744ae4cb39d8060b6b542c7e44e5f2cfc2"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc262c3df78c8ff6020c782d9ce02e4bcffe4900ad71c0ecdad59943cba54442"}, + {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:482c85cf3d429844396d939b22bc2a03849cb9ad33344689ad1c85697bcba33a"}, + {file = "aiohttp-3.10.9-cp310-cp310-win32.whl", hash = "sha256:aeebd3061f6f1747c011e1d0b0b5f04f9f54ad1a2ca183e687e7277bef2e0da2"}, + {file = "aiohttp-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:fa430b871220dc62572cef9c69b41e0d70fcb9d486a4a207a5de4c1f25d82593"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16e6a51d8bc96b77f04a6764b4ad03eeef43baa32014fce71e882bd71302c7e4"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8bd9125dd0cc8ebd84bff2be64b10fdba7dc6fd7be431b5eaf67723557de3a31"}, + {file = "aiohttp-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dcf354661f54e6a49193d0b5653a1b011ba856e0b7a76bda2c33e4c6892f34ea"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42775de0ca04f90c10c5c46291535ec08e9bcc4756f1b48f02a0657febe89b10"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d1e4185c5d7187684d41ebb50c9aeaaaa06ca1875f4c57593071b0409d2444"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2695c61cf53a5d4345a43d689f37fc0f6d3a2dc520660aec27ec0f06288d1f9"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a3f063b41cc06e8d0b3fcbbfc9c05b7420f41287e0cd4f75ce0a1f3d80729e6"}, + {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d37f4718002863b82c6f391c8efd4d3a817da37030a29e2682a94d2716209de"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2746d8994ebca1bdc55a1e998feff4e94222da709623bb18f6e5cfec8ec01baf"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6f3c6648aa123bcd73d6f26607d59967b607b0da8ffcc27d418a4b59f4c98c7c"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:558b3d223fd631ad134d89adea876e7fdb4c93c849ef195049c063ada82b7d08"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4e6cb75f8ddd9c2132d00bc03c9716add57f4beff1263463724f6398b813e7eb"}, + {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:608cecd8d58d285bfd52dbca5b6251ca8d6ea567022c8a0eaae03c2589cd9af9"}, + {file = "aiohttp-3.10.9-cp311-cp311-win32.whl", hash = "sha256:36d4fba838be5f083f5490ddd281813b44d69685db910907636bc5dca6322316"}, + {file = "aiohttp-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:8be1a65487bdfc285bd5e9baf3208c2132ca92a9b4020e9f27df1b16fab998a9"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4fd16b30567c5b8e167923be6e027eeae0f20cf2b8a26b98a25115f28ad48ee0"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40ff5b7660f903dc587ed36ef08a88d46840182d9d4b5694e7607877ced698a1"}, + {file = "aiohttp-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4edc3fd701e2b9a0d605a7b23d3de4ad23137d23fc0dbab726aa71d92f11aaaf"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e525b69ee8a92c146ae5b4da9ecd15e518df4d40003b01b454ad694a27f498b5"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5002a02c17fcfd796d20bac719981d2fca9c006aac0797eb8f430a58e9d12431"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4ceeae2fb8cabdd1b71c82bfdd39662473d3433ec95b962200e9e752fb70d0"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6e395c3d1f773cf0651cd3559e25182eb0c03a2777b53b4575d8adc1149c6e9"}, + {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbdb8def5268f3f9cd753a265756f49228a20ed14a480d151df727808b4531dd"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f82ace0ec57c94aaf5b0e118d4366cff5889097412c75aa14b4fd5fc0c44ee3e"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6ebdc3b3714afe1b134b3bbeb5f745eed3ecbcff92ab25d80e4ef299e83a5465"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ca09414003c0e96a735daa1f071f7d7ed06962ef4fa29ceb6c80d06696d900"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1298b854fd31d0567cbb916091be9d3278168064fca88e70b8468875ef9ff7e7"}, + {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60ad5b8a7452c0f5645c73d4dad7490afd6119d453d302cd5b72b678a85d6044"}, + {file = "aiohttp-3.10.9-cp312-cp312-win32.whl", hash = "sha256:1a0ee6c0d590c917f1b9629371fce5f3d3f22c317aa96fbdcce3260754d7ea21"}, + {file = "aiohttp-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:c46131c6112b534b178d4e002abe450a0a29840b61413ac25243f1291613806a"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2bd9f3eac515c16c4360a6a00c38119333901b8590fe93c3257a9b536026594d"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8cc0d13b4e3b1362d424ce3f4e8c79e1f7247a00d792823ffd640878abf28e56"}, + {file = "aiohttp-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba1a599255ad6a41022e261e31bc2f6f9355a419575b391f9655c4d9e5df5ff5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:776e9f3c9b377fcf097c4a04b241b15691e6662d850168642ff976780609303c"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8debb45545ad95b58cc16c3c1cc19ad82cffcb106db12b437885dbee265f0ab5"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2555e4949c8d8782f18ef20e9d39730d2656e218a6f1a21a4c4c0b56546a02e"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54dc329cd44f7f7883a9f4baaefe686e8b9662e2c6c184ea15cceee587d8d69"}, + {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e709d6ac598c5416f879bb1bae3fd751366120ac3fa235a01de763537385d036"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:17c272cfe7b07a5bb0c6ad3f234e0c336fb53f3bf17840f66bd77b5815ab3d16"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0c21c82df33b264216abffff9f8370f303dab65d8eee3767efbbd2734363f677"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9331dd34145ff105177855017920dde140b447049cd62bb589de320fd6ddd582"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ac3196952c673822ebed8871cf8802e17254fff2a2ed4835d9c045d9b88c5ec7"}, + {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c33fa6e10bb7ed262e3ff03cc69d52869514f16558db0626a7c5c61dde3c29f"}, + {file = "aiohttp-3.10.9-cp313-cp313-win32.whl", hash = "sha256:a14e4b672c257a6b94fe934ee62666bacbc8e45b7876f9dd9502d0f0fe69db16"}, + {file = "aiohttp-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:a35ed3d03910785f7d9d6f5381f0c24002b2b888b298e6f941b2fc94c5055fcd"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f392ef50e22c31fa49b5a46af7f983fa3f118f3eccb8522063bee8bfa6755f8"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d1f5c9169e26db6a61276008582d945405b8316aae2bb198220466e68114a0f5"}, + {file = "aiohttp-3.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9d10d10ec27c0d46ddaecc3c5598c4db9ce4e6398ca872cdde0525765caa2f"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97273a52d7f89a75b11ec386f786d3da7723d7efae3034b4dda79f6f093edc1"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d271f770b52e32236d945911b2082f9318e90ff835d45224fa9e28374303f729"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7003f33f5f7da1eb02f0446b0f8d2ccf57d253ca6c2e7a5732d25889da82b517"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6e00c8a92e7663ed2be6fcc08a2997ff06ce73c8080cd0df10cc0321a3168d7"}, + {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a61df62966ce6507aafab24e124e0c3a1cfbe23c59732987fc0fd0d71daa0b88"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:60555211a006d26e1a389222e3fab8cd379f28e0fbf7472ee55b16c6c529e3a6"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d15a29424e96fad56dc2f3abed10a89c50c099f97d2416520c7a543e8fddf066"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:a19caae0d670771ea7854ca30df76f676eb47e0fd9b2ee4392d44708f272122d"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:99f9678bf0e2b1b695e8028fedac24ab6770937932eda695815d5a6618c37e04"}, + {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2914caa46054f3b5ff910468d686742ff8cff54b8a67319d75f5d5945fd0a13d"}, + {file = "aiohttp-3.10.9-cp38-cp38-win32.whl", hash = "sha256:0bc059ecbce835630e635879f5f480a742e130d9821fbe3d2f76610a6698ee25"}, + {file = "aiohttp-3.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:e883b61b75ca6efc2541fcd52a5c8ccfe288b24d97e20ac08fdf343b8ac672ea"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fcd546782d03181b0b1d20b43d612429a90a68779659ba8045114b867971ab71"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:85711eec2d875cd88c7eb40e734c4ca6d9ae477d6f26bd2b5bb4f7f60e41b156"}, + {file = "aiohttp-3.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02d1d6610588bcd743fae827bd6f2e47e0d09b346f230824b4c6fb85c6065f9c"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3668d0c2a4d23fb136a753eba42caa2c0abbd3d9c5c87ee150a716a16c6deec1"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7c071235a47d407b0e93aa6262b49422dbe48d7d8566e1158fecc91043dd948"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac74e794e3aee92ae8f571bfeaa103a141e409863a100ab63a253b1c53b707eb"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbf94d4a0447705b7775417ca8bb8086cc5482023a6e17cdc8f96d0b1b5aba6"}, + {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb0b2d5d51f96b6cc19e6ab46a7b684be23240426ae951dcdac9639ab111b45e"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e83dfefb4f7d285c2d6a07a22268344a97d61579b3e0dce482a5be0251d672ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f0a44bb40b6aaa4fb9a5c1ee07880570ecda2065433a96ccff409c9c20c1624a"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c2b627d3c8982691b06d89d31093cee158c30629fdfebe705a91814d49b554f8"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:03690541e4cc866eef79626cfa1ef4dd729c5c1408600c8cb9e12e1137eed6ab"}, + {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad3675c126f2a95bde637d162f8231cff6bc0bc9fbe31bd78075f9ff7921e322"}, + {file = "aiohttp-3.10.9-cp39-cp39-win32.whl", hash = "sha256:1321658f12b6caffafdc35cfba6c882cb014af86bef4e78c125e7e794dfb927b"}, + {file = "aiohttp-3.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:9fdf5c839bf95fc67be5794c780419edb0dbef776edcfc6c2e5e2ffd5ee755fa"}, + {file = "aiohttp-3.10.9.tar.gz", hash = "sha256:143b0026a9dab07a05ad2dd9e46aa859bffdd6348ddc5967b42161168c24f857"}, ] [package.dependencies] @@ -118,7 +118,7 @@ async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""} attrs = ">=17.3.0" frozenlist = ">=1.1.1" multidict = ">=4.5,<7.0" -yarl = ">=1.0,<2.0" +yarl = ">=1.12.0,<2.0" [package.extras] speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] @@ -183,13 +183,13 @@ files = [ [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = true -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, + {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, ] [package.dependencies] @@ -199,9 +199,9 @@ sniffio = ">=1.1" typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "async-timeout" @@ -319,33 +319,33 @@ lxml = ["lxml"] [[package]] name = "black" -version = "24.8.0" +version = "24.10.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, - {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, - {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, - {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, - {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, - {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, - {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, - {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, - {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, - {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, - {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, - {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, - {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, - {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, - {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, - {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, - {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, - {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, - {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, - {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, - {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, - {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, ] [package.dependencies] @@ -359,7 +359,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -381,13 +381,13 @@ wcwidth = ">=0.1.4" [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] @@ -403,13 +403,13 @@ files = [ [[package]] name = "cattrs" -version = "24.1.0" +version = "24.1.2" description = "Composable complex class support for attrs and dataclasses." optional = false python-versions = ">=3.8" files = [ - {file = "cattrs-24.1.0-py3-none-any.whl", hash = "sha256:043bb8af72596432a7df63abcff0055ac0f198a4d2e95af8db5a936a7074a761"}, - {file = "cattrs-24.1.0.tar.gz", hash = "sha256:8274f18b253bf7674a43da851e3096370d67088165d23138b04a1c04c8eaf48e"}, + {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, + {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, ] [package.dependencies] @@ -440,78 +440,78 @@ files = [ [[package]] name = "cffi" -version = "1.17.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, - {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, - {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, - {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, - {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, - {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, - {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, - {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, - {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, - {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, - {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, - {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, - {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, - {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, - {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, - {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -643,13 +643,13 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "codeflash" -version = "0.6.19" +version = "0.6.22" description = "Client for codeflash.ai - automatic code performance optimization, powered by AI" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "codeflash-0.6.19-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f4e19b78ef4dfbbbaeab6d953422027a6e9120545de0657e70adfe23a3fdb51a"}, - {file = "codeflash-0.6.19.tar.gz", hash = "sha256:0cb61aec565b286b1d5fcaa64e55f3e91e03bd6154e03c718c086186c30040da"}, + {file = "codeflash-0.6.22-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:0c5d6feba9f12449abec9db7fe99b941ad14ce49d572d99c40e9896d890d982e"}, + {file = "codeflash-0.6.22.tar.gz", hash = "sha256:d5d4d0866fac368e0f7a67d2d196c245a0caff772786a2b75eb4e482bd801dd0"}, ] [package.dependencies] @@ -879,115 +879,105 @@ toml = ["tomli"] [[package]] name = "cramjam" -version = "2.8.3" +version = "2.8.4" description = "Thin Python bindings to de/compression algorithms in Rust" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cramjam-2.8.3-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8c8aa6d08c135ae7f0da01e6559a332c5d8fe4989a594db401040e385d04dffd"}, - {file = "cramjam-2.8.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bd8c601fe8717e52517a2f2eef78217086acf449627bfdda97e3f53fd79c92af"}, - {file = "cramjam-2.8.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dac42b2b4c3950e7eda9b5551e0e904784ed0c0428accc29171c230fb919ec72"}, - {file = "cramjam-2.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab8146faa5d8c52edf23724843c36469fc32ff2c4a174eba72f4da6de5016688"}, - {file = "cramjam-2.8.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb5f4d061e9abdc6663551446c332a58c101efb31fd1746229872600274c2b20"}, - {file = "cramjam-2.8.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d1ac94e00c64258330105473c641441db02b4dc3e9e9f2963d204e53ed93025"}, - {file = "cramjam-2.8.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ed658f36a2bf667d5b8c7c6690103ad99f81cc62a1b64891b69298447329d4b"}, - {file = "cramjam-2.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f6303c8cc583dfe5054cf84717674f75b18bca4ae8e576dc863958d5494dc4b"}, - {file = "cramjam-2.8.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:04b31d427a8902e5c2eec4b8f29873de7a3ade202e3d68e7f2354b9f0aa00bc7"}, - {file = "cramjam-2.8.3-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:9728861bc0390681824961778b36f7f0b95039e8b90d46f1b67f51232f1ee159"}, - {file = "cramjam-2.8.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:87e26e3e1d5fed1cac5b41be648d0daf0793f94cf4a7aebefce1f4f6656e2d21"}, - {file = "cramjam-2.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1d2d39c2193a77c5e5b327944f90e6ecf2caa1b55e7176cc83d80706ea15de"}, - {file = "cramjam-2.8.3-cp310-none-win32.whl", hash = "sha256:6721edd8f911ad84db83ee4902b7579fc01c55849062f3f1f4171b58fccf98eb"}, - {file = "cramjam-2.8.3-cp310-none-win_amd64.whl", hash = "sha256:4f7c16d358df366e308137411125a2bb50d1b19924fced3a390898fa8c9a074d"}, - {file = "cramjam-2.8.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:24c2b426dd8fafb894f93a88f42e2827e14199d66836cb100582037e5371c724"}, - {file = "cramjam-2.8.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:007aa9444cb27b8691baae73ca907133cd939987438f874774011b4c740732dd"}, - {file = "cramjam-2.8.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:29987b54e31efed66738e8f236c597c4c9a91ec9d57bcb74307712e07505b4bb"}, - {file = "cramjam-2.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65bfd41aa92c0025f32ba09214b48e9367a81122586b2617439b4327c4bd179c"}, - {file = "cramjam-2.8.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7337bd8218bd8508f35904274a38cce843a237fe6e23104238bbeb2f337107ed"}, - {file = "cramjam-2.8.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:269f94d2efe6b6a97624782cd3b541e60535dd5874f4a8d5d0ba66ef59424ae3"}, - {file = "cramjam-2.8.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bec9ca5431c32ba94996b7c1c56695b37d48713b97ee1d2a456f4046f009e82f"}, - {file = "cramjam-2.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cb64a97e625ca029b55e37769b8c354e64cbea042c75471915dc385935d30ed"}, - {file = "cramjam-2.8.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c28830ecf76501356d678dac4f37563554ec1c651a53a990cdf595f7ed75c651"}, - {file = "cramjam-2.8.3-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35647a0e37a4dfec85a44c7966ae476b7db0e6cd65d91c08f1fb3007ed774d92"}, - {file = "cramjam-2.8.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e954599c6369f429a868852eff453b894d88866acba439b65131ea93f5400b47"}, - {file = "cramjam-2.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:86e238b6de79e045f5197df2c9dfaf8d10b37a6517ff4ffc4775fe5a3cf4d4a4"}, - {file = "cramjam-2.8.3-cp311-none-win32.whl", hash = "sha256:fe6434d3ee0899bc9396801d1abbc5d1fe77662bd3d1f1c1573fac6708459138"}, - {file = "cramjam-2.8.3-cp311-none-win_amd64.whl", hash = "sha256:e8ec1d4f27eb9d0412f0c567e7ffd14fbeb2b318a1ac394d5de4047c431fe94c"}, - {file = "cramjam-2.8.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:24990be4010b2185dcecc67133cd727657036e7b132d7de598148f5b1eb8e452"}, - {file = "cramjam-2.8.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:572cb9a8dc5a189691d6e03a9bf9b4305fd9a9f36bb0f9fde55fc36837c2e6b3"}, - {file = "cramjam-2.8.3-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9efe6915aa7ef176f3a7f42a4e46504573215953331b139abefd20d07d8aba82"}, - {file = "cramjam-2.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe84440100e7045190da7f80219be9989b0b6db6acadb3ae9cfe0935d93ebf8c"}, - {file = "cramjam-2.8.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00524bb23f4abb3a3bfff08aa32b9274843170c5b43855807e0f59670e2ac98c"}, - {file = "cramjam-2.8.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ab67f29094165f0771acad8dd16e840259cfedcc94067af229530496dbf1a24c"}, - {file = "cramjam-2.8.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:be6fb5dd5bf1c89c717a73a1057505959f35c08e0e97a76d4cc6391b90d2263b"}, - {file = "cramjam-2.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93b42d22bf3e17290c5e4cf58e715a419330bb5255c35933c14db82ecf3872c"}, - {file = "cramjam-2.8.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:afa065bab70e27565695441f69f493af3d379b8723030f2c3d2547d2e312a4be"}, - {file = "cramjam-2.8.3-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:832224f52fa1e601e0ab678dba9bdfde3686fc4cd1a9f2ed4748f29eaf1cb553"}, - {file = "cramjam-2.8.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:962b7106287bcc463150766b5b8c69f32dcc69713a8dbce00e0ca6936f95c55b"}, - {file = "cramjam-2.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2be92c6f0bcffaf8ea6a8164fe0388a188fec2fa9eff1828e8b64dc3a83740f9"}, - {file = "cramjam-2.8.3-cp312-none-win32.whl", hash = "sha256:080f3eb7b648f5ba9d35084d8dddc68246a8f365df239792f6712908f0aa568e"}, - {file = "cramjam-2.8.3-cp312-none-win_amd64.whl", hash = "sha256:c14728e3360cd212d5b606ca703c3bd1c8912efcdbc1aa032c81c2882509ebd5"}, - {file = "cramjam-2.8.3-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:c7e8329cde48740df8d332dade2f52b74612b8ea86005341c99bb192c82a5ce7"}, - {file = "cramjam-2.8.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77346ac669f5445d14b74476a4e8f3a259fd22681bd73790e92b8956d7e225fc"}, - {file = "cramjam-2.8.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:274878883e7fadf95a6b5bc58f9c1dd39fef2c31d68e18a0fb8594226457fba7"}, - {file = "cramjam-2.8.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7871e1fd3ee8ca16799ba22d49fc1e52e78976fa8c659be41630eeb2914475a7"}, - {file = "cramjam-2.8.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:345a952c5d4b922830efaa67dc0b42d21e18c182c1a1bda6d20bb78235f31d6f"}, - {file = "cramjam-2.8.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb5d7739e2bc573ade12327ef7717b1ac5876c62938fab20eb54d762da23cae2"}, - {file = "cramjam-2.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440a18fd4ae42e06dbbd7aee91d8248b61da9fef7610ffbd553d1ba93931394b"}, - {file = "cramjam-2.8.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:476890974229713fc7b4c16fb050b756ba926c67e4d1200b3e03c5c051e9b552"}, - {file = "cramjam-2.8.3-cp37-cp37m-musllinux_1_1_armv7l.whl", hash = "sha256:771b44e549f90b5532508782e25d1c40b8054dd83d52253d05945fc05836b252"}, - {file = "cramjam-2.8.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d824fd98364bc946c38ed324a3ec7befba055285aaf2c1ca61894bb7616226e8"}, - {file = "cramjam-2.8.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2476828dea4089aa3cb9160391f8b36f793ca651afdcba80de1e341373928397"}, - {file = "cramjam-2.8.3-cp37-none-win32.whl", hash = "sha256:4a554bcfd068e831affd64a4f067c7c9b00b359742597c4fdadd18ff673baf30"}, - {file = "cramjam-2.8.3-cp37-none-win_amd64.whl", hash = "sha256:246f1f7d32cac2b64617d2dddba11a82851e73cdcf9d1abb799b08dcd9d2ea49"}, - {file = "cramjam-2.8.3-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:bc8f24c32124bb47536882c6b941cdb88cc16e4fa64d5bf347cb8dd72a193fc3"}, - {file = "cramjam-2.8.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:28c30078effc100739d3f9b227276a8360c1b32aac65efb4f641630552213548"}, - {file = "cramjam-2.8.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef0173fb457f73cf9c2553092419db0eba4d582890db95e542a4d93e11340421"}, - {file = "cramjam-2.8.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a1943f2cc0deee037ddcf92beff6049e12d4e6d557f568ddf59fb3b848f2152"}, - {file = "cramjam-2.8.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5023a737d8d9cf5d123e6d87d088929c3cfb2aae90e0f584204427f74882150a"}, - {file = "cramjam-2.8.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eec7e985f35708c234542721863d82781d0f7f6a71b45e14ce6d2625d4b131d"}, - {file = "cramjam-2.8.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b188e750b95172c01defcfcfbba629cad797718b34402ec61b3bc9ff99403599"}, - {file = "cramjam-2.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e2d745cd4d244b7973d15aaebeedb537b980f9d3da80e6dea75ee1a872f9fa"}, - {file = "cramjam-2.8.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c9d54a4aa475d5e902f2ee518bdaa02f26c089e9f72950d00d1643c090f0deb3"}, - {file = "cramjam-2.8.3-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:19b8c97350c8d65daea26267dd1becb59073569aac2ae5743952d7f48da5d37a"}, - {file = "cramjam-2.8.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3277fd42399755d6d3730edec4a192174ee64d219e0ffbc90613f15cbabf711f"}, - {file = "cramjam-2.8.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1fd25201f1278dc6faa2ae35e67b7a5bb352b7fc6ed1ee939637414ca8115863"}, - {file = "cramjam-2.8.3-cp38-none-win32.whl", hash = "sha256:594477faff7f4380fa123cfbcf10ab8ee5af1a28b95750b66931ffafcb11ab5c"}, - {file = "cramjam-2.8.3-cp38-none-win_amd64.whl", hash = "sha256:8ea1dc11538842ff20d9872a17214994f5913cbf3be5594b54aad2422becdf19"}, - {file = "cramjam-2.8.3-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:6379b92912f7569e126bd48d10e7087ddd20ea88a939532e3c4a85c2fa05d600"}, - {file = "cramjam-2.8.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:11d2e9eebc7d202eda0ae09fb56a2cdbeb5a1563e89d2118bf18cf0030f35f77"}, - {file = "cramjam-2.8.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d5a0a2fe240c97587df07f3d5e1027673d599b3a6a7a0ab540aea69f09e9ff7a"}, - {file = "cramjam-2.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba542f07fe3f41475d78626973533539e6cf2d5b6af37923fe6c7e7f0f74b9b2"}, - {file = "cramjam-2.8.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1374fe9a4431e546bb4501a16b84875d0bf80fc4e6c8942f0d5608ae48474267"}, - {file = "cramjam-2.8.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dcf7791e1cedb982ccc873ec9392c6cfb9c714a64ebf1ed4e8310b9cb44655f2"}, - {file = "cramjam-2.8.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:990e65c2bf1c155a9ddec5ecabf431cf77596432f697d3c6e0831b5174c51c40"}, - {file = "cramjam-2.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9b244d04cef82872d12c227a2f202f080a454d664c05db351626e6ad4aaa307"}, - {file = "cramjam-2.8.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:80b088d15866b37851fd53e2b471becc9ec487257dceca1878621072a18e833e"}, - {file = "cramjam-2.8.3-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:f667843e7a8fca208eecfe44e04088242f8ca60d74d4950fac3722043538d700"}, - {file = "cramjam-2.8.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6f838d06d06709b9ce8b1ceae36aea4e1c7e613365185a91edcbeb5884f5e606"}, - {file = "cramjam-2.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4822eb5fe6839cd3d0439e5431e766ad010b2a388ca9617aa6372b6030897782"}, - {file = "cramjam-2.8.3-cp39-none-win32.whl", hash = "sha256:67e09b42e744efd08b93ac56f6100a859a31617d7146725516f3f2c744149d97"}, - {file = "cramjam-2.8.3-cp39-none-win_amd64.whl", hash = "sha256:11c9d30bc53892c57a3b296756c23659323ab1419a2b4bf22bbafc07b247bb67"}, - {file = "cramjam-2.8.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:51e847dcfe74fba379fed2bc2b45f5c2f11c3ece5e9eebcf63f39a9594184588"}, - {file = "cramjam-2.8.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07af94191f6a245226dc8a8bc6c94808e382ce9dfcca4bab0e8015fbc7fc3322"}, - {file = "cramjam-2.8.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc9c45469914099897c47bfc501616fb377f28a865adebf90ea6f3c8ae6dd4e6"}, - {file = "cramjam-2.8.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ef29fb916fe74be65d0ab8871ab8d964b0f5eb8028bb84b325be43675a59d6e7"}, - {file = "cramjam-2.8.3-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3850dac9a2f6dcb3249d23f9d505117643b967bdc1c572ed0cc492a48fd69daf"}, - {file = "cramjam-2.8.3-pp310-pypy310_pp73-musllinux_1_1_i686.whl", hash = "sha256:e23e323ad28ed3e4e3a24ceffdab0ff235954109a88b536ea7b3b7886bd0a536"}, - {file = "cramjam-2.8.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1ba1a8ff855b30b4069a9b45ea9e7f2b5d882c7953bdfccda8d4b275fa7057ce"}, - {file = "cramjam-2.8.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eea606b01b43b91626e3aafd463bd19b6ed739bdb8b2b309e5d7ff72afc0e89d"}, - {file = "cramjam-2.8.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:97c706c520c3f8b0184278cc86187528458350216c6e4fa85d3f16bcad0d365d"}, - {file = "cramjam-2.8.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d08f1bab949ffd6dd6f25a89e4f7062d147aeea9c067e4dd155bdb190e5a519"}, - {file = "cramjam-2.8.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba1e45074757ab0482ac544e60613b6b8658100ac9985c91868a4598cdfb63ba"}, - {file = "cramjam-2.8.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:a2fededed05a042f093dbf1b11d69afb1874a2c9197fcf1d58c142ba9111db5a"}, - {file = "cramjam-2.8.3-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:fc0c6eb8185c68f79a25bb298825e345cc09b826f5828bd8146e3600ca6e9981"}, - {file = "cramjam-2.8.3-pp39-pypy39_pp73-musllinux_1_1_i686.whl", hash = "sha256:6653c262ad71e6c0ae08eeca3af2ee89ad47483b6312f2c6094518cb77872406"}, - {file = "cramjam-2.8.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:6c04f363cb4b316719421724521432b6e7f6490e5baaaf7692af961c28d0279b"}, - {file = "cramjam-2.8.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e30f1f00de913b440baa36647817b9b7120a69b04eca05f3354aaf5b40f95ee5"}, - {file = "cramjam-2.8.3.tar.gz", hash = "sha256:6b1fa0a6ea8183831d04572597c182bd6cece62d583a36cde1e6a86e72ce2389"}, + {file = "cramjam-2.8.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e9e112514363261a896f85948d5d055dccaab2a1fa77d440f55030464118a95a"}, + {file = "cramjam-2.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee2441028e813ecc1d10b90640dd2b9649cdefdfe80af1d838cf00fd935ee5e7"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:86a3e0f91176eacd23f8d63b01139a63687cb3fa9670996b3bfa7c38eac6cb7e"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e34aa083a10079c8814091c0fe9080238a82569fa08058cf79d12b3f9710fc5"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:465ccf470536e065822daa2a083dedf18df8133278e9132b147bd1721211d707"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30aba9e9c737c986d26a809b9e36628452c075234a5e835b085ab7c2b9574dc"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:52f710bd7fa9b5a374e2e2281d7d672f9eb89263c531643f95fab93e98200c68"}, + {file = "cramjam-2.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6622095ffa6cae77c9e8036a39757fdb1d3cabc3444ad892e5a705882ed06c8d"}, + {file = "cramjam-2.8.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bc618c018594c20696a42faf8a144e1508b8a4312e0d8697f6c64b337e37e5d9"}, + {file = "cramjam-2.8.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:30c75259f58583f96ad9cef7202c70cd6604a9dabf9834211df48a27ec85f84a"}, + {file = "cramjam-2.8.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b9b4bbe7ef3318b2f2aed2a8a658b401a9ad9314d50372f9bb97cdef093f326"}, + {file = "cramjam-2.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d7a7c10fb2602d7c8c4dbe4eeacf352477cc1af939fd3537f4e1cd42526855b8"}, + {file = "cramjam-2.8.4-cp310-none-win32.whl", hash = "sha256:831ee2424b095f51c9719b0479d9b413bc849e47160b904a7a8e4a8dcf41d2f7"}, + {file = "cramjam-2.8.4-cp310-none-win_amd64.whl", hash = "sha256:4f6bf5752a0322cc63f955343c390253034b609d167930584bb392bf4179c444"}, + {file = "cramjam-2.8.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d48fd69224a2f4df187856021f545a65486575cba92bb32a14ccad1ce54584a9"}, + {file = "cramjam-2.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c53d8dce609607370f01a5db65c79db75db08e9e89cbb9c2a2212b7a3c0b8af3"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d08b8ff282545ab3a414db845e430320555ff7a7eb90517b2c9554e24ca0d763"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac5fb30cf6c03f72397ead8584592dc071f486c76199c46c28e7de619174ba1f"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0d86cfb2b457a337db4b7c8cf6a9dafc018806750f28b3c27d71b94e2d4379d0"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59565a16ce0c71993d3947bdf9301e0d69866c15f37d67d2875809eca998d841"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6741544b372ba3e6c65db1c44b1a75e48743d091b76a09d7d832b1fb0a0ef518"}, + {file = "cramjam-2.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5f486bacd46f364137f5b164a879821115118d7f866a838429eb10aee59a14b"}, + {file = "cramjam-2.8.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e02081bfb9998f5ff816f3e984a62ca91835e3483c578812374aaf5cb6ed921"}, + {file = "cramjam-2.8.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:1c63e856727726a1ee2a77a12bfccfcd70ee3e5bbe9e6d07bd00be5a1eb6ec10"}, + {file = "cramjam-2.8.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:74fb59137946b691e8987349e9117e2897f3b0484116ad6e2b1b4de0d082430f"}, + {file = "cramjam-2.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c7952e0cd6f37a04983cb027175f91f225d7c30625038b8930b6fd3f00619350"}, + {file = "cramjam-2.8.4-cp311-none-win32.whl", hash = "sha256:2bfd5c442e6031b146a93b1cc37d42c04b6d01bb652c9f123338c482c3943038"}, + {file = "cramjam-2.8.4-cp311-none-win_amd64.whl", hash = "sha256:73c95cae138bc8f5604bbbc97860f158c4f77e046304dd4f9c9838021d64217a"}, + {file = "cramjam-2.8.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:5056f476917d31c69719883bbe12272288b77ab5ea5ee55fbcbb6c0dd10e52da"}, + {file = "cramjam-2.8.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8359d31dca4bd8286e031f1a21f20f62f4e7a4586c407e916fd2de101c719a8b"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a1aee32556b9f7ecc61c6c4675798153ac511b5b72db9f56d2a8c20c1fa6d563"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:005bfe79ae38ea1df67fd3079089287640c780bf112aab4b6a3a9f12f0bf3c91"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51662c79c5a2256824f3acca9ccdbeaad3626c90ae46a19ef25f186d70a9ac69"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c744148e33002cefd4aaa3641800c0008fa177c8c09230c09d30d6e7ab473a4"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c897d2443cf9f3685a51ecc28c669aad95b6a610de7883647fe450cc742e2ea7"}, + {file = "cramjam-2.8.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:741b0c29d701d470243b9cad09a3e21c2ab83190710df680fd84baea1b262089"}, + {file = "cramjam-2.8.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4cfc6d838afb90a59d2c721fe8d78c2a333edf5c370b3ce8f9823c49bc52e5d0"}, + {file = "cramjam-2.8.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:977e380a567f1bcdb0f1156820fedc57727c6c639769b846b39ad7fc1be5563b"}, + {file = "cramjam-2.8.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3f16dea7f430bb8a5cf2e2a8eece5fa7a6e58bffae3913083f6c20de50ce85bd"}, + {file = "cramjam-2.8.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9d25c2ff722e66a55c58b6c325985b2bf342a6592db084557c2956a07d7179d7"}, + {file = "cramjam-2.8.4-cp312-none-win32.whl", hash = "sha256:b63bcf4e5f9c6ee027947a22862d054e8ce0fa189a33ccdb07e66ef09291252c"}, + {file = "cramjam-2.8.4-cp312-none-win_amd64.whl", hash = "sha256:72b9d4c29a51a8656690df2ef6f7823fa27ebc35e051182b6ebef5fef180876f"}, + {file = "cramjam-2.8.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:9b00949104594eb2b6daf9ec72f1a6dfc93968bc0ffbdbfee936c359fc782186"}, + {file = "cramjam-2.8.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:24b29d805e860d22499e6f5d004582477f3c8309e2a899e0c86c1530a94e6092"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9454207624a701cb518fbef137e2eb6088aaf5606679aa6ab28d2dd06d72702"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee580acb4b6af5ae211b80b679aa377ffa9f9ff74a1e9de458c09d19bce4433"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:157c36731e430670be44ba490b8a0e4fc04ebdd78c3ea19339ba4ac24d73ad25"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a12b1437e28b5e72ab10642d214e9b42220e8c5be2948ac6916aca203f69b0"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:553e2cd4c2614510770ff3a8bf6b72957a86985b1ae2b8fcdc6d04848857313f"}, + {file = "cramjam-2.8.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e40e448d50fa7c2b79c06d99459ad4a77d58d9cfb3f0549a63b91179a5e57c0b"}, + {file = "cramjam-2.8.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:769995dfc7fd042ce123f25e7659977ed4aa4d5d6aad976970b12b9b4019c116"}, + {file = "cramjam-2.8.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:1ba26f563d9e5be588c8e5f5523b4cdb5b63e3ac3fb28857af9611eb5ea51416"}, + {file = "cramjam-2.8.4-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:5cbfd6c44c85216b3535095258b506f6e246c6fbf1438a79f71bcff4d98f7e3f"}, + {file = "cramjam-2.8.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:4bf4e8711b27604b3ca7e7c224a70f5abe94f5bf05a183bd97677e9cffd2be04"}, + {file = "cramjam-2.8.4-cp313-none-win32.whl", hash = "sha256:7c9ca8e6c33c06c08e9945a20fe0f64a2bcd363554e359a2936b3a469883630a"}, + {file = "cramjam-2.8.4-cp313-none-win_amd64.whl", hash = "sha256:ee92df7e66b7cbdb05b18687a42696bc729bacaad0d68f5549e30cbfa1eb0ca8"}, + {file = "cramjam-2.8.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:386eb0fe9567ae3c06e2053205e19e671e4170f3a0deb68dd103e4c651a3ff8b"}, + {file = "cramjam-2.8.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64e22027874ce429ce04c0c9d19e6bed5bf6425ecc3e68752211b8509915c57c"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b74470fb215a3ac2e6ed968f671286456030882aa25616b969b1a52ebda4f29d"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c41d4542cc2c7238017caebc161b0866b3fb5e85e59727ab623f95e07abc453"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:14b6f2f883068873bd2b5c31fbf7c4223c0452b8bff662bec02d7973a095c46b"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5921c4521d41fb125d31ce1fe9e5bfba24a2577bc8727289baae9afbebc8409"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb62855f17be5d1bec0d3cef89d8d54582137529c7ea96480c40ebb4a8c92c4b"}, + {file = "cramjam-2.8.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91cd4b28fc75680616bd22db5a56802ce7ce406052c58e72fd583a16746a1010"}, + {file = "cramjam-2.8.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f03502eaf1a0a95cdcbf4c6ebba5edfaa68d356f487ec8485ae651772c9426f9"}, + {file = "cramjam-2.8.4-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:bb5e23c1f8dc2b4cddc7982da60d2f7a9719920539c26e7b754f2272f510fc0c"}, + {file = "cramjam-2.8.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ef6b0d4c83b173d18398713522bff1db1e4e73ec3b3da6495afc5628767d6c85"}, + {file = "cramjam-2.8.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b2253287a08759cefb75ef46ebaa0f993a2890a31fe9bba94363ca245f42d821"}, + {file = "cramjam-2.8.4-cp38-none-win32.whl", hash = "sha256:8375090e54978ccbb1d90e494d73d09e36477e0d695ddadf2d13627168862950"}, + {file = "cramjam-2.8.4-cp38-none-win_amd64.whl", hash = "sha256:12100dd3ed6969365d1952832e39c017d97c85eeb517ae468092f67aa4d89568"}, + {file = "cramjam-2.8.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:47c1594346dceb0d363d479ddac1e9ff87596c92e5258b389118ae6e30599145"}, + {file = "cramjam-2.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5472f9c6db34046c7ab2f0c4be5a4be677dba98bf78cc0eb03f9812e5774f14d"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bfa940e016bfeea2b93115abf9e4e455a6325dd85a3fa6af55c6052f070ba25"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24e738a92ac520b26b952bfc48b1ba6453ea455e20167f08f6ee3df5c7d22cd4"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:78ded70e85722a6dcd0c436193af58a43083f0ece35c1f74227782a28e517aa0"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b024a9912a5fd3b4e6b949b83b291e2828775edc0595ef8b94c491e904287b"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:673dc6395fed94db59fb75a7657d8b061bd575332d8f15025e7b1a4feaba0a3f"}, + {file = "cramjam-2.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b8f83c5a98fecf44c6d852a9bd30ab1508e51d910dc9c8e636863d131fd5eb"}, + {file = "cramjam-2.8.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:85eada9385a706d8d0f6cb1d51995f5eef16d3cade7e68150d6e441fd26406da"}, + {file = "cramjam-2.8.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:2429134bb2ee8fffe28f41e3f5390be9c539ac1e2c453034ea63542d7aacc5cc"}, + {file = "cramjam-2.8.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e90003b2ce00358ee669afa0710bf52dee6827460b80ce4a7a9f906551ab703a"}, + {file = "cramjam-2.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0619af45310cceeab9a2410d4a14445743e494015d85584b974847bfb2a2011"}, + {file = "cramjam-2.8.4-cp39-none-win32.whl", hash = "sha256:a30d68094462076655259feee1187237af846969007e5341a96c79b447c47ab3"}, + {file = "cramjam-2.8.4-cp39-none-win_amd64.whl", hash = "sha256:f24e375dfb31f0953e236f2cc4af1b03b80d40aec2bc558df48d507d8e7c8d96"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3536362f777d817c4994d6eaa42e00e705092c5660fd3d9984f3b0cc6164d327"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:0d52eabd20a694636f5b0197daa64db497ea518e057935a7c61ec71e92d3ccd6"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cf69f19ebd546fc155ec3098603de51f52bf620a23597810cb5b34d6aff116d"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:364258057d579c772e23e1f666fd7efec4f63ea2e791889bb18263c9e9e6aa91"}, + {file = "cramjam-2.8.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:98a2e2c3132b454ae47b194164bb8860464ed410fbbffc0d1de19452cc7cb402"}, + {file = "cramjam-2.8.4.tar.gz", hash = "sha256:ad8bec85b46283330214f4367805e6f56e04ce25a030a2c6a4b127437d006fcf"}, ] [package.extras] -dev = ["black (==22.3.0)", "hypothesis", "numpy", "pytest (>=5.30)", "pytest-xdist"] +dev = ["black (==22.3.0)", "hypothesis", "numpy", "pytest (>=5.30)", "pytest-benchmark", "pytest-xdist"] [[package]] name = "cryptography" @@ -1092,13 +1082,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "dill" -version = "0.3.8" +version = "0.3.9" description = "serialize all of Python" optional = false python-versions = ">=3.8" files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, ] [package.extras] @@ -1144,18 +1134,15 @@ xmod = "*" [[package]] name = "emoji" -version = "2.12.1" +version = "2.14.0" description = "Emoji for Python" optional = true python-versions = ">=3.7" files = [ - {file = "emoji-2.12.1-py3-none-any.whl", hash = "sha256:a00d62173bdadc2510967a381810101624a2f0986145b8da0cffa42e29430235"}, - {file = "emoji-2.12.1.tar.gz", hash = "sha256:4aa0488817691aa58d83764b6c209f8a27c0b3ab3f89d1b8dceca1a62e4973eb"}, + {file = "emoji-2.14.0-py3-none-any.whl", hash = "sha256:fcc936bf374b1aec67dda5303ae99710ba88cc9cdce2d1a71c5f2204e6d78799"}, + {file = "emoji-2.14.0.tar.gz", hash = "sha256:f68ac28915a2221667cddb3e6c589303c3c6954c6c5af6fefaec7f9bdf72fdca"}, ] -[package.dependencies] -typing-extensions = ">=4.7.0" - [package.extras] dev = ["coverage", "pytest (>=7.4.4)"] @@ -1253,53 +1240,59 @@ pyflakes = ">=3.1.0,<3.2.0" [[package]] name = "fonttools" -version = "4.53.1" +version = "4.54.1" description = "Tools to manipulate font files" optional = true python-versions = ">=3.8" files = [ - {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"}, - {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"}, - {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"}, - {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"}, - {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"}, - {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"}, - {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"}, - {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"}, - {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"}, - {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"}, - {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"}, - {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"}, - {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"}, - {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"}, + {file = "fonttools-4.54.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2"}, + {file = "fonttools-4.54.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882"}, + {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10"}, + {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e"}, + {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e"}, + {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44"}, + {file = "fonttools-4.54.1-cp310-cp310-win32.whl", hash = "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02"}, + {file = "fonttools-4.54.1-cp310-cp310-win_amd64.whl", hash = "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d"}, + {file = "fonttools-4.54.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20"}, + {file = "fonttools-4.54.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2"}, + {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7"}, + {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07"}, + {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8"}, + {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a"}, + {file = "fonttools-4.54.1-cp311-cp311-win32.whl", hash = "sha256:ab774fa225238986218a463f3fe151e04d8c25d7de09df7f0f5fce27b1243dbc"}, + {file = "fonttools-4.54.1-cp311-cp311-win_amd64.whl", hash = "sha256:07e005dc454eee1cc60105d6a29593459a06321c21897f769a281ff2d08939f6"}, + {file = "fonttools-4.54.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d"}, + {file = "fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08"}, + {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263"}, + {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab"}, + {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d"}, + {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714"}, + {file = "fonttools-4.54.1-cp312-cp312-win32.whl", hash = "sha256:fdb062893fd6d47b527d39346e0c5578b7957dcea6d6a3b6794569370013d9ac"}, + {file = "fonttools-4.54.1-cp312-cp312-win_amd64.whl", hash = "sha256:e4564cf40cebcb53f3dc825e85910bf54835e8a8b6880d59e5159f0f325e637e"}, + {file = "fonttools-4.54.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6e37561751b017cf5c40fce0d90fd9e8274716de327ec4ffb0df957160be3bff"}, + {file = "fonttools-4.54.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:357cacb988a18aace66e5e55fe1247f2ee706e01debc4b1a20d77400354cddeb"}, + {file = "fonttools-4.54.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e953cc0bddc2beaf3a3c3b5dd9ab7554677da72dfaf46951e193c9653e515a"}, + {file = "fonttools-4.54.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:58d29b9a294573d8319f16f2f79e42428ba9b6480442fa1836e4eb89c4d9d61c"}, + {file = "fonttools-4.54.1-cp313-cp313-win32.whl", hash = "sha256:9ef1b167e22709b46bf8168368b7b5d3efeaaa746c6d39661c1b4405b6352e58"}, + {file = "fonttools-4.54.1-cp313-cp313-win_amd64.whl", hash = "sha256:262705b1663f18c04250bd1242b0515d3bbae177bee7752be67c979b7d47f43d"}, + {file = "fonttools-4.54.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ed2f80ca07025551636c555dec2b755dd005e2ea8fbeb99fc5cdff319b70b23b"}, + {file = "fonttools-4.54.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9dc080e5a1c3b2656caff2ac2633d009b3a9ff7b5e93d0452f40cd76d3da3b3c"}, + {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d152d1be65652fc65e695e5619e0aa0982295a95a9b29b52b85775243c06556"}, + {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8583e563df41fdecef31b793b4dd3af8a9caa03397be648945ad32717a92885b"}, + {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0d1d353ef198c422515a3e974a1e8d5b304cd54a4c2eebcae708e37cd9eeffb1"}, + {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:fda582236fee135d4daeca056c8c88ec5f6f6d88a004a79b84a02547c8f57386"}, + {file = "fonttools-4.54.1-cp38-cp38-win32.whl", hash = "sha256:e7d82b9e56716ed32574ee106cabca80992e6bbdcf25a88d97d21f73a0aae664"}, + {file = "fonttools-4.54.1-cp38-cp38-win_amd64.whl", hash = "sha256:ada215fd079e23e060157aab12eba0d66704316547f334eee9ff26f8c0d7b8ab"}, + {file = "fonttools-4.54.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5b8a096e649768c2f4233f947cf9737f8dbf8728b90e2771e2497c6e3d21d13"}, + {file = "fonttools-4.54.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e10d2e0a12e18f4e2dd031e1bf7c3d7017be5c8dbe524d07706179f355c5dac"}, + {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31c32d7d4b0958600eac75eaf524b7b7cb68d3a8c196635252b7a2c30d80e986"}, + {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c39287f5c8f4a0c5a55daf9eaf9ccd223ea59eed3f6d467133cc727d7b943a55"}, + {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a7a310c6e0471602fe3bf8efaf193d396ea561486aeaa7adc1f132e02d30c4b9"}, + {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d3b659d1029946f4ff9b6183984578041b520ce0f8fb7078bb37ec7445806b33"}, + {file = "fonttools-4.54.1-cp39-cp39-win32.whl", hash = "sha256:e96bc94c8cda58f577277d4a71f51c8e2129b8b36fd05adece6320dd3d57de8a"}, + {file = "fonttools-4.54.1-cp39-cp39-win_amd64.whl", hash = "sha256:e8a4b261c1ef91e7188a30571be6ad98d1c6d9fa2427244c545e2fa0a2494dd7"}, + {file = "fonttools-4.54.1-py3-none-any.whl", hash = "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd"}, + {file = "fonttools-4.54.1.tar.gz", hash = "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285"}, ] [package.extras] @@ -1460,69 +1453,42 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", [[package]] name = "greenlet" -version = "3.0.3" +version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = true python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, - {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, - {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, - {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, - {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, - {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, - {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, - {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, - {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, - {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, - {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, - {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, - {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, - {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, - {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, - {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, ] [package.extras] @@ -1542,13 +1508,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = true python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -1559,7 +1525,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -1588,13 +1554,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "humanize" -version = "4.10.0" +version = "4.11.0" description = "Python humanize utilities" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "humanize-4.10.0-py3-none-any.whl", hash = "sha256:39e7ccb96923e732b5c2e27aeaa3b10a8dfeeba3eb965ba7b74a3eb0e30040a6"}, - {file = "humanize-4.10.0.tar.gz", hash = "sha256:06b6eb0293e4b85e8d385397c5868926820db32b9b654b932f57fa41c23c9978"}, + {file = "humanize-4.11.0-py3-none-any.whl", hash = "sha256:b53caaec8532bcb2fff70c8826f904c35943f8cecaca29d272d9df38092736c0"}, + {file = "humanize-4.11.0.tar.gz", hash = "sha256:e66f36020a2d5a974c504bd2555cf770621dbdbb6d82f94a6857c0b1ea2608be"}, ] [package.extras] @@ -1602,15 +1568,18 @@ tests = ["freezegun", "pytest", "pytest-cov"] [[package]] name = "idna" -version = "3.8" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, - {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "imagesize" version = "1.4.1" @@ -1816,126 +1785,136 @@ format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-va [[package]] name = "junitparser" -version = "3.1.2" +version = "3.2.0" description = "Manipulates JUnit/xUnit Result XML files" optional = false python-versions = "*" files = [ - {file = "junitparser-3.1.2-py2.py3-none-any.whl", hash = "sha256:2a86664ae7abf0ece4ce928121c7dbdb0f95f2c781a3f09ee9e2ac0e91e77a60"}, - {file = "junitparser-3.1.2.tar.gz", hash = "sha256:d37ca5b35569dd7ebfdee976f2396b7d95cc46aa3c5910a0a7771c80751a5524"}, + {file = "junitparser-3.2.0-py2.py3-none-any.whl", hash = "sha256:e14fdc0a999edfc15889b637390e8ef6ca09a49532416d3bd562857d42d4b96d"}, + {file = "junitparser-3.2.0.tar.gz", hash = "sha256:b05e89c27e7b74b3c563a078d6e055d95cf397444f8f689b0ca616ebda0b3c65"}, ] [[package]] name = "kiwisolver" -version = "1.4.5" +version = "1.4.7" description = "A fast implementation of the Cassowary constraint solver" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, - {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, - {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, - {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5d5abf8f8ec1f4e22882273c423e16cae834c36856cac348cfbfa68e01c40f3a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:aeb3531b196ef6f11776c21674dba836aeea9d5bd1cf630f869e3d90b16cfade"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7d755065e4e866a8086c9bdada157133ff466476a2ad7861828e17b6026e22c"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08471d4d86cbaec61f86b217dd938a83d85e03785f51121e791a6e6689a3be95"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bbfcb7165ce3d54a3dfbe731e470f65739c4c1f85bb1018ee912bae139e263b"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d34eb8494bea691a1a450141ebb5385e4b69d38bb8403b5146ad279f4b30fa3"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9242795d174daa40105c1d86aba618e8eab7bf96ba8c3ee614da8302a9f95503"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a0f64a48bb81af7450e641e3fe0b0394d7381e342805479178b3d335d60ca7cf"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8e045731a5416357638d1700927529e2b8ab304811671f665b225f8bf8d8f933"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4322872d5772cae7369f8351da1edf255a604ea7087fe295411397d0cfd9655e"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e1631290ee9271dffe3062d2634c3ecac02c83890ada077d225e081aca8aab89"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:edcfc407e4eb17e037bca59be0e85a2031a2ac87e4fed26d3e9df88b4165f92d"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4d05d81ecb47d11e7f8932bd8b61b720bf0b41199358f3f5e36d38e28f0532c5"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win32.whl", hash = "sha256:b38ac83d5f04b15e515fd86f312479d950d05ce2368d5413d46c088dda7de90a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:d83db7cde68459fc803052a55ace60bea2bae361fc3b7a6d5da07e11954e4b09"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9362ecfca44c863569d3d3c033dbe8ba452ff8eed6f6b5806382741a1334bd"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8df2eb9b2bac43ef8b082e06f750350fbbaf2887534a5be97f6cf07b19d9583"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f32d6edbc638cde7652bd690c3e728b25332acbadd7cad670cc4a02558d9c417"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e2e6c39bd7b9372b0be21456caab138e8e69cc0fc1190a9dfa92bd45a1e6e904"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dda56c24d869b1193fcc763f1284b9126550eaf84b88bbc7256e15028f19188a"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79849239c39b5e1fd906556c474d9b0439ea6792b637511f3fe3a41158d89ca8"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e3bc157fed2a4c02ec468de4ecd12a6e22818d4f09cde2c31ee3226ffbefab2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3da53da805b71e41053dc670f9a820d1157aae77b6b944e08024d17bcd51ef88"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8705f17dfeb43139a692298cb6637ee2e59c0194538153e83e9ee0c75c2eddde"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82a5c2f4b87c26bb1a0ef3d16b5c4753434633b83d365cc0ddf2770c93829e3c"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce8be0466f4c0d585cdb6c1e2ed07232221df101a4c6f28821d2aa754ca2d9e2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:409afdfe1e2e90e6ee7fc896f3df9a7fec8e793e58bfa0d052c8a82f99c37abb"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5b9c3f4ee0b9a439d2415012bd1b1cc2df59e4d6a9939f4d669241d30b414327"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win32.whl", hash = "sha256:a79ae34384df2b615eefca647a2873842ac3b596418032bef9a7283675962644"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:cf0438b42121a66a3a667de17e779330fc0f20b0d97d59d2f2121e182b0505e4"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:764202cc7e70f767dab49e8df52c7455e8de0df5d858fa801a11aa0d882ccf3f"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bfa1acfa0c54932d5607e19a2c24646fb4c1ae2694437789129cf099789a3b00"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:eee3ea935c3d227d49b4eb85660ff631556841f6e567f0f7bda972df6c2c9935"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f3160309af4396e0ed04db259c3ccbfdc3621b5559b5453075e5de555e1f3a1b"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a17f6a29cf8935e587cc8a4dbfc8368c55edc645283db0ce9801016f83526c2d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10849fb2c1ecbfae45a693c070e0320a91b35dd4bcf58172c023b994283a124d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:ac542bf38a8a4be2dc6b15248d36315ccc65f0743f7b1a76688ffb6b5129a5c2"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8b01aac285f91ca889c800042c35ad3b239e704b150cfd3382adfc9dcc780e39"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48be928f59a1f5c8207154f935334d374e79f2b5d212826307d072595ad76a2e"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f37cfe618a117e50d8c240555331160d73d0411422b59b5ee217843d7b693608"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0"}, + {file = "kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60"}, ] [[package]] @@ -2060,13 +2039,13 @@ six = "*" [[package]] name = "langsmith" -version = "0.1.107" +version = "0.1.132" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = true python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.107-py3-none-any.whl", hash = "sha256:ddd0c846980474e271a553e9c220122e32d1f2ce877cc87d39ecd86726b9e78c"}, - {file = "langsmith-0.1.107.tar.gz", hash = "sha256:f44de0a5f199381d0b518ecbe295d541c44ff33d13f18098ecc54a4547eccb3f"}, + {file = "langsmith-0.1.132-py3-none-any.whl", hash = "sha256:2320894203675c1c292b818cbecf68b69e47a9f7814d4e950237d1faaafd5dee"}, + {file = "langsmith-0.1.132.tar.gz", hash = "sha256:007b8fac469138abdba89db931900a26c5d316640e27ff4660d28c92a766aae1"}, ] [package.dependencies] @@ -2077,6 +2056,7 @@ pydantic = [ {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, ] requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "libcst" @@ -2335,71 +2315,72 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.5" +version = "3.0.0" description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:380faf314c3c84c1682ca672e6280c6c59e92d0bc13dc71758ffa2de3cd4e252"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1ee9790be6f62121c4c58bbced387b0965ab7bffeecb4e17cc42ef290784e363"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ddf5cb8e9c00d9bf8b0c75949fb3ff9ea2096ba531693e2e87336d197fdb908"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b36473a2d3e882d1873ea906ce54408b9588dc2c65989664e6e7f5a2de353d7"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dba0f83119b9514bc37272ad012f0cc03f0805cc6a2bea7244e19250ac8ff29f"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:409535e0521c4630d5b5a1bf284e9d3c76d2fc2f153ebb12cf3827797798cc99"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64a7c7856c3a409011139b17d137c2924df4318dab91ee0530800819617c4381"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4deea1d9169578917d1f35cdb581bc7bab56a7e8c5be2633bd1b9549c3c22a01"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-win32.whl", hash = "sha256:3cd0bba31d484fe9b9d77698ddb67c978704603dc10cdc905512af308cfcca6b"}, + {file = "MarkupSafe-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:4ca04c60006867610a06575b46941ae616b19da0adc85b9f8f3d9cbd7a3da385"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e64b390a306f9e849ee809f92af6a52cda41741c914358e0e9f8499d03741526"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c524203207f5b569df06c96dafdc337228921ee8c3cc5f6e891d024c6595352"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c409691696bec2b5e5c9efd9593c99025bf2f317380bf0d993ee0213516d908a"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64f7d04410be600aa5ec0626d73d43e68a51c86500ce12917e10fd013e258df5"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:105ada43a61af22acb8774514c51900dc820c481cc5ba53f17c09d294d9c07ca"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a5fd5500d4e4f7cc88d8c0f2e45126c4307ed31e08f8ec521474f2fd99d35ac3"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:25396abd52b16900932e05b7104bcdc640a4d96c914f39c3b984e5a17b01fba0"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3efde9a8c56c3b6e5f3fa4baea828f8184970c7c78480fedb620d804b1c31e5c"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-win32.whl", hash = "sha256:12ddac720b8965332d36196f6f83477c6351ba6a25d4aff91e30708c729350d7"}, + {file = "MarkupSafe-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:658fdf6022740896c403d45148bf0c36978c6b48c9ef8b1f8d0c7a11b6cdea86"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d261ec38b8a99a39b62e0119ed47fe3b62f7691c500bc1e815265adc016438c1"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e363440c8534bf2f2ef1b8fdc02037eb5fff8fce2a558519b22d6a3a38b3ec5e"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7835de4c56066e096407a1852e5561f6033786dd987fa90dc384e45b9bd21295"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6cc46a27d904c9be5732029769acf4b0af69345172ed1ef6d4db0c023ff603b"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0411641d31aa6f7f0cc13f0f18b63b8dc08da5f3a7505972a42ab059f479ba3"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b2a7afd24d408b907672015555bc10be2382e6c5f62a488e2d452da670bbd389"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c8ab7efeff1884c5da8e18f743b667215300e09043820d11723718de0b7db934"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8219e2207f6c188d15614ea043636c2b36d2d79bf853639c124a179412325a13"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-win32.whl", hash = "sha256:59420b5a9a5d3fee483a32adb56d7369ae0d630798da056001be1e9f674f3aa6"}, + {file = "MarkupSafe-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:7ed789d0f7f11fcf118cf0acb378743dfdd4215d7f7d18837c88171405c9a452"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:27d6a73682b99568916c54a4bfced40e7d871ba685b580ea04bbd2e405dfd4c5"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:494a64efc535e147fcc713dba58eecfce3a79f1e93ebe81995b387f5cd9bc2e1"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5243044a927e8a6bb28517838662a019cd7f73d7f106bbb37ab5e7fa8451a92"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63dae84964a9a3d2610808cee038f435d9a111620c37ccf872c2fcaeca6865b3"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcbee57fedc9b2182c54ffc1c5eed316c3da8bbfeda8009e1b5d7220199d15da"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f846fd7c241e5bd4161e2a483663eb66e4d8e12130fcdc052f310f388f1d61c6"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:678fbceb202382aae42c1f0cd9f56b776bc20a58ae5b553ee1fe6b802983a1d6"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bd9b8e458e2bab52f9ad3ab5dc8b689a3c84b12b2a2f64cd9a0dfe209fb6b42f"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-win32.whl", hash = "sha256:1fd02f47596e00a372f5b4af2b4c45f528bade65c66dfcbc6e1ea1bfda758e98"}, + {file = "MarkupSafe-3.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:b94bec9eda10111ec7102ef909eca4f3c2df979643924bfe58375f560713a7d1"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:509c424069dd037d078925b6815fc56b7271f3aaec471e55e6fa513b0a80d2aa"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81be2c0084d8c69e97e3c5d73ce9e2a6e523556f2a19c4e195c09d499be2f808"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b43ac1eb9f91e0c14aac1d2ef0f76bc7b9ceea51de47536f61268191adf52ad7"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b231255770723f1e125d63c14269bcd8b8136ecfb620b9a18c0297e046d0736"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c182d45600556917f811aa019d834a89fe4b6f6255da2fd0bdcf80e970f95918"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f91c90f8f3bf436f81c12eeb4d79f9ddd263c71125e6ad71341906832a34386"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a7171d2b869e9be238ea318c196baf58fbf272704e9c1cd4be8c380eea963342"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cb244adf2499aa37d5dc43431990c7f0b632d841af66a51d22bd89c437b60264"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-win32.whl", hash = "sha256:96e3ed550600185d34429477f1176cedea8293fa40e47fe37a05751bcb64c997"}, + {file = "MarkupSafe-3.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:1d151b9cf3307e259b749125a5a08c030ba15a8f1d567ca5bfb0e92f35e761f5"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:23efb2be7221105c8eb0e905433414d2439cb0a8c5d5ca081c1c72acef0f5613"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81ee9c967956b9ea39b3a5270b7cb1740928d205b0dc72629164ce621b4debf9"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5509a8373fed30b978557890a226c3d30569746c565b9daba69df80c160365a5"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1c13c6c908811f867a8e9e66efb2d6c03d1cdd83e92788fe97f693c457dc44f"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7e63d1977d3806ce0a1a3e0099b089f61abdede5238ca6a3f3bf8877b46d095"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d2c099be5274847d606574234e494f23a359e829ba337ea9037c3a72b0851942"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e042ccf8fe5bf8b6a4b38b3f7d618eb10ea20402b0c9f4add9293408de447974"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:98fb3a2bf525ad66db96745707b93ba0f78928b7a1cb2f1cb4b143bc7e2ba3b3"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-win32.whl", hash = "sha256:a80c6740e1bfbe50cea7cbf74f48823bb57bd59d914ee22ff8a81963b08e62d2"}, + {file = "MarkupSafe-3.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:5d207ff5cceef77796f8aacd44263266248cf1fbc601441524d7835613f8abec"}, + {file = "markupsafe-3.0.0.tar.gz", hash = "sha256:03ff62dea2fef3eadf2f1853bc6332bcb0458d9608b11dfb1cd5aeda1c178ea6"}, ] [[package]] @@ -2497,13 +2478,13 @@ files = [ [[package]] name = "mdit-py-plugins" -version = "0.4.1" +version = "0.4.2" description = "Collection of plugins for markdown-it-py" optional = false python-versions = ">=3.8" files = [ - {file = "mdit_py_plugins-0.4.1-py3-none-any.whl", hash = "sha256:1020dfe4e6bfc2c79fb49ae4e3f5b297f5ccd20f010187acc52af2921e27dc6a"}, - {file = "mdit_py_plugins-0.4.1.tar.gz", hash = "sha256:834b8ac23d1cd60cec703646ffd22ae97b7955a6d596eb1d304be1e251ae499c"}, + {file = "mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636"}, + {file = "mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5"}, ] [package.dependencies] @@ -2527,48 +2508,54 @@ files = [ [[package]] name = "memray" -version = "1.13.4" +version = "1.14.0" description = "A memory profiler for Python applications" optional = false python-versions = ">=3.7.0" files = [ - {file = "memray-1.13.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ed0bfcffbd857cbf78a4db942019e9e153019b754048b0522065844d1c538e8c"}, - {file = "memray-1.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fcf71802b2c6d68c5336b1e4ae341eab64dcccd0dcf67687af53f18bc020237b"}, - {file = "memray-1.13.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c9ae675131492bdfafcc44e86d0b81401ea8d052a9cab7793b1dab642cd58e6"}, - {file = "memray-1.13.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bac9d30ce39aaee40601087d09c1639a071293f414b5e726a152ed3581d25e50"}, - {file = "memray-1.13.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a437c7e28734028a2f43f942c3146e9737033718cea092ea910f6de3cf46221d"}, - {file = "memray-1.13.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3cae161d5b6769cc3af574cfa0c7ea77f98d6ae714ba5ec508f6f05b84800801"}, - {file = "memray-1.13.4-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:bf407123e175de4f5a7264886eb64ea514f4b388b617f05dfcd857d99ecadd1c"}, - {file = "memray-1.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a6f1bd3d0adf84f864e24f74552c1533224e64283dfee33641011acf384fc138"}, - {file = "memray-1.13.4-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ba5bb9a3b7c3c08752f3b55a3b5b360963c9f666e2220eb388ab6f7d1271d843"}, - {file = "memray-1.13.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1e8cec70e51e81c0e9448e62a5366914b74a3dbb60826cdec8f0e7559e58e74"}, - {file = "memray-1.13.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81497e578017feb57a46e19c349450888e57ff7fb8f0f5134d3e07605c435500"}, - {file = "memray-1.13.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e585d866c82ce92060fa1c925298aa8b89936ca22df9698a25a5f0cf7ca81fa2"}, - {file = "memray-1.13.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3d048da01dc138711a2c9c70ba693d186690c98fb0ca26fdc3483486d4849238"}, - {file = "memray-1.13.4-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:b6459761046ab46638d2c62d7f3f55eaaf45a947bd1d36dcfb5e860047280557"}, - {file = "memray-1.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:637651f5ca2870e9156f189c337e8c6d0002e3f6f7d44d6486ff5baf12a6115e"}, - {file = "memray-1.13.4-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d5b9e10fde6f652ea176cbc0d4d4c563d2831faec4434d3e03c4c0aff8ddc6c0"}, - {file = "memray-1.13.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1f3ab803b703b9be29259039caf43803ad5abf37f04e77cd9e8373054dd91f6"}, - {file = "memray-1.13.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfdc070da2df9241f78b7429d44f6ee16e924d43eddc587f6ed7218c4cb792d3"}, - {file = "memray-1.13.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:523a63dee71cd4d55eddca866244a045e7549ca5137ec906c62893b87a2161ce"}, - {file = "memray-1.13.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3bf06f8883a26b779cc828addad97a2d39d7587263e348655dae3ec90b6ee079"}, - {file = "memray-1.13.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ee47b798d5712faa2a38ff60b5c77f73ed8342709e15bd6ed3a46edd9feee089"}, - {file = "memray-1.13.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:daed9ae6ceea6a4dcc96ac62cfa00d90f7365ed54ee90886e5287251855a2c02"}, - {file = "memray-1.13.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc194c5564f5b33d33bbbeca54b0e3f637d985a144c3551f887bf668d896ffec"}, - {file = "memray-1.13.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:554cda50101a14e1bca2453bd1013949cdc4ebcd4709065139955578f8b0c354"}, - {file = "memray-1.13.4-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e3e261995acc40f8bd4a10740b25f37eccc3e413449ceb73263216ec3c6fee7b"}, - {file = "memray-1.13.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e8ef7cc755a5a3a4b5d9991cf70428220e9138bc5967b5764b2fa7a1fb4d7a6"}, - {file = "memray-1.13.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7c8ea410c842a31ee07e76b409c273d23e0b670d166c2330488d1164ab42a4d1"}, - {file = "memray-1.13.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22c9656c78a50b4569a8273d062cc6c139e9f7cfec3f793e60ef7e0cb46c2a76"}, - {file = "memray-1.13.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7096401ff3b7ce5f759e45bd71b0899ad50a607924ee23ad02423aa4fa505f52"}, - {file = "memray-1.13.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2072a454846e055d5833d17b1f5e6106ae18e425974c3968276a1952b0156f2b"}, - {file = "memray-1.13.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:f19fb4a20d796af869691531d2d6540d27bfbf0df9118bd17e547a23224a8b3e"}, - {file = "memray-1.13.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b1331de55aab1c409ec295b155770487004e0c6d08db0fe903e9377be978bacd"}, - {file = "memray-1.13.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f43bfa96114012d76025a0ee42206c7d914b6113c491dc221e1b7a901c51242a"}, - {file = "memray-1.13.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e0cc6299a09d3c51fd1a45bd816e9dd68a7092a3eaf62aeaa2ee01068f2a1d0b"}, - {file = "memray-1.13.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cbaa39bf7041e32282ad84a9fd9bd98622f78f649ccb7d1075382fed84e8125"}, - {file = "memray-1.13.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:59bba975fbbced85fe6f61685aef459777faf3b8a5b4f0de4fa5b99cf6f1a5e7"}, - {file = "memray-1.13.4.tar.gz", hash = "sha256:48f8f9b89b3a84028668244151eb7248189fb3f4f2a761ec1211439adcbb2ad1"}, + {file = "memray-1.14.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:745d9014cb662065501441a7b534c29914fe2b68398b37385aba9f4a1c51c723"}, + {file = "memray-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f62a402ca1a7126f749544c3d6493672d6330ffd37d59ba230bc73e5143b3bc2"}, + {file = "memray-1.14.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:36840f39277b1871ecb5a9592dd1aa517a17b9f855f4e3ff08aa328a9d305e69"}, + {file = "memray-1.14.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3c7933ca70c0d59d0ce9b1064a6eda86231248759b46ed6dabedf489039d1aa1"}, + {file = "memray-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a5907345ff845652e709ddce3171a9ba2d65c62e8bd49a99131066e2a7ce3b"}, + {file = "memray-1.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:88c89c3797834eec177a89ad528699c75b94e2ed08c00754141eae69c520b894"}, + {file = "memray-1.14.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:d6087f291fd68acdf0a833efb57bc0f192c98ae89b4377c690c28313e78d029c"}, + {file = "memray-1.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e6ba7bff9dfa37bf3b80a5b83b50eadf20afb1f0e8de4a0139019154086d6bed"}, + {file = "memray-1.14.0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9bb0cfe1b755a860435cd52047b2e3f4f7b0c3887e0c1bf98da7127948284a91"}, + {file = "memray-1.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:638ba74e1735a40b6595fee7f37b426b9a95d244091a1f5df3dc5d98df1cbd4b"}, + {file = "memray-1.14.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7227ebf024cb0688a68ed91ed3e05c61a13751a9e875807195076b827bfde464"}, + {file = "memray-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:248dea8cfb5a615345e28b7e25c94377a8d198da3b6957ee443afa6f4ff1b733"}, + {file = "memray-1.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7d03f6be66aa259df7fa50082876fbe6461108d77d46c1f720c46067d60685d4"}, + {file = "memray-1.14.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:9af9d30b1e484fd8591c9a7f322fd50b9192a2bce660be92385a01555af9968b"}, + {file = "memray-1.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c4088b391c04796c888ac751b5d387f6e8212b3515d4c53ba540c65a6efe4bda"}, + {file = "memray-1.14.0-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:af8aee7e8e5cac1e4130f1184b3e03b6bb08264e4ba1696551791ed3f8fb824e"}, + {file = "memray-1.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4352f9e85957f2cbe45a9e1c87dfc19d2df77e93dcd8a558794a683eeee57b7b"}, + {file = "memray-1.14.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5953f0d2aa31b23d4cce20236a03d90b7c71903709a57b456d6494bfe6f470b7"}, + {file = "memray-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e4ccaca04365efcda51036fe2add980030e33cfc4f3a194a01f530a5c923c65"}, + {file = "memray-1.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f85a27eb8a65c810161bb992116a66d328546f78a4a4c7c1868949651b917c08"}, + {file = "memray-1.14.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:958d57f7149b8fa4831785394f2a7ace93dbc2be6c49a1c07987a8972986474a"}, + {file = "memray-1.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287a01953bc44dd0a32549a23bdacb5f9734e345ca289fa3923867c637715056"}, + {file = "memray-1.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc17cba35d98e3d2ca20ab995f17eec3edba7138b062cbc1aa36d53d9d2d955"}, + {file = "memray-1.14.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c82342cead930ca50235f59740ca238808f9c33ef31d994712972966beb6226e"}, + {file = "memray-1.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a22a826b4047e839310514f4889c24e45a66ea222fca19ac0ae7b2f89bbb0281"}, + {file = "memray-1.14.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:344f3c73b97ffc8f1666b404deafbc31a19e6b2881341b706aa7ec20afb0e8b1"}, + {file = "memray-1.14.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a43455233d534e9c0e8dabe827d451124874a6455b2afcbcd60b823241ea5843"}, + {file = "memray-1.14.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e05a3b6bc82ef01821beaee98e86bd8de2ada06cb8781add9c40a3ae4a040383"}, + {file = "memray-1.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3bc27e5483c70236c9379b99277b4ea8fa4b3f73a99e37af81190649bd877881"}, + {file = "memray-1.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a7e5604448b2a78e329addfb099384515d3f973a03711c4e2a7b6c9f7f34f53"}, + {file = "memray-1.14.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:443885a96ab9f67d46288240e2593b5c3ecb2c507ddb4e3b10695e104403d001"}, + {file = "memray-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:52a45d96ed717d8efb645e99646a92dd21a2ca38bdb823fe22e38c429cba9513"}, + {file = "memray-1.14.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:72febec7b287667e8ea9ee3e879a4da19a4318bc47e211da815be74acd961994"}, + {file = "memray-1.14.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e07bdc3a4979b335c2b6b93a81b807d5aacd8dbbea56c41c6899a8bc0d2beb3"}, + {file = "memray-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b5e729d03caf426dc45a258270537a603794ecc067ccfd92f9c67ba9332e788"}, + {file = "memray-1.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1d0a1397b5387b75dc9d9759beb022cb360948584840e850474d7d39ad267f85"}, + {file = "memray-1.14.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:c119b600e7c665e0713f09e25f9ee09733a98035688ecc1ec8fd168fa37a77f6"}, + {file = "memray-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:29a2e7d84d1652ef4664bcceb155630979b4797180b70da35525d963a4ca707f"}, + {file = "memray-1.14.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b3b8d46b6447cdecba3ba100d47c62e78cdad58b00b2d6ba004d6bad318c8668"}, + {file = "memray-1.14.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57f9bf3f1c648f1ea877a84c21c449fdafd8cc105763ada6023e36bae9b45eb8"}, + {file = "memray-1.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7a59346d242fc39041d87a71cb6cf45baf492ffbb69da9690de49346be64a8"}, + {file = "memray-1.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:11fb00105572b70f2aca8b787ce9748b0c94672fbb6334f1604f7f813ca3dca6"}, + {file = "memray-1.14.0.tar.gz", hash = "sha256:b5d8874b7b215551f0ae9fa8aef3f2f52321a6460dc0141aaf9374709e6b0eb7"}, ] [package.dependencies] @@ -2578,10 +2565,10 @@ textual = ">=0.41.0" [package.extras] benchmark = ["asv"] -dev = ["Cython", "asv", "black", "bump2version", "check-manifest", "flake8", "furo", "greenlet", "ipython", "isort", "mypy", "pytest", "pytest-cov", "pytest-textual-snapshot", "setuptools", "sphinx", "sphinx-argparse", "textual (>=0.43,!=0.65.2,!=0.66)", "towncrier"] +dev = ["Cython", "asv", "black", "bump2version", "check-manifest", "flake8", "furo", "greenlet", "ipython", "isort", "mypy", "packaging", "pytest", "pytest-cov", "pytest-textual-snapshot", "setuptools", "sphinx", "sphinx-argparse", "textual (>=0.43,!=0.65.2,!=0.66)", "towncrier"] docs = ["IPython", "bump2version", "furo", "sphinx", "sphinx-argparse", "towncrier"] lint = ["black", "check-manifest", "flake8", "isort", "mypy"] -test = ["Cython", "greenlet", "ipython", "pytest", "pytest-cov", "pytest-textual-snapshot", "setuptools", "textual (>=0.43,!=0.65.2,!=0.66)"] +test = ["Cython", "greenlet", "ipython", "packaging", "pytest", "pytest-cov", "pytest-textual-snapshot", "setuptools", "textual (>=0.43,!=0.65.2,!=0.66)"] [[package]] name = "monotonic" @@ -2596,103 +2583,108 @@ files = [ [[package]] name = "multidict" -version = "6.0.5" +version = "6.1.0" description = "multidict implementation" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, - {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, - {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, - {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, - {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, - {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, - {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, - {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, - {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, - {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, - {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, - {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, - {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, - {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, - {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, - {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + [[package]] name = "mypy" version = "1.11.2" @@ -3018,13 +3010,13 @@ xml = ["lxml (>=4.9.2)"] [[package]] name = "pandas-stubs" -version = "2.2.2.240807" +version = "2.2.2.240909" description = "Type annotations for pandas" optional = true -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "pandas_stubs-2.2.2.240807-py3-none-any.whl", hash = "sha256:893919ad82be4275f0d07bb47a95d08bae580d3fdea308a7acfcb3f02e76186e"}, - {file = "pandas_stubs-2.2.2.240807.tar.gz", hash = "sha256:64a559725a57a449f46225fbafc422520b7410bff9252b661a225b5559192a93"}, + {file = "pandas_stubs-2.2.2.240909-py3-none-any.whl", hash = "sha256:e230f5fa4065f9417804f4d65cd98f86c002efcc07933e8abcd48c3fad9c30a2"}, + {file = "pandas_stubs-2.2.2.240909.tar.gz", hash = "sha256:3c0951a2c3e45e3475aed9d80b7147ae82f176b9e42e9fb321cfdebf3d411b3d"}, ] [package.dependencies] @@ -3249,29 +3241,29 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "plotly" -version = "5.24.0" +version = "5.24.1" description = "An open-source, interactive data visualization library for Python" optional = true python-versions = ">=3.8" files = [ - {file = "plotly-5.24.0-py3-none-any.whl", hash = "sha256:0e54efe52c8cef899f7daa41be9ed97dfb6be622613a2a8f56a86a0634b2b67e"}, - {file = "plotly-5.24.0.tar.gz", hash = "sha256:eae9f4f54448682442c92c1e97148e3ad0c52f0cf86306e1b76daba24add554a"}, + {file = "plotly-5.24.1-py3-none-any.whl", hash = "sha256:f67073a1e637eb0dc3e46324d9d51e2fe76e9727c892dde64ddf1e1b51f29089"}, + {file = "plotly-5.24.1.tar.gz", hash = "sha256:dbc8ac8339d248a4bcc36e08a5659bacfe1b079390b8953533f4eb22169b4bae"}, ] [package.dependencies] @@ -3313,13 +3305,13 @@ poetry-plugin = ["poetry (>=1.0,<2.0)"] [[package]] name = "posthog" -version = "3.6.0" +version = "3.7.0" description = "Integrate PostHog into any python application." optional = false python-versions = "*" files = [ - {file = "posthog-3.6.0-py2.py3-none-any.whl", hash = "sha256:6f8dacc6d14d80734b1d15bd4ab08b049629c5f0fc420cafcf1ce0667c76c83c"}, - {file = "posthog-3.6.0.tar.gz", hash = "sha256:27dbf537241a69fb5f6a3e9561caa2d555d5891d95fa65c27ffa6b52d1fb63b6"}, + {file = "posthog-3.7.0-py2.py3-none-any.whl", hash = "sha256:3555161c3a9557b5666f96d8e1f17f410ea0f07db56e399e336a1656d4e5c722"}, + {file = "posthog-3.7.0.tar.gz", hash = "sha256:b095d4354ba23f8b346ab5daed8ecfc5108772f922006982dfe8b2d29ebc6e0e"}, ] [package.dependencies] @@ -3332,7 +3324,114 @@ six = ">=1.5" [package.extras] dev = ["black", "flake8", "flake8-print", "isort", "pre-commit"] sentry = ["django", "sentry-sdk"] -test = ["coverage", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint", "pytest", "pytest-timeout"] +test = ["coverage", "django", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint", "pytest", "pytest-timeout"] + +[[package]] +name = "propcache" +version = "0.2.0" +description = "Accelerated property cache" +optional = true +python-versions = ">=3.8" +files = [ + {file = "propcache-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c5869b8fd70b81835a6f187c5fdbe67917a04d7e52b6e7cc4e5fe39d55c39d58"}, + {file = "propcache-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:952e0d9d07609d9c5be361f33b0d6d650cd2bae393aabb11d9b719364521984b"}, + {file = "propcache-0.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:33ac8f098df0585c0b53009f039dfd913b38c1d2edafed0cedcc0c32a05aa110"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e48e8875e6c13909c800fa344cd54cc4b2b0db1d5f911f840458a500fde2c2"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388f3217649d6d59292b722d940d4d2e1e6a7003259eb835724092a1cca0203a"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f571aea50ba5623c308aa146eb650eebf7dbe0fd8c5d946e28343cb3b5aad577"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dfafb44f7bb35c0c06eda6b2ab4bfd58f02729e7c4045e179f9a861b07c9850"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3ebe9a75be7ab0b7da2464a77bb27febcb4fab46a34f9288f39d74833db7f61"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d2f0d0f976985f85dfb5f3d685697ef769faa6b71993b46b295cdbbd6be8cc37"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a3dc1a4b165283bd865e8f8cb5f0c64c05001e0718ed06250d8cac9bec115b48"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e0f07b42d2a50c7dd2d8675d50f7343d998c64008f1da5fef888396b7f84630"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e63e3e1e0271f374ed489ff5ee73d4b6e7c60710e1f76af5f0e1a6117cd26394"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:56bb5c98f058a41bb58eead194b4db8c05b088c93d94d5161728515bd52b052b"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7665f04d0c7f26ff8bb534e1c65068409bf4687aa2534faf7104d7182debb336"}, + {file = "propcache-0.2.0-cp310-cp310-win32.whl", hash = "sha256:7cf18abf9764746b9c8704774d8b06714bcb0a63641518a3a89c7f85cc02c2ad"}, + {file = "propcache-0.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:cfac69017ef97db2438efb854edf24f5a29fd09a536ff3a992b75990720cdc99"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:63f13bf09cc3336eb04a837490b8f332e0db41da66995c9fd1ba04552e516354"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608cce1da6f2672a56b24a015b42db4ac612ee709f3d29f27a00c943d9e851de"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:466c219deee4536fbc83c08d09115249db301550625c7fef1c5563a584c9bc87"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc2db02409338bf36590aa985a461b2c96fce91f8e7e0f14c50c5fcc4f229016"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6ed8db0a556343d566a5c124ee483ae113acc9a557a807d439bcecc44e7dfbb"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91997d9cb4a325b60d4e3f20967f8eb08dfcb32b22554d5ef78e6fd1dda743a2"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c7dde9e533c0a49d802b4f3f218fa9ad0a1ce21f2c2eb80d5216565202acab4"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffcad6c564fe6b9b8916c1aefbb37a362deebf9394bd2974e9d84232e3e08504"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:97a58a28bcf63284e8b4d7b460cbee1edaab24634e82059c7b8c09e65284f178"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:945db8ee295d3af9dbdbb698cce9bbc5c59b5c3fe328bbc4387f59a8a35f998d"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:39e104da444a34830751715f45ef9fc537475ba21b7f1f5b0f4d71a3b60d7fe2"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c5ecca8f9bab618340c8e848d340baf68bcd8ad90a8ecd7a4524a81c1764b3db"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c436130cc779806bdf5d5fae0d848713105472b8566b75ff70048c47d3961c5b"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:191db28dc6dcd29d1a3e063c3be0b40688ed76434622c53a284e5427565bbd9b"}, + {file = "propcache-0.2.0-cp311-cp311-win32.whl", hash = "sha256:5f2564ec89058ee7c7989a7b719115bdfe2a2fb8e7a4543b8d1c0cc4cf6478c1"}, + {file = "propcache-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e2e54267980349b723cff366d1e29b138b9a60fa376664a157a342689553f71"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348"}, + {file = "propcache-0.2.0-cp312-cp312-win32.whl", hash = "sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5"}, + {file = "propcache-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ecddc221a077a8132cf7c747d5352a15ed763b674c0448d811f408bf803d9ad7"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0e53cb83fdd61cbd67202735e6a6687a7b491c8742dfc39c9e01e80354956763"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92fe151145a990c22cbccf9ae15cae8ae9eddabfc949a219c9f667877e40853d"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a21ef516d36909931a2967621eecb256018aeb11fc48656e3257e73e2e247a"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f88a4095e913f98988f5b338c1d4d5d07dbb0b6bad19892fd447484e483ba6b"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a5b3bb545ead161be780ee85a2b54fdf7092815995661947812dde94a40f6fb"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67aeb72e0f482709991aa91345a831d0b707d16b0257e8ef88a2ad246a7280bf"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c997f8c44ec9b9b0bcbf2d422cc00a1d9b9c681f56efa6ca149a941e5560da2"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a66df3d4992bc1d725b9aa803e8c5a66c010c65c741ad901e260ece77f58d2f"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3ebbcf2a07621f29638799828b8d8668c421bfb94c6cb04269130d8de4fb7136"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1235c01ddaa80da8235741e80815ce381c5267f96cc49b1477fdcf8c047ef325"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3947483a381259c06921612550867b37d22e1df6d6d7e8361264b6d037595f44"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d5bed7f9805cc29c780f3aee05de3262ee7ce1f47083cfe9f77471e9d6777e83"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4a91d44379f45f5e540971d41e4626dacd7f01004826a18cb048e7da7e96544"}, + {file = "propcache-0.2.0-cp313-cp313-win32.whl", hash = "sha256:f902804113e032e2cdf8c71015651c97af6418363bea8d78dc0911d56c335032"}, + {file = "propcache-0.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:8f188cfcc64fb1266f4684206c9de0e80f54622c3f22a910cbd200478aeae61e"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:53d1bd3f979ed529f0805dd35ddaca330f80a9a6d90bc0121d2ff398f8ed8861"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:83928404adf8fb3d26793665633ea79b7361efa0287dfbd372a7e74311d51ee6"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77a86c261679ea5f3896ec060be9dc8e365788248cc1e049632a1be682442063"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:218db2a3c297a3768c11a34812e63b3ac1c3234c3a086def9c0fee50d35add1f"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7735e82e3498c27bcb2d17cb65d62c14f1100b71723b68362872bca7d0913d90"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:20a617c776f520c3875cf4511e0d1db847a076d720714ae35ffe0df3e440be68"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67b69535c870670c9f9b14a75d28baa32221d06f6b6fa6f77a0a13c5a7b0a5b9"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4569158070180c3855e9c0791c56be3ceeb192defa2cdf6a3f39e54319e56b89"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:db47514ffdbd91ccdc7e6f8407aac4ee94cc871b15b577c1c324236b013ddd04"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:2a60ad3e2553a74168d275a0ef35e8c0a965448ffbc3b300ab3a5bb9956c2162"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:662dd62358bdeaca0aee5761de8727cfd6861432e3bb828dc2a693aa0471a563"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:25a1f88b471b3bc911d18b935ecb7115dff3a192b6fef46f0bfaf71ff4f12418"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:f60f0ac7005b9f5a6091009b09a419ace1610e163fa5deaba5ce3484341840e7"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:74acd6e291f885678631b7ebc85d2d4aec458dd849b8c841b57ef04047833bed"}, + {file = "propcache-0.2.0-cp38-cp38-win32.whl", hash = "sha256:d9b6ddac6408194e934002a69bcaadbc88c10b5f38fb9307779d1c629181815d"}, + {file = "propcache-0.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:676135dcf3262c9c5081cc8f19ad55c8a64e3f7282a21266d05544450bffc3a5"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:25c8d773a62ce0451b020c7b29a35cfbc05de8b291163a7a0f3b7904f27253e6"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:375a12d7556d462dc64d70475a9ee5982465fbb3d2b364f16b86ba9135793638"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1ec43d76b9677637a89d6ab86e1fef70d739217fefa208c65352ecf0282be957"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f45eec587dafd4b2d41ac189c2156461ebd0c1082d2fe7013571598abb8505d1"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc092ba439d91df90aea38168e11f75c655880c12782facf5cf9c00f3d42b562"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa1076244f54bb76e65e22cb6910365779d5c3d71d1f18b275f1dfc7b0d71b4d"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:682a7c79a2fbf40f5dbb1eb6bfe2cd865376deeac65acf9beb607505dced9e12"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e40876731f99b6f3c897b66b803c9e1c07a989b366c6b5b475fafd1f7ba3fb8"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:363ea8cd3c5cb6679f1c2f5f1f9669587361c062e4899fce56758efa928728f8"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:140fbf08ab3588b3468932974a9331aff43c0ab8a2ec2c608b6d7d1756dbb6cb"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e70fac33e8b4ac63dfc4c956fd7d85a0b1139adcfc0d964ce288b7c527537fea"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:b33d7a286c0dc1a15f5fc864cc48ae92a846df287ceac2dd499926c3801054a6"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f6d5749fdd33d90e34c2efb174c7e236829147a2713334d708746e94c4bde40d"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22aa8f2272d81d9317ff5756bb108021a056805ce63dd3630e27d042c8092798"}, + {file = "propcache-0.2.0-cp39-cp39-win32.whl", hash = "sha256:73e4b40ea0eda421b115248d7e79b59214411109a5bc47d0d48e4c73e3b8fcf9"}, + {file = "propcache-0.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:9517d5e9e0731957468c29dbfd0f976736a0e55afaea843726e887f36fe017df"}, + {file = "propcache-0.2.0-py3-none-any.whl", hash = "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036"}, + {file = "propcache-0.2.0.tar.gz", hash = "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70"}, +] [[package]] name = "pyarrow" @@ -3406,18 +3505,18 @@ files = [ [[package]] name = "pydantic" -version = "2.8.2" +version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, - {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] -annotated-types = ">=0.4.0" -pydantic-core = "2.20.1" +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" typing-extensions = [ {version = ">=4.6.1", markers = "python_version < \"3.13\""}, {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, @@ -3425,103 +3524,104 @@ typing-extensions = [ [package.extras] email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.20.1" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, - {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, - {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, - {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, - {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, - {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, - {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, - {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, - {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, - {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, - {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, - {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, - {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, - {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] @@ -4052,123 +4152,103 @@ files = [ [[package]] name = "rapidfuzz" -version = "3.9.6" +version = "3.10.0" description = "rapid fuzzy string matching" optional = true -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "rapidfuzz-3.9.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a7ed0d0b9c85720f0ae33ac5efc8dc3f60c1489dad5c29d735fbdf2f66f0431f"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f3deff6ab7017ed21b9aec5874a07ad13e6b2a688af055837f88b743c7bfd947"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3f9fc060160507b2704f7d1491bd58453d69689b580cbc85289335b14fe8ca"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e86c2b3827fa6169ad6e7d4b790ce02a20acefb8b78d92fa4249589bbc7a2c"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f982e1aafb4bd8207a5e073b1efef9e68a984e91330e1bbf364f9ed157ed83f0"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9196a51d0ec5eaaaf5bca54a85b7b1e666fc944c332f68e6427503af9fb8c49e"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5a514064e02585b1cc09da2fe406a6dc1a7e5f3e92dd4f27c53e5f1465ec81"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e3a4244f65dbc3580b1275480118c3763f9dc29fc3dd96610560cb5e140a4d4a"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f6ebb910a702e41641e1e1dada3843bc11ba9107a33c98daef6945a885a40a07"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:624fbe96115fb39addafa288d583b5493bc76dab1d34d0ebba9987d6871afdf9"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1c59f1c1507b7a557cf3c410c76e91f097460da7d97e51c985343798e9df7a3c"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f0256cb27b6a0fb2e1918477d1b56473cd04acfa245376a342e7c15806a396"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-win32.whl", hash = "sha256:24d473d00d23a30a85802b502b417a7f5126019c3beec91a6739fe7b95388b24"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-win_amd64.whl", hash = "sha256:248f6d2612e661e2b5f9a22bbd5862a1600e720da7bb6ad8a55bb1548cdfa423"}, - {file = "rapidfuzz-3.9.6-cp310-cp310-win_arm64.whl", hash = "sha256:e03fdf0e74f346ed7e798135df5f2a0fb8d6b96582b00ebef202dcf2171e1d1d"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:52e4675f642fbc85632f691b67115a243cd4d2a47bdcc4a3d9a79e784518ff97"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1f93a2f13038700bd245b927c46a2017db3dcd4d4ff94687d74b5123689b873b"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b70500bca460264b8141d8040caee22e9cf0418c5388104ff0c73fb69ee28f"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1e037fb89f714a220f68f902fc6300ab7a33349f3ce8ffae668c3b3a40b0b06"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6792f66d59b86ccfad5e247f2912e255c85c575789acdbad8e7f561412ffed8a"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68d9cffe710b67f1969cf996983608cee4490521d96ea91d16bd7ea5dc80ea98"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63daaeeea76da17fa0bbe7fb05cba8ed8064bb1a0edf8360636557f8b6511961"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d214e063bffa13e3b771520b74f674b22d309b5720d4df9918ff3e0c0f037720"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ed443a2062460f44c0346cb9d269b586496b808c2419bbd6057f54061c9b9c75"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5b0c9b227ee0076fb2d58301c505bb837a290ae99ee628beacdb719f0626d749"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:82c9722b7dfaa71e8b61f8c89fed0482567fb69178e139fe4151fc71ed7df782"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c18897c95c0a288347e29537b63608a8f63a5c3cb6da258ac46fcf89155e723e"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-win32.whl", hash = "sha256:3e910cf08944da381159587709daaad9e59d8ff7bca1f788d15928f3c3d49c2a"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-win_amd64.whl", hash = "sha256:59c4a61fab676d37329fc3a671618a461bfeef53a4d0b8b12e3bc24a14e166f8"}, - {file = "rapidfuzz-3.9.6-cp311-cp311-win_arm64.whl", hash = "sha256:8b4afea244102332973377fddbe54ce844d0916e1c67a5123432291717f32ffa"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:70591b28b218fff351b88cdd7f2359a01a71f9f7f5a2e465ce3715ed4b3c422b"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee2d8355c7343c631a03e57540ea06e8717c19ecf5ff64ea07e0498f7f161457"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:708fb675de0f47b9635d1cc6fbbf80d52cb710d0a1abbfae5c84c46e3abbddc3"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d66c247c2d3bb7a9b60567c395a15a929d0ebcc5f4ceedb55bfa202c38c6e0c"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15146301b32e6e3d2b7e8146db1a26747919d8b13690c7f83a4cb5dc111b3a08"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7a03da59b6c7c97e657dd5cd4bcaab5fe4a2affd8193958d6f4d938bee36679"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d2c2fe19e392dbc22695b6c3b2510527e2b774647e79936bbde49db7742d6f1"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:91aaee4c94cb45930684f583ffc4e7c01a52b46610971cede33586cf8a04a12e"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3f5702828c10768f9281180a7ff8597da1e5002803e1304e9519dd0f06d79a85"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ccd1763b608fb4629a0b08f00b3c099d6395e67c14e619f6341b2c8429c2f310"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc7a0d4b2cb166bc46d02c8c9f7551cde8e2f3c9789df3827309433ee9771163"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7496f53d40560a58964207b52586783633f371683834a8f719d6d965d223a2eb"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-win32.whl", hash = "sha256:5eb1a9272ca71bc72be5415c2fa8448a6302ea4578e181bb7da9db855b367df0"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-win_amd64.whl", hash = "sha256:0d21fc3c0ca507a1180152a6dbd129ebaef48facde3f943db5c1055b6e6be56a"}, - {file = "rapidfuzz-3.9.6-cp312-cp312-win_arm64.whl", hash = "sha256:43bb27a57c29dc5fa754496ba6a1a508480d21ae99ac0d19597646c16407e9f3"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:83a5ac6547a9d6eedaa212975cb8f2ce2aa07e6e30833b40e54a52b9f9999aa4"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:10f06139142ecde67078ebc9a745965446132b998f9feebffd71acdf218acfcc"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74720c3f24597f76c7c3e2c4abdff55f1664f4766ff5b28aeaa689f8ffba5fab"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2bce52b5c150878e558a0418c2b637fb3dbb6eb38e4eb27d24aa839920483e"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1611199f178793ca9a060c99b284e11f6d7d124998191f1cace9a0245334d219"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0308b2ad161daf502908a6e21a57c78ded0258eba9a8f5e2545e2dafca312507"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3eda91832201b86e3b70835f91522587725bec329ec68f2f7faf5124091e5ca7"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ece873c093aedd87fc07c2a7e333d52e458dc177016afa1edaf157e82b6914d8"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d97d3c9d209d5c30172baea5966f2129e8a198fec4a1aeb2f92abb6e82a2edb1"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:6c4550d0db4931f5ebe9f0678916d1b06f06f5a99ba0b8a48b9457fd8959a7d4"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b6b8dd4af6324fc325d9483bec75ecf9be33e590928c9202d408e4eafff6a0a6"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:16122ae448bc89e2bea9d81ce6cb0f751e4e07da39bd1e70b95cae2493857853"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-win32.whl", hash = "sha256:71cc168c305a4445109cd0d4925406f6e66bcb48fde99a1835387c58af4ecfe9"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-win_amd64.whl", hash = "sha256:59ee78f2ecd53fef8454909cda7400fe2cfcd820f62b8a5d4dfe930102268054"}, - {file = "rapidfuzz-3.9.6-cp313-cp313-win_arm64.whl", hash = "sha256:58b4ce83f223605c358ae37e7a2d19a41b96aa65b1fede99cc664c9053af89ac"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9f469dbc9c4aeaac7dd005992af74b7dff94aa56a3ea063ce64e4b3e6736dd2f"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a9ed7ad9adb68d0fe63a156fe752bbf5f1403ed66961551e749641af2874da92"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39ffe48ffbeedf78d120ddfb9d583f2ca906712159a4e9c3c743c9f33e7b1775"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8502ccdea9084d54b6f737d96a3b60a84e3afed9d016686dc979b49cdac71613"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6a4bec4956e06b170ca896ba055d08d4c457dac745548172443982956a80e118"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c0488b1c273be39e109ff885ccac0448b2fa74dea4c4dc676bcf756c15f16d6"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0542c036cb6acf24edd2c9e0411a67d7ba71e29e4d3001a082466b86fc34ff30"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0a96b52c9f26857bf009e270dcd829381e7a634f7ddd585fa29b87d4c82146d9"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:6edd3cd7c4aa8c68c716d349f531bd5011f2ca49ddade216bb4429460151559f"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:50b2fb55d7ed58c66d49c9f954acd8fc4a3f0e9fd0ff708299bd8abb68238d0e"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:32848dfe54391636b84cda1823fd23e5a6b1dbb8be0e9a1d80e4ee9903820994"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:29146cb7a1bf69c87e928b31bffa54f066cb65639d073b36e1425f98cccdebc6"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-win32.whl", hash = "sha256:aed13e5edacb0ecadcc304cc66e93e7e77ff24f059c9792ee602c0381808e10c"}, - {file = "rapidfuzz-3.9.6-cp38-cp38-win_amd64.whl", hash = "sha256:af440e36b828922256d0b4d79443bf2cbe5515fc4b0e9e96017ec789b36bb9fc"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:efa674b407424553024522159296690d99d6e6b1192cafe99ca84592faff16b4"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0b40ff76ee19b03ebf10a0a87938f86814996a822786c41c3312d251b7927849"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16a6c7997cb5927ced6f617122eb116ba514ec6b6f60f4803e7925ef55158891"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3f42504bdc8d770987fc3d99964766d42b2a03e4d5b0f891decdd256236bae0"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9462aa2be9f60b540c19a083471fdf28e7cf6434f068b631525b5e6251b35e"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1629698e68f47609a73bf9e73a6da3a4cac20bc710529215cbdf111ab603665b"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68bc7621843d8e9a7fd1b1a32729465bf94b47b6fb307d906da168413331f8d6"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c6254c50f15bc2fcc33cb93a95a81b702d9e6590f432a7f7822b8c7aba9ae288"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:7e535a114fa575bc143e175e4ca386a467ec8c42909eff500f5f0f13dc84e3e0"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d50acc0e9d67e4ba7a004a14c42d1b1e8b6ca1c515692746f4f8e7948c673167"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:fa742ec60bec53c5a211632cf1d31b9eb5a3c80f1371a46a23ac25a1fa2ab209"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c256fa95d29cbe5aa717db790b231a9a5b49e5983d50dc9df29d364a1db5e35b"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-win32.whl", hash = "sha256:89acbf728b764421036c173a10ada436ecca22999851cdc01d0aa904c70d362d"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-win_amd64.whl", hash = "sha256:c608fcba8b14d86c04cb56b203fed31a96e8a1ebb4ce99e7b70313c5bf8cf497"}, - {file = "rapidfuzz-3.9.6-cp39-cp39-win_arm64.whl", hash = "sha256:d41c00ded0e22e9dba88ff23ebe0dc9d2a5f21ba2f88e185ea7374461e61daa9"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a65c2f63218ea2dedd56fc56361035e189ca123bd9c9ce63a9bef6f99540d681"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:680dc78a5f889d3b89f74824b89fe357f49f88ad10d2c121e9c3ad37bac1e4eb"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8ca862927a0b05bd825e46ddf82d0724ea44b07d898ef639386530bf9b40f15"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2116fa1fbff21fa52cd46f3cfcb1e193ba1d65d81f8b6e123193451cd3d6c15e"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dcb7d9afd740370a897c15da61d3d57a8d54738d7c764a99cedb5f746d6a003"}, - {file = "rapidfuzz-3.9.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1a5bd6401bb489e14cbb5981c378d53ede850b7cc84b2464cad606149cc4e17d"}, - {file = "rapidfuzz-3.9.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:29fda70b9d03e29df6fc45cc27cbcc235534b1b0b2900e0a3ae0b43022aaeef5"}, - {file = "rapidfuzz-3.9.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:88144f5f52ae977df9352029488326afadd7a7f42c6779d486d1f82d43b2b1f2"}, - {file = "rapidfuzz-3.9.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:715aeaabafba2709b9dd91acb2a44bad59d60b4616ef90c08f4d4402a3bbca60"}, - {file = "rapidfuzz-3.9.6-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:af26ebd3714224fbf9bebbc27bdbac14f334c15f5d7043699cd694635050d6ca"}, - {file = "rapidfuzz-3.9.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101bd2df438861a005ed47c032631b7857dfcdb17b82beeeb410307983aac61d"}, - {file = "rapidfuzz-3.9.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2185e8e29809b97ad22a7f99281d1669a89bdf5fa1ef4ef1feca36924e675367"}, - {file = "rapidfuzz-3.9.6-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9e53c72d08f0e9c6e4a369e52df5971f311305b4487690c62e8dd0846770260c"}, - {file = "rapidfuzz-3.9.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a0cb157162f0cdd62e538c7bd298ff669847fc43a96422811d5ab933f4c16c3a"}, - {file = "rapidfuzz-3.9.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bb5ff2bd48132ed5e7fbb8f619885facb2e023759f2519a448b2c18afe07e5d"}, - {file = "rapidfuzz-3.9.6-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6dc37f601865e8407e3a8037ffbc3afe0b0f837b2146f7632bd29d087385babe"}, - {file = "rapidfuzz-3.9.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a657eee4b94668faf1fa2703bdd803654303f7e468eb9ba10a664d867ed9e779"}, - {file = "rapidfuzz-3.9.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:51be6ab5b1d5bb32abd39718f2a5e3835502e026a8272d139ead295c224a6f5e"}, - {file = "rapidfuzz-3.9.6.tar.gz", hash = "sha256:5cf2a7d621e4515fee84722e93563bf77ff2cbe832a77a48b81f88f9e23b9e8d"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:884453860de029380dded8f3c1918af2d8eb5adf8010261645c7e5c88c2b5428"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718c9bd369288aca5fa929df6dbf66fdbe9768d90940a940c0b5cdc96ade4309"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a68e3724b7dab761c01816aaa64b0903734d999d5589daf97c14ef5cc0629a8e"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1af60988d47534246d9525f77288fdd9de652608a4842815d9018570b959acc6"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3084161fc3e963056232ef8d937449a2943852e07101f5a136c8f3cfa4119217"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cd67d3d017296d98ff505529104299f78433e4b8af31b55003d901a62bbebe9"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b11a127ac590fc991e8a02c2d7e1ac86e8141c92f78546f18b5c904064a0552c"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aadce42147fc09dcef1afa892485311e824c050352e1aa6e47f56b9b27af4cf0"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b54853c2371bf0e38d67da379519deb6fbe70055efb32f6607081641af3dc752"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ce19887268e90ee81a3957eef5e46a70ecc000713796639f83828b950343f49e"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f39a2a5ded23b9b9194ec45740dce57177b80f86c6d8eba953d3ff1a25c97766"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0ec338d5f4ad8d9339a88a08db5c23e7f7a52c2b2a10510c48a0cef1fb3f0ddc"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-win32.whl", hash = "sha256:56fd15ea8f4c948864fa5ebd9261c67cf7b89a1c517a0caef4df75446a7af18c"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:43dfc5e733808962a822ff6d9c29f3039a3cfb3620706f5953e17cfe4496724c"}, + {file = "rapidfuzz-3.10.0-cp310-cp310-win_arm64.whl", hash = "sha256:ae7966f205b5a7fde93b44ca8fed37c1c8539328d7f179b1197de34eceaceb5f"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bb0013795b40db5cf361e6f21ee7cda09627cf294977149b50e217d7fe9a2f03"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:69ef5b363afff7150a1fbe788007e307b9802a2eb6ad92ed51ab94e6ad2674c6"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c582c46b1bb0b19f1a5f4c1312f1b640c21d78c371a6615c34025b16ee56369b"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:288f6f6e7410cacb115fb851f3f18bf0e4231eb3f6cb5bd1cec0e7b25c4d039d"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9e29a13d2fd9be3e7d8c26c7ef4ba60b5bc7efbc9dbdf24454c7e9ebba31768"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea2da0459b951ee461bd4e02b8904890bd1c4263999d291c5cd01e6620177ad4"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457827ba82261aa2ae6ac06a46d0043ab12ba7216b82d87ae1434ec0f29736d6"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5d350864269d56f51ab81ab750c9259ae5cad3152c0680baef143dcec92206a1"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a9b8f51e08c3f983d857c3889930af9ddecc768453822076683664772d87e374"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7f3a6aa6e70fc27e4ff5c479f13cc9fc26a56347610f5f8b50396a0d344c5f55"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:803f255f10d63420979b1909ef976e7d30dec42025c9b067fc1d2040cc365a7e"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2026651761bf83a0f31495cc0f70840d5c0d54388f41316e3f9cb51bd85e49a5"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-win32.whl", hash = "sha256:4df75b3ebbb8cfdb9bf8b213b168620b88fd92d0c16a8bc9f9234630b282db59"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f9f0bbfb6787b97c51516f3ccf97737d504db5d239ad44527673b81f598b84ab"}, + {file = "rapidfuzz-3.10.0-cp311-cp311-win_arm64.whl", hash = "sha256:10fdad800441b9c97d471a937ba7d42625f1b530db05e572f1cb7d401d95c893"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7dc87073ba3a40dd65591a2100aa71602107443bf10770579ff9c8a3242edb94"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a425a0a868cf8e9c6e93e1cda4b758cdfd314bb9a4fc916c5742c934e3613480"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86d5d1d75e61df060c1e56596b6b0a4422a929dff19cc3dbfd5eee762c86b61"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34f213d59219a9c3ca14e94a825f585811a68ac56b4118b4dc388b5b14afc108"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96ad46f5f56f70fab2be9e5f3165a21be58d633b90bf6e67fc52a856695e4bcf"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9178277f72d144a6c7704d7ae7fa15b7b86f0f0796f0e1049c7b4ef748a662ef"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76a35e9e19a7c883c422ffa378e9a04bc98cb3b29648c5831596401298ee51e6"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a6405d34c394c65e4f73a1d300c001f304f08e529d2ed6413b46ee3037956eb"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bd393683129f446a75d8634306aed7e377627098a1286ff3af2a4f1736742820"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b0445fa9880ead81f5a7d0efc0b9c977a947d8052c43519aceeaf56eabaf6843"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c50bc308fa29767ed8f53a8d33b7633a9e14718ced038ed89d41b886e301da32"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e89605afebbd2d4b045bccfdc12a14b16fe8ccbae05f64b4b4c64a97dad1c891"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-win32.whl", hash = "sha256:2db9187f3acf3cd33424ecdbaad75414c298ecd1513470df7bda885dcb68cc15"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:50e3d0c72ea15391ba9531ead7f2068a67c5b18a6a365fef3127583aaadd1725"}, + {file = "rapidfuzz-3.10.0-cp312-cp312-win_arm64.whl", hash = "sha256:9eac95b4278bd53115903d89118a2c908398ee8bdfd977ae844f1bd2b02b917c"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fe5231e8afd069c742ac5b4f96344a0fe4aff52df8e53ef87faebf77f827822c"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:886882367dbc985f5736356105798f2ae6e794e671fc605476cbe2e73838a9bb"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b33e13e537e3afd1627d421a142a12bbbe601543558a391a6fae593356842f6e"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:094c26116d55bf9c53abd840d08422f20da78ec4c4723e5024322321caedca48"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:545fc04f2d592e4350f59deb0818886c1b444ffba3bec535b4fbb97191aaf769"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:916a6abf3632e592b937c3d04c00a6efadd8fd30539cdcd4e6e4d92be7ca5d90"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb6ec40cef63b1922083d33bfef2f91fc0b0bc07b5b09bfee0b0f1717d558292"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c77a7330dd15c7eb5fd3631dc646fc96327f98db8181138766bd14d3e905f0ba"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:949b5e9eeaa4ecb4c7e9c2a4689dddce60929dd1ff9c76a889cdbabe8bbf2171"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b5363932a5aab67010ae1a6205c567d1ef256fb333bc23c27582481606be480c"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5dd6eec15b13329abe66cc241b484002ecb0e17d694491c944a22410a6a9e5e2"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79e7f98525b60b3c14524e0a4e1fedf7654657b6e02eb25f1be897ab097706f3"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-win32.whl", hash = "sha256:d29d1b9857c65f8cb3a29270732e1591b9bacf89de9d13fa764f79f07d8f1fd2"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:fa9720e56663cc3649d62b4b5f3145e94b8f5611e8a8e1b46507777249d46aad"}, + {file = "rapidfuzz-3.10.0-cp313-cp313-win_arm64.whl", hash = "sha256:eda4c661e68dddd56c8fbfe1ca35e40dd2afd973f7ebb1605f4d151edc63dff8"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cffbc50e0767396ed483900900dd58ce4351bc0d40e64bced8694bd41864cc71"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c038b9939da3035afb6cb2f465f18163e8f070aba0482923ecff9443def67178"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca366c2e2a54e2f663f4529b189fdeb6e14d419b1c78b754ec1744f3c01070d4"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c4c82b1689b23b1b5e6a603164ed2be41b6f6de292a698b98ba2381e889eb9d"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98f6ebe28831a482981ecfeedc8237047878424ad0c1add2c7f366ba44a20452"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd1a7676ee2a4c8e2f7f2550bece994f9f89e58afb96088964145a83af7408b"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec9139baa3f85b65adc700eafa03ed04995ca8533dd56c924f0e458ffec044ab"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:26de93e6495078b6af4c4d93a42ca067b16cc0e95699526c82ab7d1025b4d3bf"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f3a0bda83c18195c361b5500377d0767749f128564ca95b42c8849fd475bb327"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:63e4c175cbce8c3adc22dca5e6154588ae673f6c55374d156f3dac732c88d7de"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4dd3d8443970eaa02ab5ae45ce584b061f2799cd9f7e875190e2617440c1f9d4"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e5ddb2388610799fc46abe389600625058f2a73867e63e20107c5ad5ffa57c47"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-win32.whl", hash = "sha256:2e9be5d05cd960914024412b5406fb75a82f8562f45912ff86255acbfdbfb78e"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:47aca565a39c9a6067927871973ca827023e8b65ba6c5747f4c228c8d7ddc04f"}, + {file = "rapidfuzz-3.10.0-cp39-cp39-win_arm64.whl", hash = "sha256:b0732343cdc4273b5921268026dd7266f75466eb21873cb7635a200d9d9c3fac"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f744b5eb1469bf92dd143d36570d2bdbbdc88fe5cb0b5405e53dd34f479cbd8a"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b67cc21a14327a0eb0f47bc3d7e59ec08031c7c55220ece672f9476e7a8068d3"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fe5783676f0afba4a522c80b15e99dbf4e393c149ab610308a8ef1f04c6bcc8"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4688862f957c8629d557d084f20b2d803f8738b6c4066802a0b1cc472e088d9"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20bd153aacc244e4c907d772c703fea82754c4db14f8aa64d75ff81b7b8ab92d"}, + {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:50484d563f8bfa723c74c944b0bb15b9e054db9c889348c8c307abcbee75ab92"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5897242d455461f2c5b82d7397b29341fd11e85bf3608a522177071044784ee8"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:116c71a81e046ba56551d8ab68067ca7034d94b617545316d460a452c5c3c289"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0a547e4350d1fa32624d3eab51eff8cf329f4cae110b4ea0402486b1da8be40"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:399b9b79ccfcf50ca3bad7692bc098bb8eade88d7d5e15773b7f866c91156d0c"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7947a425d1be3e744707ee58c6cb318b93a56e08f080722dcc0347e0b7a1bb9a"}, + {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:94c48b4a2a4b1d22246f48e2b11cae01ec7d23f0c9123f8bb822839ad79d0a88"}, + {file = "rapidfuzz-3.10.0.tar.gz", hash = "sha256:6b62af27e65bb39276a66533655a2fa3c60a487b03935721c45b7809527979be"}, ] [package.extras] -full = ["numpy"] +all = ["numpy"] [[package]] name = "readchar" @@ -4183,90 +4263,105 @@ files = [ [[package]] name = "regex" -version = "2024.7.24" +version = "2024.9.11" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" files = [ - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa"}, - {file = "regex-2024.7.24-cp310-cp310-win32.whl", hash = "sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66"}, - {file = "regex-2024.7.24-cp310-cp310-win_amd64.whl", hash = "sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e"}, - {file = "regex-2024.7.24-cp311-cp311-win32.whl", hash = "sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c"}, - {file = "regex-2024.7.24-cp311-cp311-win_amd64.whl", hash = "sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38"}, - {file = "regex-2024.7.24-cp312-cp312-win32.whl", hash = "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc"}, - {file = "regex-2024.7.24-cp312-cp312-win_amd64.whl", hash = "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8"}, - {file = "regex-2024.7.24-cp38-cp38-win32.whl", hash = "sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96"}, - {file = "regex-2024.7.24-cp38-cp38-win_amd64.whl", hash = "sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9"}, - {file = "regex-2024.7.24-cp39-cp39-win32.whl", hash = "sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1"}, - {file = "regex-2024.7.24-cp39-cp39-win_amd64.whl", hash = "sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9"}, - {file = "regex-2024.7.24.tar.gz", hash = "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, ] [[package]] @@ -4337,6 +4432,20 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "returns" version = "0.23.0" @@ -4357,18 +4466,19 @@ compatible-mypy = ["mypy (>=1.10,<1.11)"] [[package]] name = "rich" -version = "13.8.0" +version = "13.9.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "rich-13.8.0-py3-none-any.whl", hash = "sha256:2e85306a063b9492dffc86278197a60cbece75bcb766022f3436f567cae11bdc"}, - {file = "rich-13.8.0.tar.gz", hash = "sha256:a5ac1f1cd448ade0d59cc3356f7db7a7ccda2c8cbae9c7a90c28ff463d3e91f4"}, + {file = "rich-13.9.2-py3-none-any.whl", hash = "sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1"}, + {file = "rich-13.9.2.tar.gz", hash = "sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c"}, ] [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.11\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] @@ -4389,32 +4499,32 @@ xmod = "*" [[package]] name = "scikit-learn" -version = "1.5.1" +version = "1.5.2" description = "A set of python modules for machine learning and data mining" optional = true python-versions = ">=3.9" files = [ - {file = "scikit_learn-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:781586c414f8cc58e71da4f3d7af311e0505a683e112f2f62919e3019abd3745"}, - {file = "scikit_learn-1.5.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5b213bc29cc30a89a3130393b0e39c847a15d769d6e59539cd86b75d276b1a7"}, - {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ff4ba34c2abff5ec59c803ed1d97d61b036f659a17f55be102679e88f926fac"}, - {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:161808750c267b77b4a9603cf9c93579c7a74ba8486b1336034c2f1579546d21"}, - {file = "scikit_learn-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:10e49170691514a94bb2e03787aa921b82dbc507a4ea1f20fd95557862c98dc1"}, - {file = "scikit_learn-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:154297ee43c0b83af12464adeab378dee2d0a700ccd03979e2b821e7dd7cc1c2"}, - {file = "scikit_learn-1.5.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b5e865e9bd59396220de49cb4a57b17016256637c61b4c5cc81aaf16bc123bbe"}, - {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:909144d50f367a513cee6090873ae582dba019cb3fca063b38054fa42704c3a4"}, - {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689b6f74b2c880276e365fe84fe4f1befd6a774f016339c65655eaff12e10cbf"}, - {file = "scikit_learn-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:9a07f90846313a7639af6a019d849ff72baadfa4c74c778821ae0fad07b7275b"}, - {file = "scikit_learn-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5944ce1faada31c55fb2ba20a5346b88e36811aab504ccafb9f0339e9f780395"}, - {file = "scikit_learn-1.5.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0828673c5b520e879f2af6a9e99eee0eefea69a2188be1ca68a6121b809055c1"}, - {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508907e5f81390e16d754e8815f7497e52139162fd69c4fdbd2dfa5d6cc88915"}, - {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97625f217c5c0c5d0505fa2af28ae424bd37949bb2f16ace3ff5f2f81fb4498b"}, - {file = "scikit_learn-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:da3f404e9e284d2b0a157e1b56b6566a34eb2798205cba35a211df3296ab7a74"}, - {file = "scikit_learn-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88e0672c7ac21eb149d409c74cc29f1d611d5158175846e7a9c2427bd12b3956"}, - {file = "scikit_learn-1.5.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7b073a27797a283187a4ef4ee149959defc350b46cbf63a84d8514fe16b69855"}, - {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b59e3e62d2be870e5c74af4e793293753565c7383ae82943b83383fdcf5cc5c1"}, - {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd8d3a19d4bd6dc5a7d4f358c8c3a60934dc058f363c34c0ac1e9e12a31421d"}, - {file = "scikit_learn-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:5f57428de0c900a98389c4a433d4a3cf89de979b3aa24d1c1d251802aa15e44d"}, - {file = "scikit_learn-1.5.1.tar.gz", hash = "sha256:0ea5d40c0e3951df445721927448755d3fe1d80833b0b7308ebff5d2a45e6414"}, + {file = "scikit_learn-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:299406827fb9a4f862626d0fe6c122f5f87f8910b86fe5daa4c32dcd742139b6"}, + {file = "scikit_learn-1.5.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2d4cad1119c77930b235579ad0dc25e65c917e756fe80cab96aa3b9428bd3fb0"}, + {file = "scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c412ccc2ad9bf3755915e3908e677b367ebc8d010acbb3f182814524f2e5540"}, + {file = "scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a686885a4b3818d9e62904d91b57fa757fc2bed3e465c8b177be652f4dd37c8"}, + {file = "scikit_learn-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:c15b1ca23d7c5f33cc2cb0a0d6aaacf893792271cddff0edbd6a40e8319bc113"}, + {file = "scikit_learn-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03b6158efa3faaf1feea3faa884c840ebd61b6484167c711548fce208ea09445"}, + {file = "scikit_learn-1.5.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1ff45e26928d3b4eb767a8f14a9a6efbf1cbff7c05d1fb0f95f211a89fd4f5de"}, + {file = "scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f763897fe92d0e903aa4847b0aec0e68cadfff77e8a0687cabd946c89d17e675"}, + {file = "scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8b0ccd4a902836493e026c03256e8b206656f91fbcc4fde28c57a5b752561f1"}, + {file = "scikit_learn-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:6c16d84a0d45e4894832b3c4d0bf73050939e21b99b01b6fd59cbb0cf39163b6"}, + {file = "scikit_learn-1.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f932a02c3f4956dfb981391ab24bda1dbd90fe3d628e4b42caef3e041c67707a"}, + {file = "scikit_learn-1.5.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3b923d119d65b7bd555c73be5423bf06c0105678ce7e1f558cb4b40b0a5502b1"}, + {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, + {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, + {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, + {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, + {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, + {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca64b3089a6d9b9363cd3546f8978229dcbb737aceb2c12144ee3f70f95684b7"}, + {file = "scikit_learn-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:3bed4909ba187aca80580fe2ef370d9180dcf18e621a27c4cf2ef10d279a7efe"}, + {file = "scikit_learn-1.5.2.tar.gz", hash = "sha256:b4237ed7b3fdd0a4882792e68ef2545d5baa50aca3bb45aa7df468138ad8f94d"}, ] [package.dependencies] @@ -4426,11 +4536,11 @@ threadpoolctl = ">=3.1.0" [package.extras] benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] build = ["cython (>=3.0.10)", "meson-python (>=0.16.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.30)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-design (>=0.6.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] maintenance = ["conda-lock (==2.5.6)"] -tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] +tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.30)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] [[package]] name = "scipy" @@ -4484,13 +4594,13 @@ test = ["Cython", "array-api-strict (>=2.0)", "asv", "gmpy2", "hypothesis (>=6.3 [[package]] name = "sentry-sdk" -version = "2.13.0" +version = "2.16.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = ">=3.6" files = [ - {file = "sentry_sdk-2.13.0-py2.py3-none-any.whl", hash = "sha256:6beede8fc2ab4043da7f69d95534e320944690680dd9a963178a49de71d726c6"}, - {file = "sentry_sdk-2.13.0.tar.gz", hash = "sha256:8d4a576f7a98eb2fdb40e13106e41f330e5c79d72a68be1316e7852cf4995260"}, + {file = "sentry_sdk-2.16.0-py2.py3-none-any.whl", hash = "sha256:49139c31ebcd398f4f6396b18910610a0c1602f6e67083240c33019d1f6aa30c"}, + {file = "sentry_sdk-2.16.0.tar.gz", hash = "sha256:90f733b32e15dfc1999e6b7aca67a38688a567329de4d6e184154a73f96c6892"}, ] [package.dependencies] @@ -4513,6 +4623,7 @@ falcon = ["falcon (>=1.4)"] fastapi = ["fastapi (>=0.79.0)"] flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"] grpcio = ["grpcio (>=1.21.1)", "protobuf (>=3.8.0)"] +http2 = ["httpcore[http2] (==1.*)"] httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] huggingface-hub = ["huggingface-hub (>=0.22)"] @@ -4535,44 +4646,52 @@ tornado = ["tornado (>=6)"] [[package]] name = "serpyco-rs" -version = "1.10.2" +version = "1.11.0" description = "" optional = false python-versions = ">=3.9" files = [ - {file = "serpyco_rs-1.10.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e01d824fdebb9bded57ec40b9ac0ca3b312ad617fd5deba61113a3b23bcb915d"}, - {file = "serpyco_rs-1.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ef9a31f8d62c17b1ccfffb3e91c5aed2d6fd2187c7611ee3ca1b572046150cd"}, - {file = "serpyco_rs-1.10.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aab2241b2d87bca5f15d5d34a3948b1c9ad1724cc55d1332e0c5325aff02635f"}, - {file = "serpyco_rs-1.10.2-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:87d8118e9ba6e37aee1b0f7c14b19fe494f1589dc81ae0cc5168812779e1bfab"}, - {file = "serpyco_rs-1.10.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d18a77d23aeb49904b2462410e57b4027511158845291bf6251e5857a881d60"}, - {file = "serpyco_rs-1.10.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8da7ff487ada75f6b724d6ef9e40cde5cf703a2b89e6a3f466a8db0049e153a"}, - {file = "serpyco_rs-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5212fa00ff8874ecabca0cf5f11eb7c1291b55ec9ee6aa7ee3ae2ec344abcf7f"}, - {file = "serpyco_rs-1.10.2-cp310-none-win_amd64.whl", hash = "sha256:ff83f5296f0ab08e77d09a4888020e636d4385a642fec52eacd2ab480d0ec22c"}, - {file = "serpyco_rs-1.10.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d0e6d6546145ba30d6032381b27261e338f7c1b96b9fb0773a481970a809827"}, - {file = "serpyco_rs-1.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf4d5c69d1fcd7007b7792cb5ea62a0702822f6f8982349f44b795677ab7414c"}, - {file = "serpyco_rs-1.10.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fc4c1241c0707bfdd93991c0a2cea3f51a17acad343d9b5c296fc0a9f044d78"}, - {file = "serpyco_rs-1.10.2-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:413fe29db4cab826269371a89ff9ccbd897ee7ff0eaaf1090362fdb86d5b8beb"}, - {file = "serpyco_rs-1.10.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54ce4d5ac0ac4d62911998bfba1ac149a61c43f5dbfa23f831f0d87290c1861a"}, - {file = "serpyco_rs-1.10.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd9c8a31440a3158c601fdcd523e77cd5fefa2ae5be061a4151c38a7a6060624"}, - {file = "serpyco_rs-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8e323f5420c3e6f99627291a2d47d7fcd7f5c4433aaa6cc35e15d5b22ba19d6"}, - {file = "serpyco_rs-1.10.2-cp311-none-win_amd64.whl", hash = "sha256:743c1e1943f51883cb498c2c16c5f49bab2adb991c842077fcd0fa5a1658da25"}, - {file = "serpyco_rs-1.10.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:6379d789daff44e5f535d7e1c0131b30cee86988e9561cc9d98e87021188220d"}, - {file = "serpyco_rs-1.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805162d7b67fd08b04b1e2ef1deeaedc37c7ee24a200f24778fb98b9fe7f5cdd"}, - {file = "serpyco_rs-1.10.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1366df15ae2548a8a063eca84b9a8c2af92ac55df73ce60a7c4f2dfe71e2526b"}, - {file = "serpyco_rs-1.10.2-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:35d0a1a1a69ae074b123f6ad1487dc67717727d9dce4f95a393298743d60aafb"}, - {file = "serpyco_rs-1.10.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a79517070e0b021803cafdf11d326e1149eac4a226443040e9fa1492c74337b"}, - {file = "serpyco_rs-1.10.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bdd2b8d3b9160ddcab0400ca5e258c16e870ae49c6586ed5405c18e8910c957b"}, - {file = "serpyco_rs-1.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:045965a32c651797a73c7b7165165ed0d78efc233af4bf24c47acd41d222fae8"}, - {file = "serpyco_rs-1.10.2-cp312-none-win_amd64.whl", hash = "sha256:c6c95f6c9e04af94c33e4e514291df7380c3960a155e9fe264ccaaa46d4d0de8"}, - {file = "serpyco_rs-1.10.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f19a82836699d102b288b17ae370dd4d37af60ccd2254f5bfdbd053d168cecee"}, - {file = "serpyco_rs-1.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c3830bb3f6a342825e27592e86baa46774bfb1f08c82dbf561b5f1380a18b48"}, - {file = "serpyco_rs-1.10.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f726392e6380b1e7d642d7633ac27929c8616a59db0a54632f5a9ab80987e071"}, - {file = "serpyco_rs-1.10.2-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9ce029f8f29f4f335d0f3c9e005b71d7e8a934735d9654e3f03ccc54d50c107a"}, - {file = "serpyco_rs-1.10.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e1f011370259602b55141ce866bf31dcdc9d8b68105c32f18ee442bc651ee880"}, - {file = "serpyco_rs-1.10.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14d9e22016e2860c1f524aa123cfadd4a4eea25af10d1be76cc3d97d9c85c2e2"}, - {file = "serpyco_rs-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:441b8045f91f30120c00a1f617a0ad6f22c1753c6b98899e8476d6e7775a3667"}, - {file = "serpyco_rs-1.10.2-cp39-none-win_amd64.whl", hash = "sha256:a124608cc998e3854fc743dea5dd7d948edbeaa70c1c1777b6dbb4b64ce465b0"}, - {file = "serpyco_rs-1.10.2.tar.gz", hash = "sha256:9cf06956eb14b326e522c9665aa5136f8fd7ece2df8a393c2e84bee8204362d0"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4b2bd933539bd8c84315e2fb5ae52ef7a58ace5a6dfe3f8b73f74dc71216779e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:627f957889ff73c4d2269fc7b6bba93212381befe03633e7cb5495de66ba9a33"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0933620abc01434023e0e3e22255b7e4ab9b427b5a9a5ee00834656d792377a"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9ce46683d92e34abb20304817fc5ac6cb141a06fc7468dedb1d8865a8a9682f6"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bda437d86e8859bf91c189c1f4650899822f6d6d7b02b48f5729da904eb7bb7d"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a72bfbd282af17ebe76d122639013e802c09902543fdbbd828fb2159ec9755e"}, + {file = "serpyco_rs-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d4808df5384e3e8581e31a90ba7a1fa501c0837b1f174284bb8a4555b6864ea"}, + {file = "serpyco_rs-1.11.0-cp310-none-win_amd64.whl", hash = "sha256:c7b60aef4c16d68efb0d6241f05d0a434d873d98449cbb4366b0d385f0a7172b"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d47ee577cf4d69b53917615cb031ad8708eb2f59fe78194b1968c13130fc2f7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6090d9a1487237cdd4e9362a823eede23249602019b917e7bd57846179286e79"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7192eb3df576386fefd595ea31ae25c62522841ffec7e7aeb37a80b55bdc3213"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b52ef8affb7e71b9b98a7d5216d6a7ad03b04e990acb147cd9211c8b931c5487"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3480e09e473560c60e74aaa789e6b4d079637371aae0a98235440111464bbba7"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c92e36b0ab6fe866601c2331f7e99c809a126d21963c03d8a5c29331526deed"}, + {file = "serpyco_rs-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84f497361952d4566bc1f77e9e15a84a2614f593cc671fbf0a0fa80046f9c3d7"}, + {file = "serpyco_rs-1.11.0-cp311-none-win_amd64.whl", hash = "sha256:37fc1cf192bef9784fbf1f4e03cec21750b9e704bef55cc0442f71a715eee920"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3ea93d485f03dc8b0cfb0d477f0ad2e86e78f0461b53010656ab5b4db1b41fb0"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7772410d15694b03f9c5500a2c47d62eed76e191bea4087ad042250346b1a38e"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42118463c1679846cffd2f06f47744c9b9eb33c5d0448afd88ea19e1a81a8ddd"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:79481a455b76cc56021dc55bb6d5bdda1b2b32bcb6a1ee711b597140d112e9b1"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8fd79051f9af9591fc03cf7d3033ff180416301f6a4fd3d1e3d92ebd2d68697"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d29c8f9aeed734a3b51f7349d04ec9063516ffa4e10b632d75e9b1309e4930e4"}, + {file = "serpyco_rs-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15609158b0d9591ffa118302cd9d0039970cb3faf91dce32975f7d276e7411d5"}, + {file = "serpyco_rs-1.11.0-cp312-none-win_amd64.whl", hash = "sha256:00081eae77fbf4c5d88371c5586317ab02ccb293a330b460869a283edf2b7b69"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3028893366a1985adcedb13fa8f6f98c087c185efc427f94c2ccdafa40f45832"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c18bf511316f3abf648a68ee62ef88617bec57d3fcde69466b4361102715ae5"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7dde9ef09cdfaf7c62378186b9e29f54ec76114be4c347be6a06dd559c5681e"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:18500ebc5e75285841e35585a238629a990b709e14f68933233640d15ca17d5f"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47c23132d4e03982703a7630aa09877b41e499722142f76b6153f6619b612f3"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5f8e6ba499f6a0825bee0d8f8764569d367af871b563fc6512c171474e8e5383"}, + {file = "serpyco_rs-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15438a076047c34cff6601a977df54948e8d39d1a86f89d05c48bc60f4c12a61"}, + {file = "serpyco_rs-1.11.0-cp313-none-win_amd64.whl", hash = "sha256:84ee2c109415bd81904fc9abb9aec86a5dd13166808c21142cf23ec639f683bd"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5c97c16c865261577fac4effeccc7ef5e0a1e8e35e7a3ee6c90c77c3a4cd7ff9"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47825e70f86fd6ef7c4a835dea3d6e8eef4fee354ed7b39ced99f31aba74a86e"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24d220220365110edba2f778f41ab3cf396883da0f26e1361a3ada9bd0227f73"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3a46f334af5a9d77acc6e1e58f355ae497900a2798929371f0545e274f6e6166"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d72b748acce4b4e3c7c9724e1eb33d033a1c26b08a698b393e0288060e0901"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2b8b6f205e8cc038d4d30dd0e70eece7bbecc816eb2f3787c330dc2218e232d"}, + {file = "serpyco_rs-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038d748bfff31f150f0c3edab2766b8843edb952cb1bd3bf547886beb0912dae"}, + {file = "serpyco_rs-1.11.0-cp39-none-win_amd64.whl", hash = "sha256:0fee1c89ec2cb013dc232e4ebef88e2844357ce8631063b56639dbfb83762f20"}, + {file = "serpyco_rs-1.11.0.tar.gz", hash = "sha256:70a844615ffb229e6e89c204b3ab7404aacaf2838911814c7d847969b8da2e3a"}, ] [package.dependencies] @@ -4581,18 +4700,18 @@ typing-extensions = "*" [[package]] name = "setuptools" -version = "74.0.0" +version = "75.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-74.0.0-py3-none-any.whl", hash = "sha256:0274581a0037b638b9fc1c6883cc71c0210865aaa76073f7882376b641b84e8f"}, - {file = "setuptools-74.0.0.tar.gz", hash = "sha256:a85e96b8be2b906f3e3e789adec6a9323abf79758ecfa3065bd740d81158b11e"}, + {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, + {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] @@ -4803,60 +4922,60 @@ test = ["pytest"] [[package]] name = "sqlalchemy" -version = "2.0.32" +version = "2.0.35" description = "Database Abstraction Library" optional = true python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.32-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0c9045ecc2e4db59bfc97b20516dfdf8e41d910ac6fb667ebd3a79ea54084619"}, - {file = "SQLAlchemy-2.0.32-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1467940318e4a860afd546ef61fefb98a14d935cd6817ed07a228c7f7c62f389"}, - {file = "SQLAlchemy-2.0.32-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5954463675cb15db8d4b521f3566a017c8789222b8316b1e6934c811018ee08b"}, - {file = "SQLAlchemy-2.0.32-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:167e7497035c303ae50651b351c28dc22a40bb98fbdb8468cdc971821b1ae533"}, - {file = "SQLAlchemy-2.0.32-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b27dfb676ac02529fb6e343b3a482303f16e6bc3a4d868b73935b8792edb52d0"}, - {file = "SQLAlchemy-2.0.32-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bf2360a5e0f7bd75fa80431bf8ebcfb920c9f885e7956c7efde89031695cafb8"}, - {file = "SQLAlchemy-2.0.32-cp310-cp310-win32.whl", hash = "sha256:306fe44e754a91cd9d600a6b070c1f2fadbb4a1a257b8781ccf33c7067fd3e4d"}, - {file = "SQLAlchemy-2.0.32-cp310-cp310-win_amd64.whl", hash = "sha256:99db65e6f3ab42e06c318f15c98f59a436f1c78179e6a6f40f529c8cc7100b22"}, - {file = "SQLAlchemy-2.0.32-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21b053be28a8a414f2ddd401f1be8361e41032d2ef5884b2f31d31cb723e559f"}, - {file = "SQLAlchemy-2.0.32-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b178e875a7a25b5938b53b006598ee7645172fccafe1c291a706e93f48499ff5"}, - {file = "SQLAlchemy-2.0.32-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723a40ee2cc7ea653645bd4cf024326dea2076673fc9d3d33f20f6c81db83e1d"}, - {file = "SQLAlchemy-2.0.32-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:295ff8689544f7ee7e819529633d058bd458c1fd7f7e3eebd0f9268ebc56c2a0"}, - {file = "SQLAlchemy-2.0.32-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49496b68cd190a147118af585173ee624114dfb2e0297558c460ad7495f9dfe2"}, - {file = "SQLAlchemy-2.0.32-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:acd9b73c5c15f0ec5ce18128b1fe9157ddd0044abc373e6ecd5ba376a7e5d961"}, - {file = "SQLAlchemy-2.0.32-cp311-cp311-win32.whl", hash = "sha256:9365a3da32dabd3e69e06b972b1ffb0c89668994c7e8e75ce21d3e5e69ddef28"}, - {file = "SQLAlchemy-2.0.32-cp311-cp311-win_amd64.whl", hash = "sha256:8bd63d051f4f313b102a2af1cbc8b80f061bf78f3d5bd0843ff70b5859e27924"}, - {file = "SQLAlchemy-2.0.32-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6bab3db192a0c35e3c9d1560eb8332463e29e5507dbd822e29a0a3c48c0a8d92"}, - {file = "SQLAlchemy-2.0.32-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:19d98f4f58b13900d8dec4ed09dd09ef292208ee44cc9c2fe01c1f0a2fe440e9"}, - {file = "SQLAlchemy-2.0.32-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd33c61513cb1b7371fd40cf221256456d26a56284e7d19d1f0b9f1eb7dd7e8"}, - {file = "SQLAlchemy-2.0.32-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6ba0497c1d066dd004e0f02a92426ca2df20fac08728d03f67f6960271feec"}, - {file = "SQLAlchemy-2.0.32-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2b6be53e4fde0065524f1a0a7929b10e9280987b320716c1509478b712a7688c"}, - {file = "SQLAlchemy-2.0.32-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:916a798f62f410c0b80b63683c8061f5ebe237b0f4ad778739304253353bc1cb"}, - {file = "SQLAlchemy-2.0.32-cp312-cp312-win32.whl", hash = "sha256:31983018b74908ebc6c996a16ad3690301a23befb643093fcfe85efd292e384d"}, - {file = "SQLAlchemy-2.0.32-cp312-cp312-win_amd64.whl", hash = "sha256:4363ed245a6231f2e2957cccdda3c776265a75851f4753c60f3004b90e69bfeb"}, - {file = "SQLAlchemy-2.0.32-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8afd5b26570bf41c35c0121801479958b4446751a3971fb9a480c1afd85558e"}, - {file = "SQLAlchemy-2.0.32-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c750987fc876813f27b60d619b987b057eb4896b81117f73bb8d9918c14f1cad"}, - {file = "SQLAlchemy-2.0.32-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada0102afff4890f651ed91120c1120065663506b760da4e7823913ebd3258be"}, - {file = "SQLAlchemy-2.0.32-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:78c03d0f8a5ab4f3034c0e8482cfcc415a3ec6193491cfa1c643ed707d476f16"}, - {file = "SQLAlchemy-2.0.32-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:3bd1cae7519283ff525e64645ebd7a3e0283f3c038f461ecc1c7b040a0c932a1"}, - {file = "SQLAlchemy-2.0.32-cp37-cp37m-win32.whl", hash = "sha256:01438ebcdc566d58c93af0171c74ec28efe6a29184b773e378a385e6215389da"}, - {file = "SQLAlchemy-2.0.32-cp37-cp37m-win_amd64.whl", hash = "sha256:4979dc80fbbc9d2ef569e71e0896990bc94df2b9fdbd878290bd129b65ab579c"}, - {file = "SQLAlchemy-2.0.32-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c742be912f57586ac43af38b3848f7688863a403dfb220193a882ea60e1ec3a"}, - {file = "SQLAlchemy-2.0.32-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:62e23d0ac103bcf1c5555b6c88c114089587bc64d048fef5bbdb58dfd26f96da"}, - {file = "SQLAlchemy-2.0.32-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:251f0d1108aab8ea7b9aadbd07fb47fb8e3a5838dde34aa95a3349876b5a1f1d"}, - {file = "SQLAlchemy-2.0.32-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ef18a84e5116340e38eca3e7f9eeaaef62738891422e7c2a0b80feab165905f"}, - {file = "SQLAlchemy-2.0.32-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3eb6a97a1d39976f360b10ff208c73afb6a4de86dd2a6212ddf65c4a6a2347d5"}, - {file = "SQLAlchemy-2.0.32-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0c1c9b673d21477cec17ab10bc4decb1322843ba35b481585facd88203754fc5"}, - {file = "SQLAlchemy-2.0.32-cp38-cp38-win32.whl", hash = "sha256:c41a2b9ca80ee555decc605bd3c4520cc6fef9abde8fd66b1cf65126a6922d65"}, - {file = "SQLAlchemy-2.0.32-cp38-cp38-win_amd64.whl", hash = "sha256:8a37e4d265033c897892279e8adf505c8b6b4075f2b40d77afb31f7185cd6ecd"}, - {file = "SQLAlchemy-2.0.32-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:52fec964fba2ef46476312a03ec8c425956b05c20220a1a03703537824b5e8e1"}, - {file = "SQLAlchemy-2.0.32-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:328429aecaba2aee3d71e11f2477c14eec5990fb6d0e884107935f7fb6001632"}, - {file = "SQLAlchemy-2.0.32-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85a01b5599e790e76ac3fe3aa2f26e1feba56270023d6afd5550ed63c68552b3"}, - {file = "SQLAlchemy-2.0.32-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf04784797dcdf4c0aa952c8d234fa01974c4729db55c45732520ce12dd95b4"}, - {file = "SQLAlchemy-2.0.32-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4488120becf9b71b3ac718f4138269a6be99a42fe023ec457896ba4f80749525"}, - {file = "SQLAlchemy-2.0.32-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:14e09e083a5796d513918a66f3d6aedbc131e39e80875afe81d98a03312889e6"}, - {file = "SQLAlchemy-2.0.32-cp39-cp39-win32.whl", hash = "sha256:0d322cc9c9b2154ba7e82f7bf25ecc7c36fbe2d82e2933b3642fc095a52cfc78"}, - {file = "SQLAlchemy-2.0.32-cp39-cp39-win_amd64.whl", hash = "sha256:7dd8583df2f98dea28b5cd53a1beac963f4f9d087888d75f22fcc93a07cf8d84"}, - {file = "SQLAlchemy-2.0.32-py3-none-any.whl", hash = "sha256:e567a8793a692451f706b363ccf3c45e056b67d90ead58c3bc9471af5d212202"}, - {file = "SQLAlchemy-2.0.32.tar.gz", hash = "sha256:c1b88cc8b02b6a5f0efb0345a03672d4c897dc7d92585176f88c67346f565ea8"}, + {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67219632be22f14750f0d1c70e62f204ba69d28f62fd6432ba05ab295853de9b"}, + {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4668bd8faf7e5b71c0319407b608f278f279668f358857dbfd10ef1954ac9f90"}, + {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb8bea573863762bbf45d1e13f87c2d2fd32cee2dbd50d050f83f87429c9e1ea"}, + {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f552023710d4b93d8fb29a91fadf97de89c5926c6bd758897875435f2a939f33"}, + {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:016b2e665f778f13d3c438651dd4de244214b527a275e0acf1d44c05bc6026a9"}, + {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7befc148de64b6060937231cbff8d01ccf0bfd75aa26383ffdf8d82b12ec04ff"}, + {file = "SQLAlchemy-2.0.35-cp310-cp310-win32.whl", hash = "sha256:22b83aed390e3099584b839b93f80a0f4a95ee7f48270c97c90acd40ee646f0b"}, + {file = "SQLAlchemy-2.0.35-cp310-cp310-win_amd64.whl", hash = "sha256:a29762cd3d116585278ffb2e5b8cc311fb095ea278b96feef28d0b423154858e"}, + {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60"}, + {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62"}, + {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6"}, + {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7"}, + {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71"}, + {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01"}, + {file = "SQLAlchemy-2.0.35-cp311-cp311-win32.whl", hash = "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e"}, + {file = "SQLAlchemy-2.0.35-cp311-cp311-win_amd64.whl", hash = "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc"}, + {file = "SQLAlchemy-2.0.35-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f021d334f2ca692523aaf7bbf7592ceff70c8594fad853416a81d66b35e3abf9"}, + {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05c3f58cf91683102f2f0265c0db3bd3892e9eedabe059720492dbaa4f922da1"}, + {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:032d979ce77a6c2432653322ba4cbeabf5a6837f704d16fa38b5a05d8e21fa00"}, + {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:2e795c2f7d7249b75bb5f479b432a51b59041580d20599d4e112b5f2046437a3"}, + {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:cc32b2990fc34380ec2f6195f33a76b6cdaa9eecf09f0c9404b74fc120aef36f"}, + {file = "SQLAlchemy-2.0.35-cp37-cp37m-win32.whl", hash = "sha256:9509c4123491d0e63fb5e16199e09f8e262066e58903e84615c301dde8fa2e87"}, + {file = "SQLAlchemy-2.0.35-cp37-cp37m-win_amd64.whl", hash = "sha256:3655af10ebcc0f1e4e06c5900bb33e080d6a1fa4228f502121f28a3b1753cde5"}, + {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4c31943b61ed8fdd63dfd12ccc919f2bf95eefca133767db6fbbd15da62078ec"}, + {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a62dd5d7cc8626a3634208df458c5fe4f21200d96a74d122c83bc2015b333bc1"}, + {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0630774b0977804fba4b6bbea6852ab56c14965a2b0c7fc7282c5f7d90a1ae72"}, + {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d625eddf7efeba2abfd9c014a22c0f6b3796e0ffb48f5d5ab106568ef01ff5a"}, + {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ada603db10bb865bbe591939de854faf2c60f43c9b763e90f653224138f910d9"}, + {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c41411e192f8d3ea39ea70e0fae48762cd11a2244e03751a98bd3c0ca9a4e936"}, + {file = "SQLAlchemy-2.0.35-cp38-cp38-win32.whl", hash = "sha256:d299797d75cd747e7797b1b41817111406b8b10a4f88b6e8fe5b5e59598b43b0"}, + {file = "SQLAlchemy-2.0.35-cp38-cp38-win_amd64.whl", hash = "sha256:0375a141e1c0878103eb3d719eb6d5aa444b490c96f3fedab8471c7f6ffe70ee"}, + {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccae5de2a0140d8be6838c331604f91d6fafd0735dbdcee1ac78fc8fbaba76b4"}, + {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2a275a806f73e849e1c309ac11108ea1a14cd7058577aba962cd7190e27c9e3c"}, + {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:732e026240cdd1c1b2e3ac515c7a23820430ed94292ce33806a95869c46bd139"}, + {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890da8cd1941fa3dab28c5bac3b9da8502e7e366f895b3b8e500896f12f94d11"}, + {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0d8326269dbf944b9201911b0d9f3dc524d64779a07518199a58384c3d37a44"}, + {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b76d63495b0508ab9fc23f8152bac63205d2a704cd009a2b0722f4c8e0cba8e0"}, + {file = "SQLAlchemy-2.0.35-cp39-cp39-win32.whl", hash = "sha256:69683e02e8a9de37f17985905a5eca18ad651bf592314b4d3d799029797d0eb3"}, + {file = "SQLAlchemy-2.0.35-cp39-cp39-win_amd64.whl", hash = "sha256:aee110e4ef3c528f3abbc3c2018c121e708938adeeff9006428dd7c8555e9b3f"}, + {file = "SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1"}, + {file = "sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f"}, ] [package.dependencies] @@ -4919,18 +5038,18 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "textual" -version = "0.79.0" +version = "0.82.0" description = "Modern Text User Interface framework" optional = false python-versions = "<4.0.0,>=3.8.1" files = [ - {file = "textual-0.79.0-py3-none-any.whl", hash = "sha256:59785f20e13b0e530e3d21c0fca5eb09bd1ff329f47abce29a8e50a59646228d"}, - {file = "textual-0.79.0.tar.gz", hash = "sha256:b5ae63ae11227c158da90e486e99a6db7ef198470219edaf8c200a999d27577a"}, + {file = "textual-0.82.0-py3-none-any.whl", hash = "sha256:4ce00dc898fab3a829aa835071f4e8284aad57f13870e871d0ac516cc34b3645"}, + {file = "textual-0.82.0.tar.gz", hash = "sha256:db93a2bb3ba9fdb2a536272cd5c8144c9c9682df0370a99361b670c6191b0a4d"}, ] [package.dependencies] markdown-it-py = {version = ">=2.1.0", extras = ["linkify", "plugins"]} -platformdirs = ">=4.2.2,<5.0.0" +platformdirs = ">=3.6.0,<5" rich = ">=13.3.3" typing-extensions = ">=4.4.0,<5.0.0" @@ -5005,13 +5124,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -5047,13 +5166,13 @@ telegram = ["requests"] [[package]] name = "types-pytz" -version = "2024.1.0.20240417" +version = "2024.2.0.20241003" description = "Typing stubs for pytz" optional = true python-versions = ">=3.8" files = [ - {file = "types-pytz-2024.1.0.20240417.tar.gz", hash = "sha256:6810c8a1f68f21fdf0f4f374a432487c77645a0ac0b31de4bf4690cf21ad3981"}, - {file = "types_pytz-2024.1.0.20240417-py3-none-any.whl", hash = "sha256:8335d443310e2db7b74e007414e74c4f53b67452c0cb0d228ca359ccfba59659"}, + {file = "types-pytz-2024.2.0.20241003.tar.gz", hash = "sha256:575dc38f385a922a212bac00a7d6d2e16e141132a3c955078f4a4fd13ed6cb44"}, + {file = "types_pytz-2024.2.0.20241003-py3-none-any.whl", hash = "sha256:3e22df1336c0c6ad1d29163c8fda82736909eb977281cb823c57f8bae07118b7"}, ] [[package]] @@ -5084,13 +5203,13 @@ typing-extensions = ">=3.7.4" [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] @@ -5243,13 +5362,13 @@ six = "*" [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -5390,6 +5509,17 @@ files = [ {file = "XlsxWriter-3.2.0.tar.gz", hash = "sha256:9977d0c661a72866a61f9f7a809e25ebbb0fb7036baa3b9fe74afcfca6b3cb8c"}, ] +[[package]] +name = "xmltodict" +version = "0.13.0" +description = "Makes working with XML feel like you are working with JSON" +optional = false +python-versions = ">=3.4" +files = [ + {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, + {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, +] + [[package]] name = "xmod" version = "1.8.1" @@ -5403,116 +5533,119 @@ files = [ [[package]] name = "yarl" -version = "1.9.4" +version = "1.14.0" description = "Yet another URL library" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, - {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, - {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, - {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, - {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, - {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, - {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, - {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, - {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, - {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, - {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, - {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, - {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, - {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, - {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, - {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, + {file = "yarl-1.14.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1bfc25aa6a7c99cf86564210f79a0b7d4484159c67e01232b116e445b3036547"}, + {file = "yarl-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0cf21f46a15d445417de8fc89f2568852cf57fe8ca1ab3d19ddb24d45c0383ae"}, + {file = "yarl-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1dda53508df0de87b6e6b0a52d6718ff6c62a5aca8f5552748404963df639269"}, + {file = "yarl-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:587c3cc59bc148a9b1c07a019346eda2549bc9f468acd2f9824d185749acf0a6"}, + {file = "yarl-1.14.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3007a5b75cb50140708420fe688c393e71139324df599434633019314ceb8b59"}, + {file = "yarl-1.14.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:06ff23462398333c78b6f4f8d3d70410d657a471c2c5bbe6086133be43fc8f1a"}, + {file = "yarl-1.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689a99a42ee4583fcb0d3a67a0204664aa1539684aed72bdafcbd505197a91c4"}, + {file = "yarl-1.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0547ab1e9345dc468cac8368d88ea4c5bd473ebc1d8d755347d7401982b5dd8"}, + {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:742aef0a99844faaac200564ea6f5e08facb285d37ea18bd1a5acf2771f3255a"}, + {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:176110bff341b6730f64a1eb3a7070e12b373cf1c910a9337e7c3240497db76f"}, + {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:46a9772a1efa93f9cd170ad33101c1817c77e0e9914d4fe33e2da299d7cf0f9b"}, + {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ee2c68e4f2dd1b1c15b849ba1c96fac105fca6ffdb7c1e8be51da6fabbdeafb9"}, + {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:047b258e00b99091b6f90355521f026238c63bd76dcf996d93527bb13320eefd"}, + {file = "yarl-1.14.0-cp310-cp310-win32.whl", hash = "sha256:0aa92e3e30a04f9462a25077db689c4ac5ea9ab6cc68a2e563881b987d42f16d"}, + {file = "yarl-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:d9baec588f015d0ee564057aa7574313c53a530662ffad930b7886becc85abdf"}, + {file = "yarl-1.14.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:07f9eaf57719d6721ab15805d85f4b01a5b509a0868d7320134371bcb652152d"}, + {file = "yarl-1.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c14b504a74e58e2deb0378b3eca10f3d076635c100f45b113c18c770b4a47a50"}, + {file = "yarl-1.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a682a127930f3fc4e42583becca6049e1d7214bcad23520c590edd741d2114"}, + {file = "yarl-1.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73bedd2be05f48af19f0f2e9e1353921ce0c83f4a1c9e8556ecdcf1f1eae4892"}, + {file = "yarl-1.14.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3ab950f8814f3b7b5e3eebc117986f817ec933676f68f0a6c5b2137dd7c9c69"}, + {file = "yarl-1.14.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b693c63e7e64b524f54aa4888403c680342d1ad0d97be1707c531584d6aeeb4f"}, + {file = "yarl-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85cb3e40eaa98489f1e2e8b29f5ad02ee1ee40d6ce6b88d50cf0f205de1d9d2c"}, + {file = "yarl-1.14.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f24f08b6c9b9818fd80612c97857d28f9779f0d1211653ece9844fc7b414df2"}, + {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29a84a46ec3ebae7a1c024c055612b11e9363a8a23238b3e905552d77a2bc51b"}, + {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5cd5dad8366e0168e0fd23d10705a603790484a6dbb9eb272b33673b8f2cce72"}, + {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a152751af7ef7b5d5fa6d215756e508dd05eb07d0cf2ba51f3e740076aa74373"}, + {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:3d569f877ed9a708e4c71a2d13d2940cb0791da309f70bd970ac1a5c088a0a92"}, + {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6a615cad11ec3428020fb3c5a88d85ce1b5c69fd66e9fcb91a7daa5e855325dd"}, + {file = "yarl-1.14.0-cp311-cp311-win32.whl", hash = "sha256:bab03192091681d54e8225c53f270b0517637915d9297028409a2a5114ff4634"}, + {file = "yarl-1.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:985623575e5c4ea763056ffe0e2d63836f771a8c294b3de06d09480538316b13"}, + {file = "yarl-1.14.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fc2c80bc87fba076e6cbb926216c27fba274dae7100a7b9a0983b53132dd99f2"}, + {file = "yarl-1.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:55c144d363ad4626ca744556c049c94e2b95096041ac87098bb363dcc8635e8d"}, + {file = "yarl-1.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b03384eed107dbeb5f625a99dc3a7de8be04fc8480c9ad42fccbc73434170b20"}, + {file = "yarl-1.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f72a0d746d38cb299b79ce3d4d60ba0892c84bbc905d0d49c13df5bace1b65f8"}, + {file = "yarl-1.14.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8648180b34faaea4aa5b5ca7e871d9eb1277033fa439693855cf0ea9195f85f1"}, + {file = "yarl-1.14.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9557c9322aaa33174d285b0c1961fb32499d65ad1866155b7845edc876c3c835"}, + {file = "yarl-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f50eb3837012a937a2b649ec872b66ba9541ad9d6f103ddcafb8231cfcafd22"}, + {file = "yarl-1.14.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8892fa575ac9b1b25fae7b221bc4792a273877b9b56a99ee2d8d03eeb3dbb1d2"}, + {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6a2c5c5bb2556dfbfffffc2bcfb9c235fd2b566d5006dfb2a37afc7e3278a07"}, + {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ab3abc0b78a5dfaa4795a6afbe7b282b6aa88d81cf8c1bb5e394993d7cae3457"}, + {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:47eede5d11d669ab3759b63afb70d28d5328c14744b8edba3323e27dc52d298d"}, + {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fe4d2536c827f508348d7b40c08767e8c7071614250927233bf0c92170451c0a"}, + {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0fd7b941dd1b00b5f0acb97455fea2c4b7aac2dd31ea43fb9d155e9bc7b78664"}, + {file = "yarl-1.14.0-cp312-cp312-win32.whl", hash = "sha256:99ff3744f5fe48288be6bc402533b38e89749623a43208e1d57091fc96b783b9"}, + {file = "yarl-1.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ca3894e9e9f72da93544f64988d9c052254a338a9f855165f37f51edb6591de"}, + {file = "yarl-1.14.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5d02d700705d67e09e1f57681f758f0b9d4412eeb70b2eb8d96ca6200b486db3"}, + {file = "yarl-1.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:30600ba5db60f7c0820ef38a2568bb7379e1418ecc947a0f76fd8b2ff4257a97"}, + {file = "yarl-1.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e85d86527baebb41a214cc3b45c17177177d900a2ad5783dbe6f291642d4906f"}, + {file = "yarl-1.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37001e5d4621cef710c8dc1429ca04e189e572f128ab12312eab4e04cf007132"}, + {file = "yarl-1.14.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4f4547944d4f5cfcdc03f3f097d6f05bbbc915eaaf80a2ee120d0e756de377d"}, + {file = "yarl-1.14.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75ff4c819757f9bdb35de049a509814d6ce851fe26f06eb95a392a5640052482"}, + {file = "yarl-1.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68ac1a09392ed6e3fd14be880d39b951d7b981fd135416db7d18a6208c536561"}, + {file = "yarl-1.14.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96952f642ac69075e44c7d0284528938fdff39422a1d90d3e45ce40b72e5e2d9"}, + {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a56fbe3d7f3bce1d060ea18d2413a2ca9ca814eea7cedc4d247b5f338d54844e"}, + {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7e2637d75e92763d1322cb5041573279ec43a80c0f7fbbd2d64f5aee98447b17"}, + {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9abe80ae2c9d37c17599557b712e6515f4100a80efb2cda15f5f070306477cd2"}, + {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:217a782020b875538eebf3948fac3a7f9bbbd0fd9bf8538f7c2ad7489e80f4e8"}, + {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9cfef3f14f75bf6aba73a76caf61f9d00865912a04a4393c468a7ce0981b519"}, + {file = "yarl-1.14.0-cp313-cp313-win32.whl", hash = "sha256:d8361c7d04e6a264481f0b802e395f647cd3f8bbe27acfa7c12049efea675bd1"}, + {file = "yarl-1.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:bc24f968b82455f336b79bf37dbb243b7d76cd40897489888d663d4e028f5069"}, + {file = "yarl-1.14.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:91d875f75fabf76b3018c5f196bf3d308ed2b49ddcb46c1576d6b075754a1393"}, + {file = "yarl-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4009def9be3a7e5175db20aa2d7307ecd00bbf50f7f0f989300710eee1d0b0b9"}, + {file = "yarl-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:582cedde49603f139be572252a318b30dc41039bc0b8165f070f279e5d12187f"}, + {file = "yarl-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbd9ff43a04f8ffe8a959a944c2dca10d22f5f99fc6a459f49c3ebfb409309d9"}, + {file = "yarl-1.14.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f805e37ed16cc212fdc538a608422d7517e7faf539bedea4fe69425bc55d76"}, + {file = "yarl-1.14.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:95e16e9eaa2d7f5d87421b8fe694dd71606aa61d74b824c8d17fc85cc51983d1"}, + {file = "yarl-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:816d24f584edefcc5ca63428f0b38fee00b39fe64e3c5e558f895a18983efe96"}, + {file = "yarl-1.14.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd2660c01367eb3ef081b8fa0a5da7fe767f9427aa82023a961a5f28f0d4af6c"}, + {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:94b2bb9bcfd5be9d27004ea4398fb640373dd0c1a9e219084f42c08f77a720ab"}, + {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c2089a9afef887664115f7fa6d3c0edd6454adaca5488dba836ca91f60401075"}, + {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:2192f718db4a8509f63dd6d950f143279211fa7e6a2c612edc17d85bf043d36e"}, + {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:8385ab36bf812e9d37cf7613999a87715f27ef67a53f0687d28c44b819df7cb0"}, + {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b4c1ecba93e7826dc71ddba75fb7740cdb52e7bd0be9f03136b83f54e6a1f511"}, + {file = "yarl-1.14.0-cp38-cp38-win32.whl", hash = "sha256:e749af6c912a7bb441d105c50c1a3da720474e8acb91c89350080dd600228f0e"}, + {file = "yarl-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:147e36331f6f63e08a14640acf12369e041e0751bb70d9362df68c2d9dcf0c87"}, + {file = "yarl-1.14.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a9f917966d27f7ce30039fe8d900f913c5304134096554fd9bea0774bcda6d1"}, + {file = "yarl-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a2f8fb7f944bcdfecd4e8d855f84c703804a594da5123dd206f75036e536d4d"}, + {file = "yarl-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f4e475f29a9122f908d0f1f706e1f2fc3656536ffd21014ff8a6f2e1b14d1d8"}, + {file = "yarl-1.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8089d4634d8fa2b1806ce44fefa4979b1ab2c12c0bc7ef3dfa45c8a374811348"}, + {file = "yarl-1.14.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b16f6c75cffc2dc0616ea295abb0e1967601bd1fb1e0af6a1de1c6c887f3439"}, + {file = "yarl-1.14.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498b3c55087b9d762636bca9b45f60d37e51d24341786dc01b81253f9552a607"}, + {file = "yarl-1.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3f8bfc1db82589ef965ed234b87de30d140db8b6dc50ada9e33951ccd8ec07a"}, + {file = "yarl-1.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:625f207b1799e95e7c823f42f473c1e9dbfb6192bd56bba8695656d92be4535f"}, + {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:781e2495e408a81e4eaeedeb41ba32b63b1980dddf8b60dbbeff6036bcd35049"}, + {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:659603d26d40dd4463200df9bfbc339fbfaed3fe32e5c432fe1dc2b5d4aa94b4"}, + {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4e0d45ebf975634468682c8bec021618b3ad52c37619e5c938f8f831fa1ac5c0"}, + {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:a2e4725a08cb2b4794db09e350c86dee18202bb8286527210e13a1514dc9a59a"}, + {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:19268b4fec1d7760134f2de46ef2608c2920134fb1fa61e451f679e41356dc55"}, + {file = "yarl-1.14.0-cp39-cp39-win32.whl", hash = "sha256:337912bcdcf193ade64b9aae5a4017a0a1950caf8ca140362e361543c6773f21"}, + {file = "yarl-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:b6d0147574ce2e7b812c989e50fa72bbc5338045411a836bd066ce5fc8ac0bce"}, + {file = "yarl-1.14.0-py3-none-any.whl", hash = "sha256:c8ed4034f0765f8861620c1f2f2364d2e58520ea288497084dae880424fc0d9f"}, + {file = "yarl-1.14.0.tar.gz", hash = "sha256:88c7d9d58aab0724b979ab5617330acb1c7030b79379c8138c1c8c94e121d1b3"}, ] [package.dependencies] idna = ">=2.0" multidict = ">=4.0" +propcache = ">=0.2.0" [[package]] name = "zipp" -version = "3.20.1" +version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = true python-versions = ">=3.8" files = [ - {file = "zipp-3.20.1-py3-none-any.whl", hash = "sha256:9960cd8967c8f85a56f920d5d507274e74f9ff813a0ab8889a5b5be2daf44064"}, - {file = "zipp-3.20.1.tar.gz", hash = "sha256:c22b14cc4763c5a5b04134207736c107db42e9d3ef2d9779d465f5f1bcba572b"}, + {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, + {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] @@ -5531,4 +5664,4 @@ vector-db-based = ["cohere", "langchain", "openai", "tiktoken"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "3800412665282e062c2cb9d237457e3d6a72cdac339bd5abbdb3cdebe573d5fc" +content-hash = "a9a47a513e3969684f6ef36231210d98f4f6027cc8ad9b832665c699564c20d1" diff --git a/airbyte-cdk/python/pyproject.toml b/airbyte-cdk/python/pyproject.toml index 4b216b2a0028d..ade575e41373c 100644 --- a/airbyte-cdk/python/pyproject.toml +++ b/airbyte-cdk/python/pyproject.toml @@ -69,6 +69,7 @@ cryptography = "^42.0.5" pytz = "2024.1" orjson = "^3.10.7" serpyco-rs = "^1.10.2" +xmltodict = "^0.13.0" [tool.poetry.group.dev.dependencies] freezegun = "*" diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/decoders/test_pagination_decoder_decorator.py b/airbyte-cdk/python/unit_tests/sources/declarative/decoders/test_pagination_decoder_decorator.py new file mode 100644 index 0000000000000..f440a2b12c9f1 --- /dev/null +++ b/airbyte-cdk/python/unit_tests/sources/declarative/decoders/test_pagination_decoder_decorator.py @@ -0,0 +1,26 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# +import pytest +import requests +from airbyte_cdk.sources.declarative.decoders import JsonDecoder, PaginationDecoderDecorator + + +class StreamingJsonDecoder(JsonDecoder): + def is_stream_response(self) -> bool: + return True + + +@pytest.mark.parametrize( + "decoder_class, expected", + [ + (StreamingJsonDecoder, {}), + (JsonDecoder, {"data": [{"id": 1}, {"id": 2}]}) + ] +) +def test_pagination_decoder_decorator(requests_mock, decoder_class, expected): + decoder = PaginationDecoderDecorator(decoder=decoder_class(parameters={})) + response_body = "{\"data\": [{\"id\": 1}, {\"id\": 2}]}" + requests_mock.register_uri("GET", "https://airbyte.io/", text=response_body) + response = requests.get("https://airbyte.io/") + assert next(decoder.decode(response)) == expected diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/decoders/test_xml_decoder.py b/airbyte-cdk/python/unit_tests/sources/declarative/decoders/test_xml_decoder.py new file mode 100644 index 0000000000000..87c78dae4fda4 --- /dev/null +++ b/airbyte-cdk/python/unit_tests/sources/declarative/decoders/test_xml_decoder.py @@ -0,0 +1,38 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# +import pytest +import requests +from airbyte_cdk.sources.declarative.decoders import XmlDecoder + + +@pytest.mark.parametrize( + "response_body, expected", + [ + ( + "", + {"item": {"@name": "item_1"}} + ), + ( + "Item 1Item 2", + {"data": {"item": [{"@name": "item_1", "#text": "Item 1"}, {"@name": "item_2", "#text": "Item 2"}]}} + ), + ( + None, + {} + ), + ( + "", + {} + ), + ( + "1Item 1", + {'item': {'@xmlns:ns': 'https://airbyte.io', 'ns:id': '1', 'ns:name': 'Item 1'}} + ) + ], + ids=["one_element_response", "multi_element_response", "empty_response", "malformed_xml_response", "xml_with_namespace_response"] +) +def test_xml_decoder(requests_mock, response_body, expected): + requests_mock.register_uri("GET", "https://airbyte.io/", text=response_body) + response = requests.get("https://airbyte.io/") + assert next(XmlDecoder(parameters={}).decode(response)) == expected diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py b/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py index 32e3bdd46eff8..592fb5eb8a296 100644 --- a/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py +++ b/airbyte-cdk/python/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py @@ -22,7 +22,7 @@ from airbyte_cdk.sources.declarative.concurrency_level import ConcurrencyLevel from airbyte_cdk.sources.declarative.datetime import MinMaxDatetime from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream -from airbyte_cdk.sources.declarative.decoders import JsonDecoder +from airbyte_cdk.sources.declarative.decoders import JsonDecoder, PaginationDecoderDecorator from airbyte_cdk.sources.declarative.extractors import DpathExtractor, RecordFilter, RecordSelector from airbyte_cdk.sources.declarative.extractors.record_filter import ClientSideIncrementalRecordFilterDecorator from airbyte_cdk.sources.declarative.incremental import CursorFactory, DatetimeBasedCursor, PerPartitionCursor, ResumableFullRefreshCursor @@ -121,7 +121,6 @@ def test_full_config_stream(): type: JsonDecoder extractor: type: DpathExtractor - decoder: "#/decoder" selector: type: RecordSelector record_filter: @@ -151,6 +150,8 @@ def test_full_config_stream(): retriever: paginator: type: NoPagination + decoder: + $ref: "#/decoder" partial_stream: type: DeclarativeStream schema_loader: @@ -259,7 +260,7 @@ def test_full_config_stream(): assert stream.retriever.record_selector.record_filter._filter_interpolator.condition == "{{ record['id'] > stream_state['id'] }}" assert isinstance(stream.retriever.paginator, DefaultPaginator) - assert isinstance(stream.retriever.paginator.decoder, JsonDecoder) + assert isinstance(stream.retriever.paginator.decoder, PaginationDecoderDecorator) assert stream.retriever.paginator.page_size_option.field_name.eval(input_config) == "page_size" assert stream.retriever.paginator.page_size_option.inject_into == RequestOptionType.request_parameter assert isinstance(stream.retriever.paginator.page_token_option, RequestPath) @@ -267,7 +268,7 @@ def test_full_config_stream(): assert stream.retriever.paginator.url_base.default == "https://api.sendgrid.com/v3/" assert isinstance(stream.retriever.paginator.pagination_strategy, CursorPaginationStrategy) - assert isinstance(stream.retriever.paginator.pagination_strategy.decoder, JsonDecoder) + assert isinstance(stream.retriever.paginator.pagination_strategy.decoder, PaginationDecoderDecorator) assert stream.retriever.paginator.pagination_strategy._cursor_value.string == "{{ response._metadata.next }}" assert stream.retriever.paginator.pagination_strategy._cursor_value.default == "{{ response._metadata.next }}" assert stream.retriever.paginator.pagination_strategy.page_size == 10 @@ -724,7 +725,6 @@ def test_resumable_full_refresh_stream(): type: JsonDecoder extractor: type: DpathExtractor - decoder: "#/decoder" selector: type: RecordSelector record_filter: @@ -754,6 +754,8 @@ def test_resumable_full_refresh_stream(): retriever: paginator: type: NoPagination + decoder: + $ref: "#/decoder" partial_stream: type: DeclarativeStream schema_loader: @@ -828,7 +830,7 @@ def test_resumable_full_refresh_stream(): assert isinstance(stream.retriever.cursor, ResumableFullRefreshCursor) assert isinstance(stream.retriever.paginator, DefaultPaginator) - assert isinstance(stream.retriever.paginator.decoder, JsonDecoder) + assert isinstance(stream.retriever.paginator.decoder, PaginationDecoderDecorator) assert stream.retriever.paginator.page_size_option.field_name.eval(input_config) == "page_size" assert stream.retriever.paginator.page_size_option.inject_into == RequestOptionType.request_parameter assert isinstance(stream.retriever.paginator.page_token_option, RequestPath) @@ -836,7 +838,7 @@ def test_resumable_full_refresh_stream(): assert stream.retriever.paginator.url_base.default == "https://api.sendgrid.com/v3/" assert isinstance(stream.retriever.paginator.pagination_strategy, CursorPaginationStrategy) - assert isinstance(stream.retriever.paginator.pagination_strategy.decoder, JsonDecoder) + assert isinstance(stream.retriever.paginator.pagination_strategy.decoder, PaginationDecoderDecorator) assert stream.retriever.paginator.pagination_strategy._cursor_value.string == "{{ response._metadata.next }}" assert stream.retriever.paginator.pagination_strategy._cursor_value.default == "{{ response._metadata.next }}" assert stream.retriever.paginator.pagination_strategy.page_size == 10 diff --git a/airbyte-cdk/python/unit_tests/sources/declarative/requesters/paginators/test_default_paginator.py b/airbyte-cdk/python/unit_tests/sources/declarative/requesters/paginators/test_default_paginator.py index 54fcb2883ab28..41d973a9a8cea 100644 --- a/airbyte-cdk/python/unit_tests/sources/declarative/requesters/paginators/test_default_paginator.py +++ b/airbyte-cdk/python/unit_tests/sources/declarative/requesters/paginators/test_default_paginator.py @@ -7,7 +7,7 @@ import pytest import requests -from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder +from airbyte_cdk.sources.declarative.decoders import JsonDecoder, XmlDecoder from airbyte_cdk.sources.declarative.interpolation.interpolated_boolean import InterpolatedBoolean from airbyte_cdk.sources.declarative.requesters.paginators.default_paginator import ( DefaultPaginator, @@ -21,7 +21,7 @@ @pytest.mark.parametrize( - "page_token_request_option, stop_condition, expected_updated_path, expected_request_params, expected_headers, expected_body_data, expected_body_json, last_record, expected_next_page_token, limit", + "page_token_request_option, stop_condition, expected_updated_path, expected_request_params, expected_headers, expected_body_data, expected_body_json, last_record, expected_next_page_token, limit, decoder, response_body", [ ( RequestPath(parameters={}), @@ -34,6 +34,8 @@ {"id": 1}, {"next_page_token": "https://airbyte.io/next_url"}, 2, + JsonDecoder, + {"next": "https://airbyte.io/next_url"}, ), ( RequestOption(inject_into=RequestOptionType.request_parameter, field_name="from", parameters={}), @@ -46,6 +48,8 @@ {"id": 1}, {"next_page_token": "https://airbyte.io/next_url"}, 2, + JsonDecoder, + {"next": "https://airbyte.io/next_url"}, ), ( RequestOption(inject_into=RequestOptionType.request_parameter, field_name="from", parameters={}), @@ -58,6 +62,8 @@ {"id": 1}, None, 2, + JsonDecoder, + {"next": "https://airbyte.io/next_url"}, ), ( RequestOption(inject_into=RequestOptionType.header, field_name="from", parameters={}), @@ -70,6 +76,8 @@ {"id": 1}, {"next_page_token": "https://airbyte.io/next_url"}, 2, + JsonDecoder, + {"next": "https://airbyte.io/next_url"}, ), ( RequestOption(inject_into=RequestOptionType.body_data, field_name="from", parameters={}), @@ -82,6 +90,8 @@ {"id": 1}, {"next_page_token": "https://airbyte.io/next_url"}, 2, + JsonDecoder, + {"next": "https://airbyte.io/next_url"}, ), ( RequestOption(inject_into=RequestOptionType.body_json, field_name="from", parameters={}), @@ -94,6 +104,36 @@ {"id": 1}, {"next_page_token": "https://airbyte.io/next_url"}, 2, + JsonDecoder, + {"next": "https://airbyte.io/next_url"}, + ), + ( + RequestPath(parameters={}), + None, + "/next_url", + {"limit": 2}, + {}, + {}, + {}, + {"id": 1}, + {"next_page_token": "https://airbyte.io/next_url"}, + 2, + XmlDecoder, + b"https://airbyte.io/next_url", + ), + ( + RequestOption(inject_into=RequestOptionType.request_parameter, field_name="from", parameters={}), + None, + None, + {"limit": 2, "from": "https://airbyte.io/next_url"}, + {}, + {}, + {}, + {"id": 1}, + {"next_page_token": "https://airbyte.io/next_url"}, + 2, + XmlDecoder, + b"https://airbyte.io/next_url", ), ], ids=[ @@ -103,6 +143,8 @@ "test_default_paginator_cursor_header", "test_default_paginator_cursor_body_data", "test_default_paginator_cursor_body_json", + "test_default_paginator_path_with_xml_decoder", + "test_default_paginator_request_param_xml_decoder", ], ) def test_default_paginator_with_cursor( @@ -116,6 +158,8 @@ def test_default_paginator_with_cursor( last_record, expected_next_page_token, limit, + decoder, + response_body ): page_size_request_option = RequestOption( inject_into=RequestOptionType.request_parameter, field_name="{{parameters['page_limit']}}", parameters={"page_limit": "limit"} @@ -128,7 +172,7 @@ def test_default_paginator_with_cursor( page_size=limit, cursor_value=cursor_value, stop_condition=stop_condition, - decoder=JsonDecoder(parameters={}), + decoder=decoder(parameters={}), config=config, parameters=parameters, ) @@ -143,8 +187,7 @@ def test_default_paginator_with_cursor( response = requests.Response() response.headers = {"A_HEADER": "HEADER_VALUE"} - response_body = {"next": "https://airbyte.io/next_url"} - response._content = json.dumps(response_body).encode("utf-8") + response._content = json.dumps(response_body).encode("utf-8") if decoder == JsonDecoder else response_body actual_next_page_token = paginator.next_page_token(response, 2, last_record) actual_next_path = paginator.path() From 0d924df4646c39c8492ee6ecf314e2d7b4336c34 Mon Sep 17 00:00:00 2001 From: pnilan Date: Wed, 9 Oct 2024 18:21:49 +0000 Subject: [PATCH 208/379] =?UTF-8?q?=F0=9F=A4=96=20minor=20bump=20Python=20?= =?UTF-8?q?CDK=20to=20version=205.12.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-cdk/python/CHANGELOG.md | 3 +++ airbyte-cdk/python/pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/airbyte-cdk/python/CHANGELOG.md b/airbyte-cdk/python/CHANGELOG.md index 90a7a141b0f7a..4a397aa382e78 100644 --- a/airbyte-cdk/python/CHANGELOG.md +++ b/airbyte-cdk/python/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 5.12.0 +Low Code: Adds component + ## 5.11.1 Low Code: Consolidate manifest decoder selection under , , and diff --git a/airbyte-cdk/python/pyproject.toml b/airbyte-cdk/python/pyproject.toml index ade575e41373c..e610160714f2a 100644 --- a/airbyte-cdk/python/pyproject.toml +++ b/airbyte-cdk/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-cdk" -version = "5.11.1" +version = "5.12.0" description = "A framework for writing Airbyte Connectors." authors = ["Airbyte "] license = "MIT" From b0bbdcca67a5dea48e96f885bc90a638150abb11 Mon Sep 17 00:00:00 2001 From: pnilan Date: Wed, 9 Oct 2024 18:28:33 +0000 Subject: [PATCH 209/379] =?UTF-8?q?=F0=9F=A4=96=20Cut=20version=205.12.0?= =?UTF-8?q?=20of=20source-declarative-manifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source-declarative-manifest/metadata.yaml | 2 +- .../source-declarative-manifest/poetry.lock | 20 +++++++++++++++---- .../pyproject.toml | 4 ++-- docs/integrations/sources/low-code.md | 1 + 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml index 7652a80123c66..cc2e3a3733842 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml +++ b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml @@ -8,7 +8,7 @@ data: connectorType: source definitionId: 64a2f99c-542f-4af8-9a6f-355f1217b436 # This version should not be updated manually - it is updated by the CDK release workflow. - dockerImageTag: 5.11.1 + dockerImageTag: 5.12.0 dockerRepository: airbyte/source-declarative-manifest # This page is hidden from the docs for now, since the connector is not in any Airbyte registries. documentationUrl: https://docs.airbyte.com/integrations/sources/low-code diff --git a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock index d7e57bf141fff..06ec7b5012a7e 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock +++ b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.11.1" +version = "5.12.0" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.11.1-py3-none-any.whl", hash = "sha256:efddee85179128cb7d65b11a9a4aba353ea5b01daaa56fc3069d12ce156d2857"}, - {file = "airbyte_cdk-5.11.1.tar.gz", hash = "sha256:0cc1cdc1d50909bbb2791a9c389c0f3db32474502addf65eb745d87af7d36fd9"}, + {file = "airbyte_cdk-5.12.0-py3-none-any.whl", hash = "sha256:77d658418eef4b540b715d2315bb4797ce80ae661456eb7bcfc01bc6a5337464"}, + {file = "airbyte_cdk-5.12.0.tar.gz", hash = "sha256:a8ba1bc70ceaf0bf0b61ded72e9df4bd1dc89e1bbda5b430c17575b76a45d83a"}, ] [package.dependencies] @@ -38,6 +38,7 @@ requests = "*" requests_cache = "*" serpyco-rs = ">=1.10.2,<2.0.0" wcmatch = "8.4" +xmltodict = ">=0.13.0,<0.14.0" [package.extras] file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] @@ -1731,7 +1732,18 @@ files = [ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, ] +[[package]] +name = "xmltodict" +version = "0.13.0" +description = "Makes working with XML feel like you are working with JSON" +optional = false +python-versions = ">=3.4" +files = [ + {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, + {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, +] + [metadata] lock-version = "2.0" python-versions = "^3.10,<3.12" -content-hash = "72f8e394847086ab4840af7a04b4c64d0a3219ac254a1a673f0d89f434d44ef7" +content-hash = "4d68b0702589341902943efdfa38055137a768f38e628ec9182bfcde89d8e1b2" diff --git a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml index 0d78f613be439..fe390df648f74 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml +++ b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.11.1" +version = "5.12.0" name = "source-declarative-manifest" description = "Base source implementation for low-code sources." authors = ["Airbyte "] @@ -17,7 +17,7 @@ include = "source_declarative_manifest" [tool.poetry.dependencies] python = "^3.10,<3.12" -airbyte-cdk = "5.11.1" +airbyte-cdk = "5.12.0" [tool.poetry.scripts] source-declarative-manifest = "source_declarative_manifest.run:run" diff --git a/docs/integrations/sources/low-code.md b/docs/integrations/sources/low-code.md index 3da07dded290d..edc12898efe9c 100644 --- a/docs/integrations/sources/low-code.md +++ b/docs/integrations/sources/low-code.md @@ -9,6 +9,7 @@ The changelog below is automatically updated by the `bump_version` command as pa | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------- | +| 5.12.0 | 2024-10-09 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.12.0 | | 5.11.1 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.11.1 | | 5.11.0 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.11.0 | | 5.10.3 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.10.3 | From 1178f537788674a6ec2f58a1a00527523cafcb87 Mon Sep 17 00:00:00 2001 From: Dmytro Mykhailov <106159381+dmykhailov@users.noreply.github.com> Date: Wed, 9 Oct 2024 20:55:05 +0200 Subject: [PATCH 210/379] Ticket: 8331: Google Ads Report Data is Malformed for complex object (#45852) --- .../source-google-ads/metadata.yaml | 2 +- .../source-google-ads/pyproject.toml | 2 +- .../source_google_ads/google_ads.py | 23 ++++++++- .../unit_tests/test_google_ads.py | 50 +++++++++++++++++++ docs/integrations/sources/google-ads.md | 1 + 5 files changed, 74 insertions(+), 4 deletions(-) diff --git a/airbyte-integrations/connectors/source-google-ads/metadata.yaml b/airbyte-integrations/connectors/source-google-ads/metadata.yaml index 642140892cf99..6d1fe635e4f84 100644 --- a/airbyte-integrations/connectors/source-google-ads/metadata.yaml +++ b/airbyte-integrations/connectors/source-google-ads/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 253487c0-2246-43ba-a21f-5116b20a2c50 - dockerImageTag: 3.7.6 + dockerImageTag: 3.7.7 dockerRepository: airbyte/source-google-ads documentationUrl: https://docs.airbyte.com/integrations/sources/google-ads githubIssueLabel: source-google-ads diff --git a/airbyte-integrations/connectors/source-google-ads/pyproject.toml b/airbyte-integrations/connectors/source-google-ads/pyproject.toml index eaa813f5a9be3..becd5dc1cf4aa 100644 --- a/airbyte-integrations/connectors/source-google-ads/pyproject.toml +++ b/airbyte-integrations/connectors/source-google-ads/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "3.7.6" +version = "3.7.7" name = "source-google-ads" description = "Source implementation for Google Ads." authors = [ "Airbyte ",] diff --git a/airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py b/airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py index dec57a0b007a5..3a2128f6182ff 100644 --- a/airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py +++ b/airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py @@ -13,6 +13,8 @@ from google.ads.googleads.v17.services.types.google_ads_service import GoogleAdsRow, SearchGoogleAdsResponse from google.api_core.exceptions import InternalServerError, ServerError, TooManyRequests from google.auth import exceptions +from google.protobuf import json_format +from google.protobuf.message import Message from proto.marshal.collections import Repeated, RepeatedComposite from .utils import logger @@ -160,7 +162,24 @@ def convert_schema_into_query( return query_template @staticmethod - def get_field_value(field_value: GoogleAdsRow, field: str, schema_type: Mapping[str, Any]) -> str: + def serialize_protobuf_message(message: Message) -> str: + """ + This method tryies to serialize a given object into JSON if the given object is a protocol bugger message. + If not, the normal str() is applied. That helps keep the complex objects written as parsable structures. + """ + try: + # The code is accessing "private" _pb value, because the message itself does not + # contain public PB attribute and for google ads message-based classes, like AdTextAd, + # that's apparently the only way to get the actual protobuf message that can be serialzied + # into json. + # type: ignore[union-attr] + return json_format.MessageToJson(message._pb, indent=0).replace("\n", "") + except AttributeError: + # This is a fallback for the cases when '_pb' attribute is not available. + return str(message) + + @staticmethod + def get_field_value(field_value: GoogleAdsRow, field: str, schema_type: Mapping[str, Any]) -> str | list[str]: field_name = field.split(".") for level_attr in field_name: """ @@ -211,7 +230,7 @@ def get_field_value(field_value: GoogleAdsRow, field: str, schema_type: Mapping[ if isinstance(field_value, Enum): field_value = field_value.name elif isinstance(field_value, (Repeated, RepeatedComposite)): - field_value = [str(value) for value in field_value] + field_value = [GoogleAds.serialize_protobuf_message(value) for value in field_value] # Google Ads has a lot of entities inside itself, and we cannot process them all separately, because: # 1. It will take a long time diff --git a/airbyte-integrations/connectors/source-google-ads/unit_tests/test_google_ads.py b/airbyte-integrations/connectors/source-google-ads/unit_tests/test_google_ads.py index a2dc516b82480..e3bec07f29762 100644 --- a/airbyte-integrations/connectors/source-google-ads/unit_tests/test_google_ads.py +++ b/airbyte-integrations/connectors/source-google-ads/unit_tests/test_google_ads.py @@ -3,11 +3,13 @@ # +import json from datetime import date import pendulum import pytest from airbyte_cdk.utils import AirbyteTracedException +from google.ads.googleads.v17.services.types.google_ads_service import GoogleAdsRow from google.auth import exceptions from source_google_ads.google_ads import GoogleAds from source_google_ads.streams import chunk_date_range @@ -146,6 +148,54 @@ def test_get_field_value(): response = GoogleAds.get_field_value(MockedDateSegment(date), field, {}) assert response == date +def test_get_field_value_object(): + expected_response = [ + { "text": "An exciting headline", "policySummaryInfo": { "reviewStatus": "REVIEWED","approvalStatus":"APPROVED" } }, + { "text": "second" }, + ] + field = "ad_group_ad.ad.responsive_search_ad.headlines" + ads_row = GoogleAdsRow( + ad_group_ad={ + "ad": { + "responsive_search_ad": { + "headlines": [ + { + "text": "An exciting headline", + "policy_summary_info": { + "review_status": "REVIEWED", + "approval_status": "APPROVED" + } + }, + { + "text": "second" + } + ] + } + } + } + ) + + response = GoogleAds.get_field_value(ads_row, field, {}) + assert [json.loads(i) for i in response] == expected_response + +def test_get_field_value_strings(): + expected_response = [ + "http://url_one.com", + "https://url_two.com", + ] + ads_row = GoogleAdsRow( + ad_group_ad={ + "ad": { + "final_urls": [ + "http://url_one.com", + "https://url_two.com", + ] + } + } + ) + field = "ad_group_ad.ad.final_urls" + response = GoogleAds.get_field_value(ads_row, field, {}) + assert response == expected_response def test_parse_single_result(): date = "2001-01-01" diff --git a/docs/integrations/sources/google-ads.md b/docs/integrations/sources/google-ads.md index 671bc3cf04c2f..94abe816d6a4f 100644 --- a/docs/integrations/sources/google-ads.md +++ b/docs/integrations/sources/google-ads.md @@ -335,6 +335,7 @@ Due to a limitation in the Google Ads API which does not allow getting performan | Version | Date | Pull Request | Subject | |:----------|:-----------|:---------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------| +| 3.7.7 | 2024-10-07 | [45852](https://github.com/airbytehq/airbyte/pull/45852) | Change to the objects serialization in lists to JSON | | 3.7.6 | 2024-09-21 | [46543](https://github.com/airbytehq/airbyte/pull/46543) | Raise exception on missing stream | | 3.7.5 | 2024-09-21 | [45801](https://github.com/airbytehq/airbyte/pull/45801) | Update dependencies | | 3.7.4 | 2024-09-20 | [44600](https://github.com/airbytehq/airbyte/pull/44600) | Update API documentation URLs | From 4d3907ab5875e09a84b21d6fa1cf64459be4c87f Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Wed, 9 Oct 2024 12:20:23 -0700 Subject: [PATCH 211/379] Destination DevNull: Bumping to pick up a fix (#46683) --- .../destination-dev-null/metadata.yaml | 2 +- docs/integrations/destinations/dev-null.md | 51 ++++++++++--------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/airbyte-integrations/connectors/destination-dev-null/metadata.yaml b/airbyte-integrations/connectors/destination-dev-null/metadata.yaml index fc32ebeb425c2..1a69e9bfb5f22 100644 --- a/airbyte-integrations/connectors/destination-dev-null/metadata.yaml +++ b/airbyte-integrations/connectors/destination-dev-null/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: file connectorType: destination definitionId: a7bcc9d8-13b3-4e49-b80d-d020b90045e3 - dockerImageTag: 0.7.4 + dockerImageTag: 0.7.5 dockerRepository: airbyte/destination-dev-null githubIssueLabel: destination-dev-null icon: airbyte.svg diff --git a/docs/integrations/destinations/dev-null.md b/docs/integrations/destinations/dev-null.md index 1b0dcd21d15fc..0535991b9d0c0 100644 --- a/docs/integrations/destinations/dev-null.md +++ b/docs/integrations/destinations/dev-null.md @@ -47,30 +47,31 @@ This mode throws an exception after receiving a configurable number of messages. The OSS and Cloud variants have the same version number starting from version `0.2.2`. -| Version | Date | Pull Request | Subject | -|:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------| -| 0.7.4 | 2024-10-08 | [46650](https://github.com/airbytehq/airbyte/pull/46650) | Internal code changes | -| 0.7.3 | 2024-10-01 | [46559](https://github.com/airbytehq/airbyte/pull/46559) | From load CDK: async improvements, stream incomplete, additionalProperties on state messages | -| 0.7.2 | 2024-10-01 | [45929](https://github.com/airbytehq/airbyte/pull/45929) | Internal code changes | -| 0.7.1 | 2024-09-30 | [46276](https://github.com/airbytehq/airbyte/pull/46276) | Upgrade to latest bulk CDK | -| 0.7.0 | 2024-09-20 | [45704](https://github.com/airbytehq/airbyte/pull/45704) | | -| 0.6.1 | 2024-09-20 | [45715](https://github.com/airbytehq/airbyte/pull/45715) | add destination to cloud registry | -| 0.6.0 | 2024-09-18 | [45651](https://github.com/airbytehq/airbyte/pull/45651) | merge destination-e2e(OSS) and destination-dev-null(cloud) | -| 0.5.0 | 2024-09-18 | [45650](https://github.com/airbytehq/airbyte/pull/45650) | upgrade cdk | -| 0.4.1 | 2024-09-18 | [45649](https://github.com/airbytehq/airbyte/pull/45649) | convert test code to kotlin | -| 0.4.0 | 2024-09-18 | [45648](https://github.com/airbytehq/airbyte/pull/45648) | convert production code to kotlin | -| 0.3.6 | 2024-05-09 | [38097](https://github.com/airbytehq/airbyte/pull/38097) | Support dedup | -| 0.3.5 | 2024-04-29 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Support refreshes | -| 0.3.4 | 2024-04-16 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Fix NPE | -| 0.3.3 | 2024-04-16 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Fix Log trace messages | -| 0.3.2 | 2024-02-14 | [36812](https://github.com/airbytehq/airbyte/pull/36812) | Log trace messages | -| 0.3.1 | 2024-02-14 | [35278](https://github.com/airbytehq/airbyte/pull/35278) | Adopt CDK 0.20.6 | -| 0.3.0 | 2023-05-08 | [25776](https://github.com/airbytehq/airbyte/pull/25776) | Standardize spec and change property field to non-keyword | -| 0.2.4 | 2022-06-17 | [13864](https://github.com/airbytehq/airbyte/pull/13864) | Updated stacktrace format for any trace message errors | -| 0.2.3 | 2022-02-14 | [10256](https://github.com/airbytehq/airbyte/pull/10256) | Add `-XX:+ExitOnOutOfMemoryError` JVM option | -| 0.2.2 | 2022-01-29 | [\#9745](https://github.com/airbytehq/airbyte/pull/9745) | Integrate with Sentry. | -| 0.2.1 | 2021-12-19 | [\#8824](https://github.com/airbytehq/airbyte/pull/8905) | Fix documentation URL. | -| 0.2.0 | 2021-12-16 | [\#8824](https://github.com/airbytehq/airbyte/pull/8824) | Add multiple logging modes. | -| 0.1.0 | 2021-05-25 | [\#3290](https://github.com/airbytehq/airbyte/pull/3290) | Create initial version. | +| Version | Date | Pull Request | Subject | +|:--------|:-----------|:---------------------------------------------------------------|:---------------------------------------------------------------------------------------------| +| 0.7.5 | 2024-10-08 | [46683](https://github.com/airbytehq/airbyte/pull/46683/files) | Bugfix: checkpoints in order, all checkpoints processed before shutdown | +| 0.7.4 | 2024-10-08 | [46650](https://github.com/airbytehq/airbyte/pull/46650) | Internal code changes | +| 0.7.3 | 2024-10-01 | [46559](https://github.com/airbytehq/airbyte/pull/46559) | From load CDK: async improvements, stream incomplete, additionalProperties on state messages | +| 0.7.2 | 2024-10-01 | [45929](https://github.com/airbytehq/airbyte/pull/45929) | Internal code changes | +| 0.7.1 | 2024-09-30 | [46276](https://github.com/airbytehq/airbyte/pull/46276) | Upgrade to latest bulk CDK | +| 0.7.0 | 2024-09-20 | [45704](https://github.com/airbytehq/airbyte/pull/45704) | | +| 0.6.1 | 2024-09-20 | [45715](https://github.com/airbytehq/airbyte/pull/45715) | add destination to cloud registry | +| 0.6.0 | 2024-09-18 | [45651](https://github.com/airbytehq/airbyte/pull/45651) | merge destination-e2e(OSS) and destination-dev-null(cloud) | +| 0.5.0 | 2024-09-18 | [45650](https://github.com/airbytehq/airbyte/pull/45650) | upgrade cdk | +| 0.4.1 | 2024-09-18 | [45649](https://github.com/airbytehq/airbyte/pull/45649) | convert test code to kotlin | +| 0.4.0 | 2024-09-18 | [45648](https://github.com/airbytehq/airbyte/pull/45648) | convert production code to kotlin | +| 0.3.6 | 2024-05-09 | [38097](https://github.com/airbytehq/airbyte/pull/38097) | Support dedup | +| 0.3.5 | 2024-04-29 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Support refreshes | +| 0.3.4 | 2024-04-16 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Fix NPE | +| 0.3.3 | 2024-04-16 | [37366](https://github.com/airbytehq/airbyte/pull/37366) | Fix Log trace messages | +| 0.3.2 | 2024-02-14 | [36812](https://github.com/airbytehq/airbyte/pull/36812) | Log trace messages | +| 0.3.1 | 2024-02-14 | [35278](https://github.com/airbytehq/airbyte/pull/35278) | Adopt CDK 0.20.6 | +| 0.3.0 | 2023-05-08 | [25776](https://github.com/airbytehq/airbyte/pull/25776) | Standardize spec and change property field to non-keyword | +| 0.2.4 | 2022-06-17 | [13864](https://github.com/airbytehq/airbyte/pull/13864) | Updated stacktrace format for any trace message errors | +| 0.2.3 | 2022-02-14 | [10256](https://github.com/airbytehq/airbyte/pull/10256) | Add `-XX:+ExitOnOutOfMemoryError` JVM option | +| 0.2.2 | 2022-01-29 | [\#9745](https://github.com/airbytehq/airbyte/pull/9745) | Integrate with Sentry. | +| 0.2.1 | 2021-12-19 | [\#8824](https://github.com/airbytehq/airbyte/pull/8905) | Fix documentation URL. | +| 0.2.0 | 2021-12-16 | [\#8824](https://github.com/airbytehq/airbyte/pull/8824) | Add multiple logging modes. | +| 0.1.0 | 2021-05-25 | [\#3290](https://github.com/airbytehq/airbyte/pull/3290) | Create initial version. | From d6eb912269b5da08eb9bab8b55a5b82e7e9a1f93 Mon Sep 17 00:00:00 2001 From: Krishnan <68746496+gemsteam@users.noreply.github.com> Date: Thu, 10 Oct 2024 00:53:29 +0530 Subject: [PATCH 212/379] source-rootly contribution from gemsteam (#46669) --- .../connectors/source-rootly/README.md | 33 + .../source-rootly/acceptance-test-config.yml | 17 + .../connectors/source-rootly/icon.svg | 14 + .../connectors/source-rootly/manifest.yaml | 5915 +++++++++++++++++ .../connectors/source-rootly/metadata.yaml | 35 + docs/integrations/sources/rootly.md | 57 + 6 files changed, 6071 insertions(+) create mode 100644 airbyte-integrations/connectors/source-rootly/README.md create mode 100644 airbyte-integrations/connectors/source-rootly/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-rootly/icon.svg create mode 100644 airbyte-integrations/connectors/source-rootly/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-rootly/metadata.yaml create mode 100644 docs/integrations/sources/rootly.md diff --git a/airbyte-integrations/connectors/source-rootly/README.md b/airbyte-integrations/connectors/source-rootly/README.md new file mode 100644 index 0000000000000..a704ccabeb1b9 --- /dev/null +++ b/airbyte-integrations/connectors/source-rootly/README.md @@ -0,0 +1,33 @@ +# Rootly +This directory contains the manifest-only connector for [`source-rootly`](https://rootly.com). + +Documentation: https://rootly.com/api#/ + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-rootly:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-rootly build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-rootly test +``` + diff --git a/airbyte-integrations/connectors/source-rootly/acceptance-test-config.yml b/airbyte-integrations/connectors/source-rootly/acceptance-test-config.yml new file mode 100644 index 0000000000000..fa975399152dc --- /dev/null +++ b/airbyte-integrations/connectors/source-rootly/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-rootly:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-rootly/icon.svg b/airbyte-integrations/connectors/source-rootly/icon.svg new file mode 100644 index 0000000000000..2b52ff1f35f56 --- /dev/null +++ b/airbyte-integrations/connectors/source-rootly/icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/airbyte-integrations/connectors/source-rootly/manifest.yaml b/airbyte-integrations/connectors/source-rootly/manifest.yaml new file mode 100644 index 0000000000000..e1d08b3619602 --- /dev/null +++ b/airbyte-integrations/connectors/source-rootly/manifest.yaml @@ -0,0 +1,5915 @@ +version: 5.8.1 + +type: DeclarativeSource + +description: "Documentation: https://rootly.com/api#/" + +check: + type: CheckStream + stream_names: + - dashboards + +definitions: + streams: + dashboards: + type: DeclarativeStream + name: dashboards + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: dashboards + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/dashboards" + incidents: + type: DeclarativeStream + name: incidents + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: incidents + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incidents" + authorizations: + type: DeclarativeStream + name: authorizations + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: authorizations + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/authorizations" + dashboards_panels: + type: DeclarativeStream + name: dashboards_panels + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: dashboards/{{ stream_partition.d_id }}/panels + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: d_id + stream: + $ref: "#/definitions/streams/dashboards" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/dashboards_panels" + users: + type: DeclarativeStream + name: users + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: users + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/users" + incident_types: + type: DeclarativeStream + name: incident_types + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: incident_types + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_types" + ip_ranges: + type: DeclarativeStream + name: ip_ranges + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: ip_ranges + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/ip_ranges" + users_notification_rules: + type: DeclarativeStream + name: users_notification_rules + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: users/{{ stream_partition.user_id }}/notification_rules + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: user_id + stream: + $ref: "#/definitions/streams/users" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/users_notification_rules" + teams: + type: DeclarativeStream + name: teams + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: teams + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/teams" + sub_statuses: + type: DeclarativeStream + name: sub_statuses + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: sub_statuses + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/sub_statuses" + incidents_sub_statuses: + type: DeclarativeStream + name: incidents_sub_statuses + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: incidents/{{ stream_partition.incident_id }}/sub_statuses + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: incident_id + stream: + $ref: "#/definitions/streams/incidents" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incidents_sub_statuses" + incident_roles: + type: DeclarativeStream + name: incident_roles + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: incident_roles + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_roles" + post_mortems: + type: DeclarativeStream + name: post_mortems + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: post_mortems + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/post_mortems" + status-pages: + type: DeclarativeStream + name: status-pages + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: status-pages + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/status-pages" + severities: + type: DeclarativeStream + name: severities + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: severities + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/severities" + services: + type: DeclarativeStream + name: services + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: services + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/services" + incident_permission_sets: + type: DeclarativeStream + name: incident_permission_sets + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: incident_permission_sets + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_permission_sets" + incident_permission_sets_resources: + type: DeclarativeStream + name: incident_permission_sets_resources + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + incident_permission_sets/{{ + stream_partition.incident_permission_set_id }}/resources + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: incident_permission_set_id + stream: + $ref: "#/definitions/streams/incident_permission_sets" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_permission_sets_resources" + incident_permission_sets_booleans: + type: DeclarativeStream + name: incident_permission_sets_booleans + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + incident_permission_sets/{{ + stream_partition.incident_permission_set_id }}/booleans + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: incident_permission_set_id + stream: + $ref: "#/definitions/streams/incident_permission_sets" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incident_permission_sets_booleans" + roles: + type: DeclarativeStream + name: roles + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: roles + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/roles" + incidents_events: + type: DeclarativeStream + name: incidents_events + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: incidents/{{ stream_partition.incident_id }}/events + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: incident_id + stream: + $ref: "#/definitions/streams/incidents" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incidents_events" + workflows: + type: DeclarativeStream + name: workflows + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: workflows + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/workflows" + workflow_groups: + type: DeclarativeStream + name: workflow_groups + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: workflow_groups + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/workflow_groups" + workflows_tasks: + type: DeclarativeStream + name: workflows_tasks + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: workflows/{{stream_partition.workflow_id }}/workflow_tasks + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: workflow_id + stream: + $ref: "#/definitions/streams/workflows" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/workflows_tasks" + form_sets: + type: DeclarativeStream + name: form_sets + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: form_sets + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/form_sets" + form_fields: + type: DeclarativeStream + name: form_fields + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: form_fields + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/form_fields" + playbooks: + type: DeclarativeStream + name: playbooks + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: playbooks + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playbooks" + incidents_action_items: + type: DeclarativeStream + name: incidents_action_items + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: incidents/{{ stream_partition.incident_id }}/action_items + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: incident_id + stream: + $ref: "#/definitions/streams/incidents" + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/incidents_action_items" + retrospective_configurations: + type: DeclarativeStream + name: retrospective_configurations + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: retrospective_configurations + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/retrospective_configurations" + retrospective_processes: + type: DeclarativeStream + name: retrospective_processes + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: retrospective_processes + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + max_retries: 2 + backoff_strategies: + - type: ConstantBackoffStrategy + backoff_time_in_seconds: 5 + response_filters: + - type: HttpResponseFilter + action: RATE_LIMITED + error_message: "429" + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page[number] + page_size_option: + type: RequestOption + field_name: page[size] + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: updated_at + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S.%f%z" + datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: filter[updated_at][gte] + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: filter[updated_at][lte] + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + transformations: + - type: AddFields + fields: + - path: + - updated_at + value: "{{ record[\"attributes\"][\"updated_at\"] }}" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/retrospective_processes" + base_requester: + type: HttpRequester + url_base: https://api.rootly.com/v1/ + authenticator: + type: BearerAuthenticator + api_token: "{{ config[\"api_key\"] }}" + +streams: + - $ref: "#/definitions/streams/dashboards" + - $ref: "#/definitions/streams/incidents" + - $ref: "#/definitions/streams/authorizations" + - $ref: "#/definitions/streams/dashboards_panels" + - $ref: "#/definitions/streams/users" + - $ref: "#/definitions/streams/incident_types" + - $ref: "#/definitions/streams/ip_ranges" + - $ref: "#/definitions/streams/users_notification_rules" + - $ref: "#/definitions/streams/teams" + - $ref: "#/definitions/streams/sub_statuses" + - $ref: "#/definitions/streams/incidents_sub_statuses" + - $ref: "#/definitions/streams/incident_roles" + - $ref: "#/definitions/streams/post_mortems" + - $ref: "#/definitions/streams/status-pages" + - $ref: "#/definitions/streams/severities" + - $ref: "#/definitions/streams/services" + - $ref: "#/definitions/streams/incident_permission_sets" + - $ref: "#/definitions/streams/incident_permission_sets_resources" + - $ref: "#/definitions/streams/incident_permission_sets_booleans" + - $ref: "#/definitions/streams/roles" + - $ref: "#/definitions/streams/incidents_events" + - $ref: "#/definitions/streams/workflows" + - $ref: "#/definitions/streams/workflow_groups" + - $ref: "#/definitions/streams/workflows_tasks" + - $ref: "#/definitions/streams/form_sets" + - $ref: "#/definitions/streams/form_fields" + - $ref: "#/definitions/streams/playbooks" + - $ref: "#/definitions/streams/incidents_action_items" + - $ref: "#/definitions/streams/retrospective_configurations" + - $ref: "#/definitions/streams/retrospective_processes" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + - start_date + properties: + api_key: + type: string + order: 0 + title: API Key + airbyte_secret: true + start_date: + type: string + order: 1 + title: Start date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + additionalProperties: true + +metadata: + autoImportSchema: + dashboards: true + incidents: true + authorizations: true + dashboards_panels: true + users: true + incident_types: true + ip_ranges: true + users_notification_rules: true + teams: true + sub_statuses: true + incidents_sub_statuses: true + incident_roles: true + post_mortems: true + status-pages: true + severities: true + services: true + incident_permission_sets: true + incident_permission_sets_resources: true + incident_permission_sets_booleans: true + roles: true + incidents_events: true + workflows: true + workflow_groups: true + workflows_tasks: true + form_sets: true + form_fields: true + playbooks: true + incidents_action_items: true + retrospective_configurations: true + retrospective_processes: true + testedStreams: + dashboards: + streamHash: 7f26654fcb63b5671f5879b175acdcddbf2fcbb2 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + incidents: + hasRecords: true + streamHash: 6a7d207eb35ceb79d35b7dcbb455e4f4ef9c2647 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + authorizations: + hasRecords: true + streamHash: 74a7b9ea0b11731c530acfc924cb2661a9fc7c43 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + dashboards_panels: + hasRecords: true + streamHash: 41f7aeceb88938f537ddb87fe92acee51723b391 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + users: + hasRecords: true + streamHash: ba10b5956d03a8e0a7d6cd81c9b9d882708177cd + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + incident_types: + hasRecords: true + streamHash: 31960d0485524c090d944c4e19e81badf3a77ecf + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + ip_ranges: + hasRecords: true + streamHash: 03a611935c0a06a36b86dc9d7867c53a7de119fa + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + users_notification_rules: + hasRecords: true + streamHash: 25232360f06af63d53be7edd48eb599a34d8dd10 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + teams: + hasRecords: true + streamHash: 889a8457c7765ab4e6290850acc39c8b0810fd9d + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + sub_statuses: + hasRecords: true + streamHash: 1d11236c0f61bf3d26ad1a56e97d64353d35cdd4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + incidents_sub_statuses: + hasRecords: true + streamHash: 9e51697eeed1469cfea6397022ec19f15115a5da + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + incident_roles: + hasRecords: true + streamHash: c31c9f2d608f2b466f36e556731315b514dc9e8b + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + post_mortems: + hasRecords: true + streamHash: 136891857f9eb58458c0c334d1f3e1f9051f6b70 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + status-pages: + hasRecords: true + streamHash: 97bf2f422f4cb3f54d880ab4019297871b04870e + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + severities: + hasRecords: true + streamHash: 11fec3ba47b3084fd55e66410cd5c3515006dcb4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + services: + hasRecords: true + streamHash: aa372f42eee4de89d971658a8d7bf3d082cef1bc + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + incident_permission_sets: + hasRecords: true + streamHash: 33f35e12a06e62e845a2b7e25f615adb731e959d + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + incident_permission_sets_resources: + hasRecords: true + streamHash: 4252923f5e8f17c1ae6fd3cab903185379bbd659 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + incident_permission_sets_booleans: + hasRecords: true + streamHash: 61ec8859ccdd483f3392dd3e5768ce3e83eb3ee0 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + roles: + hasRecords: true + streamHash: 0addd78402f7c6082b7aca0dbb468e51a7aba3b4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + incidents_events: + hasRecords: true + streamHash: 0d1a6deeca567b4994f5727899ba2f8392ae00f4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + workflows: + hasRecords: true + streamHash: 3e606d99bbec0d1e335f8532ef89c5aa965b195b + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + workflow_groups: + hasRecords: true + streamHash: da93655201d233695656bcd3c63443c225fc9d1e + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + workflows_tasks: + hasRecords: true + streamHash: 76f9a13abeb6127601fda71e1668b3904c1f67e2 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + form_sets: + hasRecords: true + streamHash: 2e1d4fd567620031a426f9b6b015a6281461260b + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + form_fields: + hasRecords: true + streamHash: 8aa7de53cd01c513548d2b95cd451b6923bbc2d4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + playbooks: + hasRecords: true + streamHash: 328f96ffc9545af67ba5091d45592f7df3e0bec9 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + incidents_action_items: + hasRecords: true + streamHash: 1958e0c126ec0df890003ebf59f0fa19a1264237 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + retrospective_configurations: + hasRecords: true + streamHash: f70cb6c7cfbe315f9351ca2cad7e07be6650cf56 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + retrospective_processes: + hasRecords: true + streamHash: 28c03f525598090d7fb65e55067c5b626f420242 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + assist: {} + +schemas: + dashboards: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + auto_refresh: + type: + - boolean + - "null" + color: + type: + - string + - "null" + created_at: + type: + - string + - "null" + icon: + type: + - string + - "null" + name: + type: + - string + - "null" + owner: + type: + - string + - "null" + period: + type: + - string + - "null" + public: + type: + - boolean + - "null" + range: + type: + - string + - "null" + slug: + type: + - string + - "null" + team_id: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + panels: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + updated_at: + type: string + required: + - id + - updated_at + incidents: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + kind: + type: + - string + - "null" + labels: + type: + - object + - "null" + properties: + infrastructure: + type: + - string + - "null" + product: + type: + - string + - "null" + system: + type: + - string + - "null" + web: + type: + - boolean + - "null" + mitigated_at: + type: + - string + - "null" + private: + type: + - boolean + - "null" + resolved_at: + type: + - string + - "null" + retrospective_progress_status: + type: + - string + - "null" + sequential_id: + type: + - number + - "null" + severity: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + color: + type: + - string + - "null" + created_at: + type: + - string + - "null" + name: + type: + - string + - "null" + notify_emails: + type: + - array + - "null" + position: + type: + - number + - "null" + severity: + type: + - string + - "null" + slack_aliases: + type: + - array + - "null" + slack_channels: + type: + - array + - "null" + slug: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: + - string + - "null" + short_url: + type: + - string + - "null" + slack_channel_archived: + type: + - boolean + - "null" + slug: + type: + - string + - "null" + source: + type: + - string + - "null" + started_at: + type: + - string + - "null" + started_by: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + email: + type: + - string + - "null" + full_name: + type: + - string + - "null" + full_name_with_team: + type: + - string + - "null" + name: + type: + - string + - "null" + time_zone: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: + - string + - "null" + relationships: + type: + - object + - "null" + properties: + devices: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + email_addresses: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + phone_numbers: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + status: + type: + - string + - "null" + summary: + type: + - string + - "null" + title: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + url: + type: + - string + - "null" + user: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + email: + type: + - string + - "null" + full_name: + type: + - string + - "null" + full_name_with_team: + type: + - string + - "null" + name: + type: + - string + - "null" + time_zone: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: + - string + - "null" + relationships: + type: + - object + - "null" + properties: + devices: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + email_addresses: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + phone_numbers: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + zoom_meeting_global_dial_in_numbers: + type: + - array + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + action_items: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + causes: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + custom_field_selections: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + environments: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + events: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + feedbacks: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + functionalities: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + groups: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + incident_post_mortem: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + incident_types: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + roles: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + services: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + subscribers: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + updated_at: + type: string + required: + - id + - updated_at + authorizations: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + authorizable_id: + type: + - string + - "null" + authorizable_type: + type: + - string + - "null" + created_at: + type: + - string + - "null" + grantee_id: + type: + - string + - "null" + grantee_type: + type: + - string + - "null" + permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + dashboards_panels: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + dashboard_id: + type: + - string + - "null" + data: + anyOf: + - type: + - "null" + - number + - type: array + items: + type: object + properties: + color: + type: + - "null" + - string + data: + type: object + properties: + "2024-10-02": + type: number + "2024-10-03": + type: number + "2024-10-04": + type: number + "2024-10-05": + type: number + "2024-10-06": + type: number + "2024-10-07": + type: number + "2024-10-08": + type: number + "2024-10-09": + type: number + first_name: + type: string + hours_until_mitigated: + type: number + hours_until_resolved: + type: number + hours_until_triaged: + type: number + incidents: + type: number + last_name: + type: string + name: + type: string + name: + type: + - string + - "null" + params: + type: + - object + - "null" + properties: + datasets: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + aggregate: + type: + - object + - "null" + properties: + cumulative: + type: + - boolean + - "null" + key: + type: + - string + - "null" + operation: + type: + - string + - "null" + collection: + type: + - string + - "null" + filter: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + operation: + type: + - string + - "null" + rules: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + condition: + type: + - string + - "null" + key: + type: + - string + - "null" + operation: + type: + - string + - "null" + value: + type: + - string + - "null" + group_by: + type: + - string + - "null" + display: + type: + - string + - "null" + position: + type: + - object + - "null" + properties: + h: + type: + - number + - "null" + w: + type: + - number + - "null" + x: + type: + - number + - "null" + "y": + type: + - number + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + users: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + email: + type: + - string + - "null" + full_name: + type: + - string + - "null" + full_name_with_team: + type: + - string + - "null" + name: + type: + - string + - "null" + time_zone: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + devices: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + email_addresses: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + phone_numbers: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + updated_at: + type: string + required: + - id + - updated_at + incident_types: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + color: + type: + - string + - "null" + created_at: + type: + - string + - "null" + name: + type: + - string + - "null" + notify_emails: + type: + - array + - "null" + position: + type: + - number + - "null" + slack_aliases: + type: + - array + - "null" + slack_channels: + type: + - array + - "null" + slug: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + ip_ranges: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + integrations_ipv4: + type: + - array + - "null" + items: + type: + - string + - "null" + integrations_ipv6: + type: + - array + - "null" + webhooks_ipv4: + type: + - array + - "null" + items: + type: + - string + - "null" + webhooks_ipv6: + type: + - array + - "null" + id: + type: string + required: + - id + users_notification_rules: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + delay: + type: + - number + - "null" + enabled_contact_types: + type: + - array + - "null" + items: + type: + - string + - "null" + position: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + user_email_address_id: + type: + - string + - "null" + user_id: + type: + - number + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + teams: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + color: + type: + - string + - "null" + created_at: + type: + - string + - "null" + incidents_count: + type: + - number + - "null" + name: + type: + - string + - "null" + notify_emails: + type: + - array + - "null" + position: + type: + - number + - "null" + slack_aliases: + type: + - array + - "null" + slack_channels: + type: + - array + - "null" + slug: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + user_ids: + type: + - array + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + users: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + updated_at: + type: string + required: + - id + - updated_at + sub_statuses: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + name: + type: + - string + - "null" + parent_status: + type: + - string + - "null" + position: + type: + - number + - "null" + slug: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + incidents_sub_statuses: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + assigned_at: + type: + - string + - "null" + assigned_by_user_id: + type: + - number + - "null" + incident_id: + type: + - string + - "null" + sub_status_id: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + assigned_by_user: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + sub_status: + type: + - object + - "null" + properties: + data: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + updated_at: + type: string + required: + - id + - updated_at + incident_roles: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + allow_multi_user_assignment: + type: + - boolean + - "null" + created_at: + type: + - string + - "null" + enabled: + type: + - boolean + - "null" + name: + type: + - string + - "null" + optional: + type: + - boolean + - "null" + position: + type: + - number + - "null" + slug: + type: + - string + - "null" + summary: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + post_mortems: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + incident_id: + type: + - string + - "null" + mitigated_at: + type: + - string + - "null" + resolved_at: + type: + - string + - "null" + short_url: + type: + - string + - "null" + show_action_items: + type: + - boolean + - "null" + show_functionalities_impacted: + type: + - boolean + - "null" + show_groups_impacted: + type: + - boolean + - "null" + show_services_impacted: + type: + - boolean + - "null" + show_timeline: + type: + - boolean + - "null" + show_timeline_action_items: + type: + - boolean + - "null" + show_timeline_genius: + type: + - boolean + - "null" + show_timeline_order: + type: + - string + - "null" + show_timeline_starred_only: + type: + - boolean + - "null" + show_timeline_tasks: + type: + - boolean + - "null" + show_timeline_trail: + type: + - boolean + - "null" + started_at: + type: + - string + - "null" + status: + type: + - string + - "null" + title: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + url: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + status-pages: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + allow_email_subscribers: + type: + - boolean + - "null" + allow_rss_atom_feeds: + type: + - boolean + - "null" + allow_search_engine_index: + type: + - boolean + - "null" + allow_sms_subscribers: + type: + - boolean + - "null" + authentication_enabled: + type: + - boolean + - "null" + authentication_password: + type: + - string + - "null" + created_at: + type: + - string + - "null" + enabled: + type: + - boolean + - "null" + failure_message: + type: + - string + - "null" + footer_color: + type: + - string + - "null" + functionality_ids: + type: + - array + - "null" + header_color: + type: + - string + - "null" + public: + type: + - boolean + - "null" + public_title: + type: + - string + - "null" + service_ids: + type: + - array + - "null" + items: + type: + - string + - "null" + success_message: + type: + - string + - "null" + time_zone: + type: + - string + - "null" + title: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + severities: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + color: + type: + - string + - "null" + created_at: + type: + - string + - "null" + name: + type: + - string + - "null" + notify_emails: + type: + - array + - "null" + position: + type: + - number + - "null" + severity: + type: + - string + - "null" + slack_aliases: + type: + - array + - "null" + slack_channels: + type: + - array + - "null" + slug: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + services: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + color: + type: + - string + - "null" + created_at: + type: + - string + - "null" + environment_ids: + type: + - array + - "null" + github_repository_branch: + type: + - string + - "null" + gitlab_repository_branch: + type: + - string + - "null" + incidents_count: + type: + - number + - "null" + name: + type: + - string + - "null" + notify_emails: + type: + - array + - "null" + owners_group_ids: + type: + - array + - "null" + owners_user_ids: + type: + - array + - "null" + position: + type: + - number + - "null" + public_description: + type: + - string + - "null" + service_ids: + type: + - array + - "null" + show_uptime: + type: + - boolean + - "null" + show_uptime_last_days: + type: + - number + - "null" + slack_aliases: + type: + - array + - "null" + slack_channels: + type: + - array + - "null" + slug: + type: + - string + - "null" + status: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + incident_permission_sets: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + name: + type: + - string + - "null" + private_incident_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + public_incident_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + slug: + type: + - string + - "null" + team_id: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + incident_permission_sets_resources: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + incident_permission_set_id: + type: + - string + - "null" + kind: + type: + - string + - "null" + private: + type: + - boolean + - "null" + resource_id: + type: + - string + - "null" + resource_type: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + incident_permission_sets_booleans: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + enabled: + type: + - boolean + - "null" + incident_permission_set_id: + type: + - string + - "null" + kind: + type: + - string + - "null" + private: + type: + - boolean + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + roles: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + api_keys_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + audits_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + billing_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + created_at: + type: + - string + - "null" + environments_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + form_fields_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + functionalities_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + groups_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + incident_causes_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + incident_feedbacks_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + incident_permission_set_id: + type: + - string + - "null" + incident_roles_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + incident_types_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + incidents_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + invitations_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + is_deletable: + type: + - boolean + - "null" + is_editable: + type: + - boolean + - "null" + name: + type: + - string + - "null" + playbooks_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + private_incidents_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + retrospective_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + roles_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + secrets_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + services_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + severities_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + slug: + type: + - string + - "null" + status_pages_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + team_id: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + webhooks_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + workflows_permissions: + type: + - array + - "null" + items: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + incidents_events: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + event: + type: + - string + - "null" + event_raw: + type: + - string + - "null" + kind: + type: + - string + - "null" + occurred_at: + type: + - string + - "null" + source: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + user_display_name: + type: + - string + - "null" + visibility: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + workflows: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + command: + type: + - string + - "null" + command_feedback_enabled: + type: + - boolean + - "null" + created_at: + type: + - string + - "null" + enabled: + type: + - boolean + - "null" + environment_ids: + type: + - array + - "null" + functionality_ids: + type: + - array + - "null" + group_ids: + type: + - array + - "null" + incident_role_ids: + type: + - array + - "null" + incident_type_ids: + type: + - array + - "null" + locked: + type: + - boolean + - "null" + name: + type: + - string + - "null" + position: + type: + - number + - "null" + repeat_on: + type: + - array + - "null" + service_ids: + type: + - array + - "null" + severity_ids: + type: + - array + - "null" + slug: + type: + - string + - "null" + trigger_params: + type: + - object + - "null" + properties: + incident_condition: + type: + - string + - "null" + incident_condition_cause: + type: + - string + - "null" + incident_condition_environment: + type: + - string + - "null" + incident_condition_functionality: + type: + - string + - "null" + incident_condition_group: + type: + - string + - "null" + incident_condition_incident_roles: + type: + - string + - "null" + incident_condition_incident_type: + type: + - string + - "null" + incident_condition_kind: + type: + - string + - "null" + incident_condition_service: + type: + - string + - "null" + incident_condition_severity: + type: + - string + - "null" + incident_condition_status: + type: + - string + - "null" + incident_condition_visibility: + type: + - string + - "null" + incident_kinds: + type: + - array + - "null" + items: + type: + - string + - "null" + incident_post_mortem_condition_cause: + type: + - string + - "null" + incident_statuses: + type: + - array + - "null" + items: + type: + - string + - "null" + incident_visibilities: + type: + - array + - "null" + trigger_type: + type: + - string + - "null" + triggers: + type: + - array + - "null" + items: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + wait: + type: + - string + - "null" + workflow_group_id: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + custom_field_selections: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + workflow_runs: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + workflow_tasks: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + updated_at: + type: string + required: + - id + - updated_at + workflow_groups: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + expanded: + type: + - boolean + - "null" + icon: + type: + - string + - "null" + name: + type: + - string + - "null" + position: + type: + - number + - "null" + slug: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + workflows_tasks: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + enabled: + type: + - boolean + - "null" + name: + type: + - string + - "null" + position: + type: + - number + - "null" + skip_on_failure: + type: + - boolean + - "null" + task_params: + type: + - object + - "null" + properties: + bcc: + type: + - array + - "null" + body: + type: + - string + - "null" + cc: + type: + - array + - "null" + from: + type: + - string + - "null" + include_footer: + type: + - boolean + - "null" + include_header: + type: + - boolean + - "null" + subject: + type: + - string + - "null" + task_type: + type: + - string + - "null" + to: + type: + - array + - "null" + items: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + workflow_id: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + form_sets: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + forms: + type: + - array + - "null" + items: + type: + - string + - "null" + is_default: + type: + - boolean + - "null" + name: + type: + - string + - "null" + slug: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + form_fields: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + default_values: + type: + - array + - "null" + enabled: + type: + - boolean + - "null" + input_kind: + type: + - string + - "null" + kind: + type: + - string + - "null" + name: + type: + - string + - "null" + required: + type: + - array + - "null" + show_on_incident_details: + type: + - boolean + - "null" + shown: + type: + - array + - "null" + items: + type: + - string + - "null" + slug: + type: + - string + - "null" + team_id: + type: + - number + - "null" + updated_at: + type: + - string + - "null" + value_kind: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + options: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + positions: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + updated_at: + type: string + required: + - id + - updated_at + playbooks: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + cause_ids: + type: + - array + - "null" + created_at: + type: + - string + - "null" + environment_ids: + type: + - array + - "null" + external_url: + type: + - string + - "null" + functionality_ids: + type: + - array + - "null" + group_ids: + type: + - array + - "null" + incident_type_ids: + type: + - array + - "null" + items: + type: + - string + - "null" + service_ids: + type: + - array + - "null" + severity_ids: + type: + - array + - "null" + items: + type: + - string + - "null" + title: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + causes: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + environments: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + functionalities: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + groups: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + incident_types: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + services: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + severities: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + updated_at: + type: string + required: + - id + - updated_at + incidents_action_items: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + assigned_to: + type: + - object + - "null" + properties: + ability_cache: + type: + - object + - "null" + properties: + administrating_team_ids: + type: + - array + - "null" + items: + type: + - number + - "null" + team_ids: + type: + - array + - "null" + items: + type: + - number + - "null" + accept_marketing: + type: + - boolean + - "null" + accept_terms: + type: + - boolean + - "null" + created_at: + type: + - string + - "null" + created_through_sso: + type: + - boolean + - "null" + current_team_id: + type: + - number + - "null" + email: + type: + - string + - "null" + first_name: + type: + - string + - "null" + has_impersonate_write_permission: + type: + - boolean + - "null" + id: + type: + - number + - "null" + incidents_backfilled_count: + type: + - number + - "null" + incidents_count: + type: + - number + - "null" + incidents_example_count: + type: + - number + - "null" + incidents_normal_count: + type: + - number + - "null" + incidents_scheduled_count: + type: + - number + - "null" + incidents_test_count: + type: + - number + - "null" + is_super_admin: + type: + - boolean + - "null" + jti: + type: + - string + - "null" + last_name: + type: + - string + - "null" + last_seen_at: + type: + - string + - "null" + onboarding_completed: + type: + - boolean + - "null" + push_notification_new_alert_sound: + type: + - string + - "null" + push_notification_shift_ends_sound: + type: + - string + - "null" + push_notification_shift_starts_sound: + type: + - string + - "null" + service_user: + type: + - boolean + - "null" + skip_tutorial: + type: + - boolean + - "null" + teams_count: + type: + - number + - "null" + theme: + type: + - string + - "null" + time_zone: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + view_multiple_schedules: + type: + - boolean + - "null" + assigned_to_group_ids: + type: + - array + - "null" + created_at: + type: + - string + - "null" + incident_id: + type: + - string + - "null" + incident_title: + type: + - string + - "null" + kind: + type: + - string + - "null" + priority: + type: + - string + - "null" + short_url: + type: + - string + - "null" + status: + type: + - string + - "null" + summary: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + url: + type: + - string + - "null" + id: + type: string + updated_at: + type: string + required: + - id + - updated_at + retrospective_configurations: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + created_at: + type: + - string + - "null" + group_ids: + type: + - array + - "null" + incident_type_ids: + type: + - array + - "null" + kind: + type: + - string + - "null" + severity_ids: + type: + - array + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + groups: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + incident_types: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + severities: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + updated_at: + type: string + required: + - id + - updated_at + retrospective_processes: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + attributes: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + created_at: + type: + - string + - "null" + is_default: + type: + - boolean + - "null" + name: + type: + - string + - "null" + updated_at: + type: + - string + - "null" + id: + type: string + relationships: + type: + - object + - "null" + properties: + retrospective_steps: + type: + - object + - "null" + properties: + data: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + updated_at: + type: string + required: + - id + - updated_at diff --git a/airbyte-integrations/connectors/source-rootly/metadata.yaml b/airbyte-integrations/connectors/source-rootly/metadata.yaml new file mode 100644 index 0000000000000..a44d2ba2d2ea1 --- /dev/null +++ b/airbyte-integrations/connectors/source-rootly/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.rootly.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-rootly + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.11.1@sha256:f48a7ddc1f3acecbd8eb6a10a3146e8d0396e9a4dede77beafb76924f416df65 + connectorSubtype: api + connectorType: source + definitionId: 2f111b00-0b92-4329-8481-6d7aa27a3991 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-rootly + githubIssueLabel: source-rootly + icon: icon.svg + license: MIT + name: Rootly + releaseDate: 2024-10-09 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/rootly + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/rootly.md b/docs/integrations/sources/rootly.md new file mode 100644 index 0000000000000..598500842c0a5 --- /dev/null +++ b/docs/integrations/sources/rootly.md @@ -0,0 +1,57 @@ +# Rootly +## Overview + +The Rootly source supports _Full Refresh_ as well as _Incremental_ syncs. +Documentation: https://rootly.com/api#/ + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. | | +| `start_date` | `string` | Start date. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| dashboards | id | DefaultPaginator | ✅ | ✅ | +| incidents | id | DefaultPaginator | ✅ | ✅ | +| authorizations | id | DefaultPaginator | ✅ | ✅ | +| dashboards_panels | id | DefaultPaginator | ✅ | ✅ | +| users | id | DefaultPaginator | ✅ | ✅ | +| incident_types | id | DefaultPaginator | ✅ | ✅ | +| ip_ranges | id | DefaultPaginator | ✅ | ❌ | +| users_notification_rules | id | DefaultPaginator | ✅ | ✅ | +| teams | id | DefaultPaginator | ✅ | ✅ | +| sub_statuses | id | DefaultPaginator | ✅ | ✅ | +| incidents_sub_statuses | id | DefaultPaginator | ✅ | ✅ | +| incident_roles | id | DefaultPaginator | ✅ | ✅ | +| post_mortems | id | DefaultPaginator | ✅ | ✅ | +| status-pages | id | DefaultPaginator | ✅ | ✅ | +| severities | id | DefaultPaginator | ✅ | ✅ | +| services | id | DefaultPaginator | ✅ | ✅ | +| incident_permission_sets | id | DefaultPaginator | ✅ | ✅ | +| incident_permission_sets_resources | id | DefaultPaginator | ✅ | ✅ | +| incident_permission_sets_booleans | id | DefaultPaginator | ✅ | ✅ | +| roles | id | DefaultPaginator | ✅ | ✅ | +| incidents_events | id | DefaultPaginator | ✅ | ✅ | +| workflows | id | DefaultPaginator | ✅ | ✅ | +| workflow_groups | id | DefaultPaginator | ✅ | ✅ | +| workflows_tasks | id | DefaultPaginator | ✅ | ✅ | +| form_sets | id | DefaultPaginator | ✅ | ✅ | +| form_fields | id | DefaultPaginator | ✅ | ✅ | +| playbooks | id | DefaultPaginator | ✅ | ✅ | +| incidents_action_items | id | DefaultPaginator | ✅ | ✅ | +| retrospective_configurations | id | DefaultPaginator | ✅ | ✅ | +| retrospective_processes | id | DefaultPaginator | ✅ | ✅ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-09 | [46669](https://github.com/airbytehq/airbyte/pull/46669) | Initial release by [@gemsteam](https://github.com/gemsteam) via Connector Builder | + +
From 138972ded32ba75c943bbae8c6e4221fb3431b32 Mon Sep 17 00:00:00 2001 From: Johnny Schmidt Date: Wed, 9 Oct 2024 12:42:57 -0700 Subject: [PATCH 213/379] Bulk Load CDK: Bugfix: Checkpoint manager allows duplicate indexes (#46688) --- .../main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt index 7a999616c45aa..6963c214b371f 100644 --- a/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt +++ b/airbyte-cdk/bulk/core/load/src/main/kotlin/io/airbyte/cdk/load/state/CheckpointManager.kt @@ -186,7 +186,7 @@ abstract class StreamsCheckpointManager : CheckpointManager val lastIndex = lastIndexEmitted[stream] - if (lastIndex != null && index <= lastIndex) { + if (lastIndex != null && index < lastIndex) { throw IllegalStateException( "Checkpoint message for $stream emitted out of order (emitting $index after $lastIndex)" ) From d0f6fa3b09814f54ab29f2aa3d2fbdb231513a7d Mon Sep 17 00:00:00 2001 From: Edward Gao Date: Wed, 9 Oct 2024 13:22:32 -0700 Subject: [PATCH 214/379] Bulk load CDK: Set WORKER_JOB_ID env var in non-dockerized integration test (#46680) --- airbyte-cdk/bulk/core/load/build.gradle | 1 + .../cdk/load/test/util/IntegrationTest.kt | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/airbyte-cdk/bulk/core/load/build.gradle b/airbyte-cdk/bulk/core/load/build.gradle index 276b063f4d812..c08fc533c4b7c 100644 --- a/airbyte-cdk/bulk/core/load/build.gradle +++ b/airbyte-cdk/bulk/core/load/build.gradle @@ -22,6 +22,7 @@ dependencies { testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1") implementation "org.jetbrains.kotlin:kotlin-reflect:2.0.20" + testFixturesImplementation "uk.org.webcompere:system-stubs-jupiter:2.1.7" } task integrationTest(type: Test) { diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/IntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/IntegrationTest.kt index a0fae6a369631..b45d8fabf3dd3 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/IntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/test/util/IntegrationTest.kt @@ -27,8 +27,13 @@ import kotlinx.coroutines.async import kotlinx.coroutines.runBlocking import org.apache.commons.lang3.RandomStringUtils import org.junit.jupiter.api.AfterEach +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.extension.ExtendWith import org.junit.jupiter.api.parallel.Execution import org.junit.jupiter.api.parallel.ExecutionMode +import uk.org.webcompere.systemstubs.environment.EnvironmentVariables +import uk.org.webcompere.systemstubs.jupiter.SystemStub +import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension @MicronautTest @Execution(ExecutionMode.CONCURRENT) @@ -36,12 +41,25 @@ import org.junit.jupiter.api.parallel.ExecutionMode // so we have to suppress the entire class. // Thanks, spotbugs. @SuppressFBWarnings("NP_NONNULL_RETURN_VIOLATION", justification = "Micronaut DI") +@ExtendWith(SystemStubsExtension::class) abstract class IntegrationTest( val dataDumper: DestinationDataDumper, val destinationCleaner: DestinationCleaner, val recordMangler: ExpectedRecordMapper = NoopExpectedRecordMapper, val nameMapper: NameMapper = NoopNameMapper, ) { + // Connectors are calling System.getenv rather than using micronaut-y properties, + // so we have to mock it out, instead of just setting more properties + // inside NonDockerizedDestination. + // This field has no effect on DockerizedDestination, which explicitly + // sets env vars when invoking `docker run`. + @SystemStub private lateinit var nonDockerMockEnvVars: EnvironmentVariables + + @BeforeEach + fun setEnvVars() { + nonDockerMockEnvVars.set("WORKER_JOB_ID", "0") + } + // Intentionally don't inject the actual destination process - we need a full factory // because some tests want to run multiple syncs, so we need to run the destination // multiple times. From e8caebe6dff9abd90bb9157db8902607ff7505a1 Mon Sep 17 00:00:00 2001 From: Edward Gao Date: Wed, 9 Oct 2024 13:38:13 -0700 Subject: [PATCH 215/379] Bulk load CDK: remove redundant check test (#46655) --- .../MockBasicFunctionalityIntegrationTest.kt | 8 +++++++- .../BasicFunctionalityIntegrationTest.kt | 19 ------------------- ...evNullBasicFunctionalityIntegrationTest.kt | 5 ----- 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt index ba8f1a8e315e6..ae93391b9a1da 100644 --- a/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/integrationTest/kotlin/io/airbyte/cdk/load/mock_integration_test/MockBasicFunctionalityIntegrationTest.kt @@ -8,6 +8,7 @@ import io.airbyte.cdk.load.test.util.NoopDestinationCleaner import io.airbyte.cdk.load.test.util.NoopExpectedRecordMapper import io.airbyte.cdk.load.test.util.NoopNameMapper import io.airbyte.cdk.load.write.BasicFunctionalityIntegrationTest +import org.junit.jupiter.api.Test class MockBasicFunctionalityIntegrationTest : BasicFunctionalityIntegrationTest( @@ -16,4 +17,9 @@ class MockBasicFunctionalityIntegrationTest : NoopDestinationCleaner, NoopExpectedRecordMapper, NoopNameMapper - ) + ) { + @Test + override fun testBasicWrite() { + super.testBasicWrite() + } +} diff --git a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/write/BasicFunctionalityIntegrationTest.kt b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/write/BasicFunctionalityIntegrationTest.kt index e5b51aee5ae07..2672a956b3fde 100644 --- a/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/write/BasicFunctionalityIntegrationTest.kt +++ b/airbyte-cdk/bulk/core/load/src/testFixtures/kotlin/io/airbyte/cdk/load/write/BasicFunctionalityIntegrationTest.kt @@ -18,7 +18,6 @@ import io.airbyte.cdk.load.test.util.NameMapper import io.airbyte.cdk.load.test.util.NoopExpectedRecordMapper import io.airbyte.cdk.load.test.util.NoopNameMapper import io.airbyte.cdk.load.test.util.OutputRecord -import io.airbyte.protocol.models.v0.AirbyteConnectionStatus import io.airbyte.protocol.models.v0.AirbyteMessage import io.airbyte.protocol.models.v0.AirbyteRecordMessageMetaChange import kotlin.test.assertEquals @@ -37,24 +36,6 @@ abstract class BasicFunctionalityIntegrationTest( */ val verifyDataWriting: Boolean = true, ) : IntegrationTest(dataDumper, destinationCleaner, recordMangler, nameMapper) { - @Test - open fun testCheck() { - val process = destinationProcessFactory.createDestinationProcess("check", config = config) - process.run() - val messages = process.readMessages() - val checkMessages = messages.filter { it.type == AirbyteMessage.Type.CONNECTION_STATUS } - - assertEquals( - checkMessages.size, - 1, - "Expected to receive exactly one connection status message, but got ${checkMessages.size}: $checkMessages" - ) - assertEquals( - AirbyteConnectionStatus.Status.SUCCEEDED, - checkMessages.first().connectionStatus.status - ) - } - @Test open fun testBasicWrite() { val messages = diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt index c0ecf552744ac..588abc4f2d578 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt +++ b/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullBasicFunctionalityIntegrationTest.kt @@ -18,11 +18,6 @@ class DevNullBasicFunctionalityIntegrationTest : verifyDataWriting = false, ) { - @Test - override fun testCheck() { - super.testCheck() - } - @Test override fun testBasicWrite() { super.testBasicWrite() From 25944cad4ac7d64d6145820ec699331d5c65c0e5 Mon Sep 17 00:00:00 2001 From: Edward Gao Date: Wed, 9 Oct 2024 13:50:54 -0700 Subject: [PATCH 216/379] Bulk CDK: remove redundant source set? (#46690) --- buildSrc/src/main/groovy/airbyte-bulk-connector.gradle | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/buildSrc/src/main/groovy/airbyte-bulk-connector.gradle b/buildSrc/src/main/groovy/airbyte-bulk-connector.gradle index 4e0dd5201f167..7828a15321cc7 100644 --- a/buildSrc/src/main/groovy/airbyte-bulk-connector.gradle +++ b/buildSrc/src/main/groovy/airbyte-bulk-connector.gradle @@ -140,16 +140,6 @@ class AirbyteBulkConnectorPlugin implements Plugin { } } } - - project.kotlin { - sourceSets { - testIntegration { - kotlin.srcDir 'src/test-integration/kotlin' - resources.srcDir 'src/test-integration/resources' - } - } - } - project.tasks.named('spotbugsTest').configure { enabled = false } From 5381fbab8d98caed37da81a134fb8673b2a2651f Mon Sep 17 00:00:00 2001 From: Patrick Nilan Date: Wed, 9 Oct 2024 16:40:03 -0700 Subject: [PATCH 217/379] [airbyte-cdk] - removes `class_types_registry` and `default_implementation_registry` (#46693) --- .../parsers/class_types_registry.py | 104 ------------------ .../default_implementation_registry.py | 64 ----------- 2 files changed, 168 deletions(-) delete mode 100644 airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/class_types_registry.py delete mode 100644 airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/default_implementation_registry.py diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/class_types_registry.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/class_types_registry.py deleted file mode 100644 index b1861142b5695..0000000000000 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/class_types_registry.py +++ /dev/null @@ -1,104 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from typing import Mapping - -from airbyte_cdk.sources.declarative.auth.declarative_authenticator import NoAuth -from airbyte_cdk.sources.declarative.auth.jwt import JwtAuthenticator -from airbyte_cdk.sources.declarative.auth.oauth import DeclarativeOauth2Authenticator -from airbyte_cdk.sources.declarative.auth.token import ( - ApiKeyAuthenticator, - BasicHttpAuthenticator, - BearerAuthenticator, - LegacySessionTokenAuthenticator, -) -from airbyte_cdk.sources.declarative.checks import CheckStream -from airbyte_cdk.sources.declarative.datetime.min_max_datetime import MinMaxDatetime -from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream -from airbyte_cdk.sources.declarative.extractors import RecordFilter -from airbyte_cdk.sources.declarative.extractors.dpath_extractor import DpathExtractor -from airbyte_cdk.sources.declarative.extractors.record_selector import RecordSelector -from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor -from airbyte_cdk.sources.declarative.interpolation.interpolated_boolean import InterpolatedBoolean -from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString -from airbyte_cdk.sources.declarative.partition_routers.cartesian_product_stream_slicer import CartesianProductStreamSlicer -from airbyte_cdk.sources.declarative.partition_routers.list_partition_router import ListPartitionRouter -from airbyte_cdk.sources.declarative.partition_routers.substream_partition_router import ParentStreamConfig, SubstreamPartitionRouter -from airbyte_cdk.sources.declarative.requesters import RequestOption -from airbyte_cdk.sources.declarative.requesters.error_handlers import HttpResponseFilter -from airbyte_cdk.sources.declarative.requesters.error_handlers.backoff_strategies.constant_backoff_strategy import ConstantBackoffStrategy -from airbyte_cdk.sources.declarative.requesters.error_handlers.backoff_strategies.exponential_backoff_strategy import ( - ExponentialBackoffStrategy, -) -from airbyte_cdk.sources.declarative.requesters.error_handlers.backoff_strategies.wait_time_from_header_backoff_strategy import ( - WaitTimeFromHeaderBackoffStrategy, -) -from airbyte_cdk.sources.declarative.requesters.error_handlers.backoff_strategies.wait_until_time_from_header_backoff_strategy import ( - WaitUntilTimeFromHeaderBackoffStrategy, -) -from airbyte_cdk.sources.declarative.requesters.error_handlers.composite_error_handler import CompositeErrorHandler -from airbyte_cdk.sources.declarative.requesters.error_handlers.default_error_handler import DefaultErrorHandler -from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester -from airbyte_cdk.sources.declarative.requesters.paginators.default_paginator import DefaultPaginator -from airbyte_cdk.sources.declarative.requesters.paginators.no_pagination import NoPagination -from airbyte_cdk.sources.declarative.requesters.paginators.strategies.cursor_pagination_strategy import CursorPaginationStrategy -from airbyte_cdk.sources.declarative.requesters.paginators.strategies.offset_increment import OffsetIncrement -from airbyte_cdk.sources.declarative.requesters.paginators.strategies.page_increment import PageIncrement -from airbyte_cdk.sources.declarative.requesters.request_options import InterpolatedRequestOptionsProvider -from airbyte_cdk.sources.declarative.retrievers.simple_retriever import SimpleRetriever -from airbyte_cdk.sources.declarative.schema.inline_schema_loader import InlineSchemaLoader -from airbyte_cdk.sources.declarative.schema.json_file_schema_loader import JsonFileSchemaLoader -from airbyte_cdk.sources.declarative.spec import Spec -from airbyte_cdk.sources.declarative.transformations import RemoveFields -from airbyte_cdk.sources.declarative.transformations.add_fields import AddedFieldDefinition, AddFields -from airbyte_cdk.sources.streams.http.requests_native_auth.oauth import SingleUseRefreshTokenOauth2Authenticator - -""" -CLASS_TYPES_REGISTRY contains a mapping of developer-friendly string -> class to abstract the specific class referred to -""" -CLASS_TYPES_REGISTRY: Mapping[str, type] = { - "AddedFieldDefinition": AddedFieldDefinition, - "AddFields": AddFields, - "ApiKeyAuthenticator": ApiKeyAuthenticator, - "BasicHttpAuthenticator": BasicHttpAuthenticator, - "BearerAuthenticator": BearerAuthenticator, - "CartesianProductStreamSlicer": CartesianProductStreamSlicer, - "CheckStream": CheckStream, - "CompositeErrorHandler": CompositeErrorHandler, - "ConstantBackoffStrategy": ConstantBackoffStrategy, - "CursorPagination": CursorPaginationStrategy, - "DatetimeBasedCursor": DatetimeBasedCursor, - "DeclarativeStream": DeclarativeStream, - "DefaultErrorHandler": DefaultErrorHandler, - "DefaultPaginator": DefaultPaginator, - "DpathExtractor": DpathExtractor, - "ExponentialBackoffStrategy": ExponentialBackoffStrategy, - "HttpRequester": HttpRequester, - "HttpResponseFilter": HttpResponseFilter, - "InlineSchemaLoader": InlineSchemaLoader, - "InterpolatedBoolean": InterpolatedBoolean, - "InterpolatedRequestOptionsProvider": InterpolatedRequestOptionsProvider, - "InterpolatedString": InterpolatedString, - "JsonFileSchemaLoader": JsonFileSchemaLoader, - "JwtAuthenticator": JwtAuthenticator, - "ListPartitionRouter": ListPartitionRouter, - "MinMaxDatetime": MinMaxDatetime, - "NoAuth": NoAuth, - "NoPagination": NoPagination, - "OAuthAuthenticator": DeclarativeOauth2Authenticator, - "SingleUseRefreshTokenOAuthAuthenticator": SingleUseRefreshTokenOauth2Authenticator, - "OffsetIncrement": OffsetIncrement, - "PageIncrement": PageIncrement, - "ParentStreamConfig": ParentStreamConfig, - "RecordFilter": RecordFilter, - "RecordSelector": RecordSelector, - "RequestOption": RequestOption, - "RemoveFields": RemoveFields, - "SimpleRetriever": SimpleRetriever, - "Spec": Spec, - "SubstreamPartitionRouter": SubstreamPartitionRouter, - "SessionTokenAuthenticator": LegacySessionTokenAuthenticator, - "WaitUntilTimeFromHeader": WaitUntilTimeFromHeaderBackoffStrategy, - "WaitTimeFromHeader": WaitTimeFromHeaderBackoffStrategy, -} diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/default_implementation_registry.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/default_implementation_registry.py deleted file mode 100644 index 2077bfb6168b1..0000000000000 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/parsers/default_implementation_registry.py +++ /dev/null @@ -1,64 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from typing import Mapping, Type - -from airbyte_cdk.sources.declarative.checks.check_stream import CheckStream -from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker -from airbyte_cdk.sources.declarative.datetime.min_max_datetime import MinMaxDatetime -from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream -from airbyte_cdk.sources.declarative.decoders.decoder import Decoder -from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder -from airbyte_cdk.sources.declarative.extractors.dpath_extractor import DpathExtractor -from airbyte_cdk.sources.declarative.extractors.http_selector import HttpSelector -from airbyte_cdk.sources.declarative.extractors.record_extractor import RecordExtractor -from airbyte_cdk.sources.declarative.extractors.record_selector import RecordSelector -from airbyte_cdk.sources.declarative.interpolation.interpolated_boolean import InterpolatedBoolean -from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString -from airbyte_cdk.sources.declarative.partition_routers.single_partition_router import SinglePartitionRouter -from airbyte_cdk.sources.declarative.requesters.error_handlers.default_error_handler import DefaultErrorHandler -from airbyte_cdk.sources.declarative.requesters.error_handlers.error_handler import ErrorHandler -from airbyte_cdk.sources.declarative.requesters.error_handlers.http_response_filter import HttpResponseFilter -from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester -from airbyte_cdk.sources.declarative.requesters.paginators.default_paginator import RequestOption -from airbyte_cdk.sources.declarative.requesters.paginators.no_pagination import NoPagination -from airbyte_cdk.sources.declarative.requesters.paginators.paginator import Paginator -from airbyte_cdk.sources.declarative.requesters.request_options.interpolated_request_options_provider import ( - InterpolatedRequestOptionsProvider, -) -from airbyte_cdk.sources.declarative.requesters.request_options.request_options_provider import RequestOptionsProvider -from airbyte_cdk.sources.declarative.requesters.requester import Requester -from airbyte_cdk.sources.declarative.retrievers.retriever import Retriever -from airbyte_cdk.sources.declarative.retrievers.simple_retriever import SimpleRetriever -from airbyte_cdk.sources.declarative.schema import DefaultSchemaLoader -from airbyte_cdk.sources.declarative.schema.schema_loader import SchemaLoader -from airbyte_cdk.sources.declarative.stream_slicers.stream_slicer import StreamSlicer -from airbyte_cdk.sources.declarative.stream_slicers.substream_slicer import ParentStreamConfig -from airbyte_cdk.sources.streams.core import Stream - -""" -DEFAULT_IMPLEMENTATIONS_REGISTRY contains a mapping of interface -> subclass -enabling the factory to instantiate a reasonable default class when no type or classname is specified -""" -DEFAULT_IMPLEMENTATIONS_REGISTRY: Mapping[Type, Type] = { - ConnectionChecker: CheckStream, - Decoder: JsonDecoder, - ErrorHandler: DefaultErrorHandler, - HttpResponseFilter: HttpResponseFilter, - HttpSelector: RecordSelector, - InterpolatedBoolean: InterpolatedBoolean, - InterpolatedRequestOptionsProvider: InterpolatedRequestOptionsProvider, - InterpolatedString: InterpolatedString, - MinMaxDatetime: MinMaxDatetime, - Paginator: NoPagination, - ParentStreamConfig: ParentStreamConfig, - RecordExtractor: DpathExtractor, - RequestOption: RequestOption, - RequestOptionsProvider: InterpolatedRequestOptionsProvider, - Requester: HttpRequester, - Retriever: SimpleRetriever, - SchemaLoader: DefaultSchemaLoader, - Stream: DeclarativeStream, - StreamSlicer: SinglePartitionRouter, -} From 614b341228ff95d699bad21007859786db9e2e64 Mon Sep 17 00:00:00 2001 From: pnilan Date: Wed, 9 Oct 2024 23:44:05 +0000 Subject: [PATCH 218/379] =?UTF-8?q?=F0=9F=A4=96=20patch=20bump=20Python=20?= =?UTF-8?q?CDK=20to=20version=205.12.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-cdk/python/CHANGELOG.md | 3 +++ airbyte-cdk/python/pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/airbyte-cdk/python/CHANGELOG.md b/airbyte-cdk/python/CHANGELOG.md index 4a397aa382e78..722ba0181bb01 100644 --- a/airbyte-cdk/python/CHANGELOG.md +++ b/airbyte-cdk/python/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 5.12.1 +Low Code: Removes deprecated and + ## 5.12.0 Low Code: Adds component diff --git a/airbyte-cdk/python/pyproject.toml b/airbyte-cdk/python/pyproject.toml index e610160714f2a..845ee0e1b0d43 100644 --- a/airbyte-cdk/python/pyproject.toml +++ b/airbyte-cdk/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "airbyte-cdk" -version = "5.12.0" +version = "5.12.1" description = "A framework for writing Airbyte Connectors." authors = ["Airbyte "] license = "MIT" From 2107cad5d2bdf76c8d47edb403614a4d39f4c61a Mon Sep 17 00:00:00 2001 From: pnilan Date: Wed, 9 Oct 2024 23:50:28 +0000 Subject: [PATCH 219/379] =?UTF-8?q?=F0=9F=A4=96=20Cut=20version=205.12.1?= =?UTF-8?q?=20of=20source-declarative-manifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectors/source-declarative-manifest/metadata.yaml | 2 +- .../connectors/source-declarative-manifest/poetry.lock | 8 ++++---- .../connectors/source-declarative-manifest/pyproject.toml | 4 ++-- docs/integrations/sources/low-code.md | 1 + 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml index cc2e3a3733842..6091e7c130837 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml +++ b/airbyte-integrations/connectors/source-declarative-manifest/metadata.yaml @@ -8,7 +8,7 @@ data: connectorType: source definitionId: 64a2f99c-542f-4af8-9a6f-355f1217b436 # This version should not be updated manually - it is updated by the CDK release workflow. - dockerImageTag: 5.12.0 + dockerImageTag: 5.12.1 dockerRepository: airbyte/source-declarative-manifest # This page is hidden from the docs for now, since the connector is not in any Airbyte registries. documentationUrl: https://docs.airbyte.com/integrations/sources/low-code diff --git a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock index 06ec7b5012a7e..aa9ad2fff6de1 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock +++ b/airbyte-integrations/connectors/source-declarative-manifest/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "airbyte-cdk" -version = "5.12.0" +version = "5.12.1" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-5.12.0-py3-none-any.whl", hash = "sha256:77d658418eef4b540b715d2315bb4797ce80ae661456eb7bcfc01bc6a5337464"}, - {file = "airbyte_cdk-5.12.0.tar.gz", hash = "sha256:a8ba1bc70ceaf0bf0b61ded72e9df4bd1dc89e1bbda5b430c17575b76a45d83a"}, + {file = "airbyte_cdk-5.12.1-py3-none-any.whl", hash = "sha256:a3fbb7a97a43190224738321f99eca1ae38f53c0eaf1625de1e86058eb777d68"}, + {file = "airbyte_cdk-5.12.1.tar.gz", hash = "sha256:099dd339a976bdb2a6c381983db7dd075cbc638cce712283fe04cde0a57efd18"}, ] [package.dependencies] @@ -1746,4 +1746,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10,<3.12" -content-hash = "4d68b0702589341902943efdfa38055137a768f38e628ec9182bfcde89d8e1b2" +content-hash = "fbcf4a1001a397ed6af1063a7a7e298988907969947248e6b8cb50b10ea7d04f" diff --git a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml index fe390df648f74..36adf95b0fc02 100644 --- a/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml +++ b/airbyte-integrations/connectors/source-declarative-manifest/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "5.12.0" +version = "5.12.1" name = "source-declarative-manifest" description = "Base source implementation for low-code sources." authors = ["Airbyte "] @@ -17,7 +17,7 @@ include = "source_declarative_manifest" [tool.poetry.dependencies] python = "^3.10,<3.12" -airbyte-cdk = "5.12.0" +airbyte-cdk = "5.12.1" [tool.poetry.scripts] source-declarative-manifest = "source_declarative_manifest.run:run" diff --git a/docs/integrations/sources/low-code.md b/docs/integrations/sources/low-code.md index edc12898efe9c..ad61391044dfa 100644 --- a/docs/integrations/sources/low-code.md +++ b/docs/integrations/sources/low-code.md @@ -9,6 +9,7 @@ The changelog below is automatically updated by the `bump_version` command as pa | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------- | +| 5.12.1 | 2024-10-09 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.12.1 | | 5.12.0 | 2024-10-09 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.12.0 | | 5.11.1 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.11.1 | | 5.11.0 | 2024-10-07 | [36501](https://github.com/airbytehq/airbyte/pull/36501) | Bump CDK version to 5.11.0 | From b051802f690c8ff855c5e32458f96da089a586b8 Mon Sep 17 00:00:00 2001 From: Airbyte Date: Thu, 10 Oct 2024 03:15:32 +0300 Subject: [PATCH 220/379] =?UTF-8?q?=F0=9F=90=99=20source-basecamp:=20run?= =?UTF-8?q?=20up-to-date=20pipeline=20[2024-10-09]=20(#46660)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airbyte-integrations/connectors/source-basecamp/metadata.yaml | 4 ++-- docs/integrations/sources/basecamp.md | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/airbyte-integrations/connectors/source-basecamp/metadata.yaml b/airbyte-integrations/connectors/source-basecamp/metadata.yaml index c9cbbbbc6f10d..85305a913b0eb 100644 --- a/airbyte-integrations/connectors/source-basecamp/metadata.yaml +++ b/airbyte-integrations/connectors/source-basecamp/metadata.yaml @@ -13,11 +13,11 @@ data: enabled: false packageName: airbyte-source-basecamp connectorBuildOptions: - baseImage: docker.io/airbyte/source-declarative-manifest:4.4.3@sha256:8937b693c7e01087f6e86e683826ac20f160f7952b8f0a13cbf4f9bfdd7af570 + baseImage: docker.io/airbyte/source-declarative-manifest:5.11.1@sha256:f48a7ddc1f3acecbd8eb6a10a3146e8d0396e9a4dede77beafb76924f416df65 connectorSubtype: api connectorType: source definitionId: 0abc340d-772c-4fa1-8d1d-ebf3be72ab51 - dockerImageTag: 0.0.1 + dockerImageTag: 0.0.2 dockerRepository: airbyte/source-basecamp githubIssueLabel: source-basecamp icon: icon.svg diff --git a/docs/integrations/sources/basecamp.md b/docs/integrations/sources/basecamp.md index 5d32cc5e8da79..364dde931ef9c 100644 --- a/docs/integrations/sources/basecamp.md +++ b/docs/integrations/sources/basecamp.md @@ -30,6 +30,7 @@ To obtain a refresh token, you'd need to register an [oauth application](https:/ | Version | Date | Pull Request | Subject | |---------|------|--------------|---------| +| 0.0.2 | 2024-10-09 | [46660](https://github.com/airbytehq/airbyte/pull/46660) | Update dependencies | | 0.0.1 | 2024-08-12 | | Initial release by natikgadzhi via Connector Builder | From 13b158ef95559ffc6c49e5d1f7d50c79596e2b44 Mon Sep 17 00:00:00 2001 From: letiescanciano <45267095+letiescanciano@users.noreply.github.com> Date: Thu, 10 Oct 2024 07:51:39 +0200 Subject: [PATCH 221/379] =?UTF-8?q?=F0=9F=93=9A=20docs:=20Allow=20visitors?= =?UTF-8?q?=20to=20request=20ERDs=20(#45694)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docusaurus/.env.example | 1 + docusaurus/.gitignore | 2 + docusaurus/docusaurus.config.js | 6 +- docusaurus/package.json | 3 +- docusaurus/pnpm-lock.yaml | 177 +++++++++++++++--- docusaurus/src/components/Modal/Modal.jsx | 47 +++++ .../src/components/Modal/Modal.module.css | 59 ++++++ .../src/components/RequestERD/EmailModal.jsx | 143 ++++++++++++++ .../RequestERD/EmailModal.module.css | 53 ++++++ .../src/components/RequestERD/RequestERD.jsx | 63 +++++++ .../RequestERD/RequestERD.module.css | 26 +++ docusaurus/src/css/custom.css | 6 + docusaurus/src/theme/TOCItems/index.js | 70 +++++-- 13 files changed, 619 insertions(+), 37 deletions(-) create mode 100644 docusaurus/.env.example create mode 100644 docusaurus/src/components/Modal/Modal.jsx create mode 100644 docusaurus/src/components/Modal/Modal.module.css create mode 100644 docusaurus/src/components/RequestERD/EmailModal.jsx create mode 100644 docusaurus/src/components/RequestERD/EmailModal.module.css create mode 100644 docusaurus/src/components/RequestERD/RequestERD.jsx create mode 100644 docusaurus/src/components/RequestERD/RequestERD.module.css diff --git a/docusaurus/.env.example b/docusaurus/.env.example new file mode 100644 index 0000000000000..b330a01c08bdb --- /dev/null +++ b/docusaurus/.env.example @@ -0,0 +1 @@ +REQUEST_ERD_API_URL= \ No newline at end of file diff --git a/docusaurus/.gitignore b/docusaurus/.gitignore index b2d6de30624f6..db0eed5ba8ea3 100644 --- a/docusaurus/.gitignore +++ b/docusaurus/.gitignore @@ -10,7 +10,9 @@ # Misc .DS_Store +.env .env.local +.env .env.development.local .env.test.local .env.production.local diff --git a/docusaurus/docusaurus.config.js b/docusaurus/docusaurus.config.js index 6dbf99a88434a..9bbe14c0022f3 100644 --- a/docusaurus/docusaurus.config.js +++ b/docusaurus/docusaurus.config.js @@ -1,6 +1,6 @@ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion - +import "dotenv/config.js"; const yaml = require("js-yaml"); const fs = require("node:fs"); const path = require("node:path"); @@ -78,7 +78,9 @@ const config = { }, }), ], - + customFields: { + requestErdApiUrl: process.env.REQUEST_ERD_API_URL, + }, clientModules: [ require.resolve("./src/scripts/cloudStatus.js"), require.resolve("./src/scripts/download-abctl-buttons.js"), diff --git a/docusaurus/package.json b/docusaurus/package.json index 610f6ea0622fd..164bfdace1d6f 100644 --- a/docusaurus/package.json +++ b/docusaurus/package.json @@ -90,7 +90,7 @@ "@fortawesome/free-regular-svg-icons": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/react-fontawesome": "^0.2.0", - "@headlessui/react": "^1.7.18", + "@headlessui/react": "^2.1.9", "@mdx-js/react": "^3.0.0", "async": "2.6.4", "autoprefixer": "10.4.16", @@ -106,6 +106,7 @@ "del": "6.1.1", "docusaurus-plugin-hubspot": "^1.0.0", "docusaurus-plugin-segment": "^1.0.3", + "dotenv": "^16.4.5", "html-loader": "^4.2.0", "js-yaml": "^4.1.0", "json-schema-faker": "^0.5.4", diff --git a/docusaurus/pnpm-lock.yaml b/docusaurus/pnpm-lock.yaml index 33e2fc1e3621d..8af3571598547 100644 --- a/docusaurus/pnpm-lock.yaml +++ b/docusaurus/pnpm-lock.yaml @@ -237,8 +237,8 @@ importers: specifier: ^0.2.0 version: 0.2.0(@fortawesome/fontawesome-svg-core@6.5.1)(react@18.2.0) '@headlessui/react': - specifier: ^1.7.18 - version: 1.7.18(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^2.1.9 + version: 2.1.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@mdx-js/react': specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.46)(react@18.2.0) @@ -284,6 +284,9 @@ importers: docusaurus-plugin-segment: specifier: ^1.0.3 version: 1.0.3 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 html-loader: specifier: ^4.2.0 version: 4.2.0(webpack@5.89.0) @@ -1424,6 +1427,27 @@ packages: '@docusaurus/types': optional: true + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.11': + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.26.24': + resolution: {integrity: sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + '@fortawesome/fontawesome-common-types@6.5.1': resolution: {integrity: sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==} engines: {node: '>=6'} @@ -1452,12 +1476,12 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@headlessui/react@1.7.18': - resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==} + '@headlessui/react@2.1.9': + resolution: {integrity: sha512-ckWw7vlKtnoa1fL2X0fx1a3t/Li9MIKDVXn3SgG65YlxvDAsNrY39PPCxVM7sQRA7go2fJsuHSSauKFNaJHH7A==} engines: {node: '>=10'} peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 + react: ^18 + react-dom: ^18 '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} @@ -1536,6 +1560,37 @@ packages: '@polka/url@1.0.0-next.24': resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + '@react-aria/focus@3.18.3': + resolution: {integrity: sha512-WKUElg+5zS0D3xlVn8MntNnkzJql2J6MuzAMP8Sv5WTgFDse/XGR842dsxPTIyKKdrWVCRegCuwa4m3n/GzgJw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/interactions@3.22.3': + resolution: {integrity: sha512-RRUb/aG+P0IKTIWikY/SylB6bIbLZeztnZY2vbe7RAG5MgVaCgn5HQ45SI15GlTmhsFG8CnF6slJsUFJiNHpbQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/ssr@3.9.6': + resolution: {integrity: sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/utils@3.25.3': + resolution: {integrity: sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/utils@3.10.4': + resolution: {integrity: sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/shared@3.25.0': + resolution: {integrity: sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@segment/snippet@4.16.2': resolution: {integrity: sha512-2fgsrt4U+vKv14ohOAsViCEzeZotaawF2Il7YUbmYVrhPn8Hq7xuGznHKRdZeoxScQ87X36xDX2Fzh5bAYRN7g==} @@ -1644,18 +1699,21 @@ packages: resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} - '@tanstack/react-virtual@3.0.1': - resolution: {integrity: sha512-IFOFuRUTaiM/yibty9qQ9BfycQnYXIDHGP2+cU+0LrFFGNhVxCXSQnaY6wkX8uJVteFEBjUondX0Hmpp7TNcag==} + '@tanstack/react-virtual@3.10.8': + resolution: {integrity: sha512-VbzbVGSsZlQktyLrP5nxE+vE1ZR+U0NFAWPbJLoG2+DKPwd2D7dVICTVIIaYlJqX1ZCEnYDbaOpmMwbsyhBoIA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@tanstack/virtual-core@3.0.0': - resolution: {integrity: sha512-SYXOBTjJb05rXa2vl55TTwO40A6wKu0R5i1qQwhJYNDIqaIGF7D0HsLw+pJAyi2OvntlEIVusx3xtbbgSUi6zg==} + '@tanstack/virtual-core@3.10.8': + resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} @@ -2205,9 +2263,6 @@ packages: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -2847,6 +2902,10 @@ packages: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -5468,6 +5527,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} @@ -7672,6 +7734,31 @@ snapshots: - uglify-js - webpack-cli + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.11': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/dom': 1.6.11 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@floating-ui/react@0.26.24(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@floating-ui/utils': 0.2.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.8': {} + '@fortawesome/fontawesome-common-types@6.5.1': {} '@fortawesome/fontawesome-svg-core@6.5.1': @@ -7698,10 +7785,12 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@headlessui/react@1.7.18(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@headlessui/react@2.1.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@tanstack/react-virtual': 3.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - client-only: 0.0.1 + '@floating-ui/react': 0.26.24(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/focus': 3.18.3(react@18.2.0) + '@react-aria/interactions': 3.22.3(react@18.2.0) + '@tanstack/react-virtual': 3.10.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -7812,6 +7901,46 @@ snapshots: '@polka/url@1.0.0-next.24': {} + '@react-aria/focus@3.18.3(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.3(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + clsx: 2.1.0 + react: 18.2.0 + + '@react-aria/interactions@3.22.3(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/ssr@3.9.6(react@18.2.0)': + dependencies: + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/utils@3.25.3(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + clsx: 2.1.0 + react: 18.2.0 + + '@react-stately/utils@3.10.4(react@18.2.0)': + dependencies: + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-types/shared@3.25.0(react@18.2.0)': + dependencies: + react: 18.2.0 + '@segment/snippet@4.16.2': dependencies: '@ndhoule/map': 2.0.1 @@ -7931,17 +8060,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.6.2 + '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 - '@tanstack/react-virtual@3.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@tanstack/react-virtual@3.10.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@tanstack/virtual-core': 3.0.0 + '@tanstack/virtual-core': 3.10.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@tanstack/virtual-core@3.0.0': {} + '@tanstack/virtual-core@3.10.8': {} '@trysound/sax@0.2.0': {} @@ -8590,8 +8723,6 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 - client-only@0.0.1: {} - clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 @@ -9299,6 +9430,8 @@ snapshots: dependencies: is-obj: 2.0.0 + dotenv@16.4.5: {} + duplexer@0.1.2: {} eastasianwidth@0.2.0: {} @@ -12465,6 +12598,8 @@ snapshots: csso: 5.0.5 picocolors: 1.0.0 + tabbable@6.2.0: {} + tapable@1.1.3: {} tapable@2.2.1: {} diff --git a/docusaurus/src/components/Modal/Modal.jsx b/docusaurus/src/components/Modal/Modal.jsx new file mode 100644 index 0000000000000..291e2b3c5debf --- /dev/null +++ b/docusaurus/src/components/Modal/Modal.jsx @@ -0,0 +1,47 @@ +import { faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { + Description, + Dialog, + DialogPanel, + DialogTitle, +} from "@headlessui/react"; +import React from "react"; +import styles from "./Modal.module.css"; + +export const Overlay = () => ( +