From 6f65934d1bbb58d21def29be7ef46cf736d994ef Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 10:07:14 +0200 Subject: [PATCH 01/10] Source Faker Hardcode: init commit [skip ci] Signed-off-by: Artem Inzhyyants --- .../source-faker-hardcode/README.md | 104 + .../acceptance-test-config.yml | 46 + .../connectors/source-faker-hardcode/icon.svg | 1 + .../integration_tests/__init__.py | 3 + .../integration_tests/abnormal_state.json | 35 + .../integration_tests/acceptance.py | 14 + .../integration_tests/configured_catalog.json | 26 + .../integration_tests/expected_records.jsonl | 0 .../integration_tests/invalid_config.json | 3 + .../integration_tests/sample_config.json | 6 + .../integration_tests/sample_state.json | 24 + .../connectors/source-faker-hardcode/main.py | 9 + .../source-faker-hardcode/metadata.yaml | 52 + .../source-faker-hardcode/poetry.lock | 1399 ++++++++ .../source-faker-hardcode/pyproject.toml | 27 + .../source_faker_hardcode/__init__.py | 8 + .../source_faker_hardcode/run.py | 18 + .../schemas/countries.json | 71 + .../source_faker_hardcode/schemas/orders.json | 2991 +++++++++++++++++ .../source_faker_hardcode/source.py | 26 + .../source_faker_hardcode/spec.json | 20 + .../source_faker_hardcode/streams.py | 467 +++ .../unit_tests/unit_test.py | 5 + 23 files changed, 5355 insertions(+) create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/README.md create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/icon.svg create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/integration_tests/__init__.py create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/integration_tests/abnormal_state.json create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/integration_tests/acceptance.py create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/integration_tests/configured_catalog.json create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/integration_tests/expected_records.jsonl create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/integration_tests/invalid_config.json create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_config.json create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_state.json create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/main.py create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/metadata.yaml create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/poetry.lock create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/pyproject.toml create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/__init__.py create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/run.py create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/countries.json create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/orders.json create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/source.py create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/spec.json create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/streams.py create mode 100644 airbyte-integrations/connectors/source-faker-hardcode/unit_tests/unit_test.py diff --git a/airbyte-integrations/connectors/source-faker-hardcode/README.md b/airbyte-integrations/connectors/source-faker-hardcode/README.md new file mode 100644 index 000000000000..082aeb47b12f --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/README.md @@ -0,0 +1,104 @@ +# Faker source connector + +This is the repository for the Faker source connector, written in Python. +For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/faker). + +## 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 + +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/faker) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_faker/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-faker spec +poetry run source-faker check --config secrets/config.json +poetry run source-faker discover --config secrets/config.json +poetry run source-faker read --config secrets/config.json --catalog sample_files/configured_catalog.json +``` + +### 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-faker build +``` + +An image will be available on your host with the tag `airbyte/source-faker:dev`. + +### Running as a docker container + +Then run any of the connector commands as follows: + +``` +docker run --rm airbyte/source-faker:dev spec +docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-faker:dev check --config /secrets/config.json +docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-faker:dev discover --config /secrets/config.json +docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-faker: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-faker 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-faker 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. +4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/faker.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. diff --git a/airbyte-integrations/connectors/source-faker-hardcode/acceptance-test-config.yml b/airbyte-integrations/connectors/source-faker-hardcode/acceptance-test-config.yml new file mode 100644 index 000000000000..bb7cacccf35c --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/acceptance-test-config.yml @@ -0,0 +1,46 @@ +connector_image: airbyte/source-faker-hardcode:dev +test_strictness_level: high +acceptance_tests: + spec: + tests: + - spec_path: source_faker/spec.json + connection: + tests: + - config_path: secrets/config.json + status: succeed + - config_path: integration_tests/invalid_config.json + status: failed + discovery: + tests: + - config_path: secrets/config.json + basic_read: + tests: + - config_path: secrets/config.json + expect_records: + path: integration_tests/expected_records.jsonl + full_refresh: + tests: + - config_path: secrets/config.json + configured_catalog_path: integration_tests/configured_catalog.json + ignored_fields: + users: + - name: updated_at + bypass_reason: "dynamic field" + - name: created_at + bypass_reason: "dynamic field" + products: + - name: updated_at + bypass_reason: "dynamic field" + - name: created_at + bypass_reason: "dynamic field" + purchases: + - name: updated_at + bypass_reason: "dynamic field" + - name: created_at + bypass_reason: "dynamic field" + 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 diff --git a/airbyte-integrations/connectors/source-faker-hardcode/icon.svg b/airbyte-integrations/connectors/source-faker-hardcode/icon.svg new file mode 100644 index 000000000000..0f27d4e0086b --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/__init__.py b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/__init__.py new file mode 100644 index 000000000000..46b7376756ec --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/__init__.py @@ -0,0 +1,3 @@ +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/abnormal_state.json b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/abnormal_state.json new file mode 100644 index 000000000000..48ec425863b9 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/abnormal_state.json @@ -0,0 +1,35 @@ +[ + { + "type": "STREAM", + "stream": { + "stream_state": { + "updated_at": 11 + }, + "stream_descriptor": { + "name": "users" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_state": { + "updated_at": 11 + }, + "stream_descriptor": { + "name": "purchases" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_state": { + "updated_at": 101 + }, + "stream_descriptor": { + "name": "products" + } + } + } +] diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/acceptance.py b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/acceptance.py new file mode 100644 index 000000000000..82823254d266 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/acceptance.py @@ -0,0 +1,14 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + + +import pytest + +pytest_plugins = ("connector_acceptance_test.plugin",) + + +@pytest.fixture(scope="session", autouse=True) +def connector_setup(): + """This fixture is a placeholder for external resources that acceptance test might require.""" + yield diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/configured_catalog.json b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/configured_catalog.json new file mode 100644 index 000000000000..fd431ce850b9 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/configured_catalog.json @@ -0,0 +1,26 @@ +{ + "streams": [ + { + "stream": { + "name": "orders", + "json_schema": {}, + "supported_sync_modes": ["incremental", "full_refresh"], + "source_defined_cursor": true, + "default_cursor_field": ["updated_at"] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "countries", + "json_schema": {}, + "supported_sync_modes": ["incremental", "full_refresh"], + "source_defined_cursor": true, + "default_cursor_field": ["updated_at"] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite" + } + ] +} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/expected_records.jsonl new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/invalid_config.json b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/invalid_config.json new file mode 100644 index 000000000000..9652e6606759 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/invalid_config.json @@ -0,0 +1,3 @@ +{ + "count": -1 +} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_config.json b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_config.json new file mode 100644 index 000000000000..b9edd86b582b --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_config.json @@ -0,0 +1,6 @@ +{ + "count": 10, + "seed": 0, + "parallelism": 1, + "always_updated": false +} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_state.json b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_state.json new file mode 100644 index 000000000000..11d94567aeb7 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_state.json @@ -0,0 +1,24 @@ +[ + { + "type": "STREAM", + "stream": { + "stream_state": { + "id": 0 + }, + "stream_descriptor": { + "name": "users" + } + } + }, + { + "type": "STREAM", + "stream": { + "stream_state": { + "user_id": 0 + }, + "stream_descriptor": { + "name": "purchases" + } + } + } +] diff --git a/airbyte-integrations/connectors/source-faker-hardcode/main.py b/airbyte-integrations/connectors/source-faker-hardcode/main.py new file mode 100644 index 000000000000..ab7445b536f2 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/main.py @@ -0,0 +1,9 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + + +from source_faker_hardcode.run import run + +if __name__ == "__main__": + run() diff --git a/airbyte-integrations/connectors/source-faker-hardcode/metadata.yaml b/airbyte-integrations/connectors/source-faker-hardcode/metadata.yaml new file mode 100644 index 000000000000..b45e8022c557 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/metadata.yaml @@ -0,0 +1,52 @@ +data: + ab_internal: + ql: 300 + sl: 100 + allowedHosts: + hosts: [] + connectorBuildOptions: + baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + connectorSubtype: api + connectorType: source + definitionId: 084124ab-22db-4019-b36d-630418541bf7 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-faker-hardcode + documentationUrl: https://docs.airbyte.com/integrations/sources/faker-hardcode + githubIssueLabel: source-faker + icon: faker.svg + license: MIT + name: Sample Data (Faker HC) + registries: + cloud: + enabled: true + oss: + enabled: true + releaseStage: beta + remoteRegistries: + pypi: + enabled: true + packageName: airbyte-source-faker-hardcode + resourceRequirements: + jobSpecific: + - jobType: sync + resourceRequirements: + cpu_limit: "4.0" + cpu_request: "1.0" + suggestedStreams: + streams: + - countries + - orders + supportLevel: community + tags: + - language:python + - cdk:python + connectorTestSuitesOptions: + - suite: unitTests + - suite: acceptanceTests + testSecrets: + - name: SECRET_SOURCE-FAKER-HARDCODE_CREDS + fileName: config.json + secretStore: + type: GSM + alias: airbyte-connector-testing-secret-store +metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-faker-hardcode/poetry.lock b/airbyte-integrations/connectors/source-faker-hardcode/poetry.lock new file mode 100644 index 000000000000..06ab354d130a --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/poetry.lock @@ -0,0 +1,1399 @@ +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. + +[[package]] +name = "airbyte-cdk" +version = "3.9.0" +description = "A framework for writing Airbyte Connectors." +optional = false +python-versions = "<4.0,>=3.9" +files = [ + {file = "airbyte_cdk-3.9.0-py3-none-any.whl", hash = "sha256:5f8b800f75b3bba1ae1950eee001e12633826e338e6427fa99c89d11c861d283"}, + {file = "airbyte_cdk-3.9.0.tar.gz", hash = "sha256:cc54a63ef76896a18133b4bcb2191013c92d1ce1b405fe5261e8479b79076d63"}, +] + +[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" +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", "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-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 = "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 = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[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.4" +description = "Bash style brace expander." +optional = false +python-versions = ">=3.8" +files = [ + {file = "bracex-2.4-py3-none-any.whl", hash = "sha256:efdc71eff95eaff5e0f8cfebe7d01adf2c8637c8c92edaf63ef348c241a82418"}, + {file = "bracex-2.4.tar.gz", hash = "sha256:a27eaf1df42cf561fed58b7a8f3fdf129d1ea16a81e1fadd1d17989bc6384beb"}, +] + +[[package]] +name = "cachetools" +version = "5.4.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"}, +] + +[[package]] +name = "cattrs" +version = "23.2.3" +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"}, +] + +[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)"] +orjson = ["orjson (>=3.9.2)"] +pyyaml = ["pyyaml (>=6.0)"] +tomlkit = ["tomlkit (>=0.11.8)"] +ujson = ["ujson (>=5.7.0)"] + +[[package]] +name = "certifi" +version = "2024.7.4" +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"}, +] + +[[package]] +name = "cffi" +version = "1.16.0" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, +] + +[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 = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[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.93" +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.93-py3-none-any.whl", hash = "sha256:811210b9d5f108f36431bd7b997eb9476a9ecf5a2abd7ddbb606c1cdcf0f43ce"}, + {file = "langsmith-0.1.93.tar.gz", hash = "sha256:285b6ad3a54f50fa8eb97b5f600acc57d0e37e139dd8cf2111a117d0435ba9b4"}, +] + +[package.dependencies] +orjson = ">=3.9.14,<4.0.0" +pydantic = [ + {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""}, + {version = ">=2.7.4,<3.0.0", 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.6" +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orjson-3.10.6-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5"}, + {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43"}, + {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2"}, + {file = "orjson-3.10.6-cp310-none-win32.whl", hash = "sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3"}, + {file = "orjson-3.10.6-cp310-none-win_amd64.whl", hash = "sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c"}, + {file = "orjson-3.10.6-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0"}, + {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212"}, + {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5"}, + {file = "orjson-3.10.6-cp311-none-win32.whl", hash = "sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd"}, + {file = "orjson-3.10.6-cp311-none-win_amd64.whl", hash = "sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b"}, + {file = "orjson-3.10.6-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a"}, + {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148"}, + {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34"}, + {file = "orjson-3.10.6-cp312-none-win32.whl", hash = "sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5"}, + {file = "orjson-3.10.6-cp312-none-win_amd64.whl", hash = "sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc"}, + {file = "orjson-3.10.6-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b"}, + {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e"}, + {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b"}, + {file = "orjson-3.10.6-cp38-none-win32.whl", hash = "sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6"}, + {file = "orjson-3.10.6-cp38-none-win_amd64.whl", hash = "sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7"}, + {file = "orjson-3.10.6-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb"}, + {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2"}, + {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a"}, + {file = "orjson-3.10.6-cp39-none-win32.whl", hash = "sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219"}, + {file = "orjson-3.10.6-cp39-none-win_amd64.whl", hash = "sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844"}, + {file = "orjson-3.10.6.tar.gz", hash = "sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7"}, +] + +[[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.2.2" +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"}, +] + +[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)"] + +[[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 = "2.8.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"}, +] + +[package.dependencies] +annotated-types = ">=0.4.0" +pydantic-core = "2.20.1" +typing-extensions = [ + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, + {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, +] + +[package.extras] +email = ["email-validator (>=2.0.0)"] + +[[package]] +name = "pydantic-core" +version = "2.20.1" +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"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pyjwt" +version = "2.8.0" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, +] + +[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 (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx (>=4.5.0,<5.0.0)", "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.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[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 = "setuptools" +version = "71.1.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-71.1.0-py3-none-any.whl", hash = "sha256:33874fdc59b3188304b2e7c80d9029097ea31627180896fb549c578ceb8a0855"}, + {file = "setuptools-71.1.0.tar.gz", hash = "sha256:032d42ee9fb536e33087fb66cac5f840eb9391ed05637b3f2a76a7c8fb477936"}, +] + +[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)"] +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"] +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"] + +[[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 = "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.2" +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"}, +] + +[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,<4.0" +content-hash = "4780ad83d2f5c88d0d60bb9b007daa92ddeea6f90db446632792660a41cdd26c" diff --git a/airbyte-integrations/connectors/source-faker-hardcode/pyproject.toml b/airbyte-integrations/connectors/source-faker-hardcode/pyproject.toml new file mode 100644 index 000000000000..c33e73ce6222 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/pyproject.toml @@ -0,0 +1,27 @@ +[build-system] +requires = [ "poetry-core>=1.0.0",] +build-backend = "poetry.core.masonry.api" + +[tool.poetry] +version = "0.0.1" +name = "source-faker-hardcode" +description = "Source implementation for fake but realistic looking data." +authors = [ "Airbyte ",] +license = "MIT" +readme = "README.md" +documentation = "https://docs.airbyte.com/integrations/sources/faker-hardcode" +homepage = "https://airbyte.com" +repository = "https://github.com/airbytehq/airbyte" +[[tool.poetry.packages]] +include = "source_faker_hardcode" + +[tool.poetry.dependencies] +python = "^3.9,<4.0" +airbyte-cdk = "^3.0" + +[tool.poetry.scripts] +source-faker = "source_faker_hardcode.run:run" + +[tool.poetry.group.dev.dependencies] +pytest-mock = "^3.6.1" +pytest = "^6.2" diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/__init__.py b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/__init__.py new file mode 100644 index 000000000000..82c3fb63fb97 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/__init__.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# + + +from .source import SourceFakerHardcode + +__all__ = ["SourceFakerHardcode"] diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/run.py b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/run.py new file mode 100644 index 000000000000..3ebd25be7fa2 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/run.py @@ -0,0 +1,18 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + + +import sys + +from airbyte_cdk.entrypoint import launch +from source_faker_hardcode import SourceFakerHardcode + + +def run(): + source = SourceFakerHardcode() + launch(source, sys.argv[1:]) + + +if __name__ == "__main__": + run() diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/countries.json b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/countries.json new file mode 100644 index 000000000000..dd79992f3023 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/countries.json @@ -0,0 +1,71 @@ +{ + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "code": { + "description": "ISO country code.", + "type": ["null", "string"] + }, + "id": { + "description": "Unique identifier for the country.", + "type": ["null", "integer"] + }, + "name": { + "description": "Name of the country.", + "type": ["null", "string"] + }, + "provinces": { + "description": "Array of provinces or states within the country.", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "code": { + "description": "Province or state code.", + "type": ["null", "string"] + }, + "country_id": { + "description": "Unique identifier of the country the province belongs to.", + "type": ["null", "integer"] + }, + "id": { + "description": "Unique identifier for the province.", + "type": ["null", "integer"] + }, + "name": { + "description": "Name of the province.", + "type": ["null", "string"] + }, + "tax": { + "description": "Tax information for the province.", + "type": ["null", "number"] + }, + "tax_name": { + "description": "Name of the tax applicable for the province.", + "type": ["null", "string"] + }, + "tax_type": { + "description": "Type of tax (e.g., sales tax, VAT) applicable in the province.", + "type": ["null", "string"] + }, + "tax_percentage": { + "description": "Percentage value of tax applicable in the province.", + "type": ["null", "number"] + } + } + } + }, + "tax": { + "description": "Overall tax information for the country.", + "type": ["null", "number"] + }, + "tax_name": { + "description": "Name of the tax applicable for the country.", + "type": ["null", "string"] + }, + "shop_url": { + "description": "URL for the shop related to this country.", + "type": ["null", "string"] + } + } +} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/orders.json b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/orders.json new file mode 100644 index 000000000000..2d8d23b56094 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/orders.json @@ -0,0 +1,2991 @@ +{ + "type": "object", + "additionalProperties": true, + "properties": { + "id": { + "description": "The unique identifier of the order", + "type": ["null", "integer"] + }, + "admin_graphql_api_id": { + "description": "The unique identifier of the order in the GraphQL Admin API", + "type": ["null", "string"] + }, + "app_id": { + "description": "The ID of the app that created the order", + "type": ["null", "integer"] + }, + "browser_ip": { + "description": "The IP address of the customer's browser", + "type": ["null", "string"] + }, + "buyer_accepts_marketing": { + "description": "Indicates if the customer has agreed to receive marketing emails", + "type": ["null", "boolean"] + }, + "cancel_reason": { + "description": "The reason provided if the order was canceled", + "type": ["null", "string"] + }, + "cancelled_at": { + "description": "The date and time when the order was canceled", + "type": ["null", "string"], + "format": "date-time" + }, + "cart_token": { + "description": "Token representing the cart associated with the order", + "type": ["null", "string"] + }, + "checkout_id": { + "description": "The ID of the checkout that processed the order", + "type": ["null", "integer"] + }, + "checkout_token": { + "description": "Token representing the checkout associated with the order", + "type": ["null", "string"] + }, + "client_details": { + "type": ["null", "object"], + "properties": { + "accept_language": { + "type": ["null", "string"] + }, + "browser_height": { + "type": ["null", "integer"] + }, + "browser_ip": { + "type": ["null", "string"] + }, + "browser_width": { + "type": ["null", "integer"] + }, + "session_hash": { + "type": ["null", "string"] + }, + "user_agent": { + "type": ["null", "string"] + } + } + }, + "closed_at": { + "description": "The date and time when the order was closed", + "type": ["null", "string"], + "format": "date-time" + }, + "company": { + "description": "The name of the company associated with the order", + "type": ["null", "string"] + }, + "confirmed": { + "description": "Indicates if the order has been confirmed", + "type": ["null", "boolean"] + }, + "confirmation_number": { + "description": "The unique number for confirming the order", + "type": ["null", "string"] + }, + "contact_email": { + "description": "The email address for order-related contacts", + "type": ["null", "string"] + }, + "created_at": { + "description": "The date and time when the order was created", + "type": ["null", "string"], + "format": "date-time" + }, + "currency": { + "description": "The currency used for the order", + "type": ["null", "string"] + }, + "current_subtotal_price": { + "description": "The current subtotal price of the order", + "type": ["null", "number"] + }, + "current_subtotal_price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "current_total_discounts": { + "description": "The current total discounts applied to the order", + "type": ["null", "number"] + }, + "current_total_discounts_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "current_total_duties_set": { + "description": "The current total duties set for the order", + "type": ["null", "string"] + }, + "current_total_price": { + "description": "The current total price of the order", + "type": ["null", "number"] + }, + "current_total_price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "current_total_tax": { + "description": "The current total tax amount for the order", + "type": ["null", "number"] + }, + "current_total_tax_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "current_total_additional_fees_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "customer_locale": { + "description": "The locale of the customer", + "type": ["null", "string"] + }, + "device_id": { + "description": "The ID of the device used to place the order", + "type": ["null", "string"] + }, + "discount_applications": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "type": { + "type": ["null", "string"] + }, + "title": { + "type": ["null", "string"] + }, + "description": { + "type": ["null", "string"] + }, + "value": { + "type": ["null", "string"] + }, + "value_type": { + "type": ["null", "string"] + }, + "allocation_method": { + "type": ["null", "string"] + }, + "target_selection": { + "type": ["null", "string"] + }, + "target_type": { + "type": ["null", "string"] + } + } + } + }, + "discount_codes": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "code": { + "type": ["null", "string"] + }, + "amount": { + "type": ["null", "string"] + }, + "type": { + "type": ["null", "string"] + } + } + } + }, + "email": { + "description": "The email address of the customer", + "type": ["null", "string"] + }, + "estimated_taxes": { + "description": "Estimated taxes for the order", + "type": ["null", "boolean"] + }, + "financial_status": { + "description": "The financial status of the order", + "type": ["null", "string"] + }, + "fulfillment_status": { + "description": "The fulfillment status of the order", + "type": ["null", "string"] + }, + "landing_site": { + "description": "The landing site of the order", + "type": ["null", "string"] + }, + "landing_site_ref": { + "description": "Reference for the landing site of the order", + "type": ["null", "string"] + }, + "location_id": { + "description": "The location ID associated with the order", + "type": ["null", "integer"] + }, + "merchant_of_record_app_id": { + "description": "The app ID of the merchant of record", + "type": ["null", "string"] + }, + "name": { + "description": "The name of the order", + "type": ["null", "string"] + }, + "note": { + "description": "Additional notes related to the order", + "type": ["null", "string"] + }, + "note_attributes": { + "description": "Custom note attributes associated with the order", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "name": { + "description": "Name of the note attribute", + "type": ["null", "string"] + }, + "value": { + "description": "Value of the note attribute", + "type": ["null", "string"] + } + } + } + }, + "number": { + "description": "The order number", + "type": ["null", "integer"] + }, + "order_number": { + "description": "The unique number assigned to the order", + "type": ["null", "integer"] + }, + "order_status_url": { + "description": "URL to check the status of the order", + "type": ["null", "string"] + }, + "original_total_duties_set": { + "description": "The original total duties set for the order", + "type": ["null", "string"] + }, + "original_total_additional_fees_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "payment_gateway_names": { + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + }, + "payment_terms": { + "description": "The terms of payment for the order", + "type": ["null", "string"] + }, + "phone": { + "description": "The phone number of the customer", + "type": ["null", "string"] + }, + "presentment_currency": { + "description": "The currency used for presenting the order", + "type": ["null", "string"] + }, + "processed_at": { + "description": "The date and time when the order was processed", + "type": ["null", "string"] + }, + "po_number": { + "description": "The purchase order number", + "type": ["null", "string"] + }, + "reference": { + "description": "Reference associated with the order", + "type": ["null", "string"] + }, + "referring_site": { + "description": "The referring site of the order", + "type": ["null", "string"] + }, + "source_identifier": { + "description": "Identifier for the order's source", + "type": ["null", "string"] + }, + "source_name": { + "description": "Name of the order's source", + "type": ["null", "string"] + }, + "source_url": { + "description": "URL of the order's source", + "type": ["null", "string"] + }, + "shop_url": { + "description": "URL of the shop associated with the order", + "type": ["null", "string"] + }, + "subtotal_price": { + "description": "The subtotal price of the order", + "type": ["null", "number"] + }, + "subtotal_price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "tags": { + "description": "Tags associated with the order", + "type": ["null", "string"] + }, + "tax_exempt": { + "description": "Indicates if the order is tax exempt", + "type": ["null", "boolean"] + }, + "tax_lines": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "channel_liable": { + "type": ["null", "boolean"] + }, + "price": { + "type": ["null", "number"] + }, + "rate": { + "type": ["null", "number"] + }, + "title": { + "type": ["null", "string"] + }, + "price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + } + } + } + }, + "taxes_included": { + "description": "Indicates if taxes are included in the prices", + "type": ["null", "boolean"] + }, + "test": { + "description": "Indicates if the order is a test order", + "type": ["null", "boolean"] + }, + "token": { + "description": "Token associated with the order", + "type": ["null", "string"] + }, + "total_discounts": { + "description": "The total amount of discounts applied to the order", + "type": ["null", "number"] + }, + "total_discounts_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "total_line_items_price": { + "description": "The total price of all line items in the order", + "type": ["null", "number"] + }, + "total_line_items_price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "total_outstanding": { + "description": "The total outstanding amount for the order", + "type": ["null", "number"] + }, + "total_price": { + "description": "The total price of the order", + "type": ["null", "number"] + }, + "total_price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "total_price_usd": { + "description": "The total price of the order in USD", + "type": ["null", "number"] + }, + "total_shipping_price_set": { + "description": "The details of the total shipping price for the order.", + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "description": "The total shipping amount in shop currency", + "type": ["null", "number"] + }, + "currency_code": { + "description": "The currency code for the total shipping price in shop currency", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "description": "The total shipping amount in presentment currency", + "type": ["null", "number"] + }, + "currency_code": { + "description": "The currency code for the total shipping price", + "type": ["null", "string"] + } + } + } + } + }, + "total_tax": { + "description": "The total tax amount for the order", + "type": ["null", "number"] + }, + "total_tax_set": { + "description": "The details of the total tax applied to the order.", + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "description": "The total tax amount in shop currency", + "type": ["null", "number"] + }, + "currency_code": { + "description": "The currency code for the total tax amount in shop currency", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "description": "The total tax amount in presentment currency", + "type": ["null", "number"] + }, + "currency_code": { + "description": "The currency code for the total tax amount", + "type": ["null", "string"] + } + } + } + } + }, + "total_tip_received": { + "description": "The total tip amount received, if any", + "type": ["null", "number"] + }, + "total_weight": { + "description": "The total weight of all items in the order", + "type": ["null", "integer"] + }, + "updated_at": { + "description": "The date and time when the order was last updated", + "type": ["null", "string"], + "format": "date-time" + }, + "user_id": { + "description": "The unique identifier of the user associated with the order", + "type": ["null", "number"] + }, + "billing_address": { + "type": ["null", "object"], + "properties": { + "first_name": { + "type": ["null", "string"] + }, + "address1": { + "type": ["null", "string"] + }, + "phone": { + "type": ["null", "string"] + }, + "city": { + "type": ["null", "string"] + }, + "zip": { + "type": ["null", "string"] + }, + "province": { + "type": ["null", "string"] + }, + "country": { + "type": ["null", "string"] + }, + "last_name": { + "type": ["null", "string"] + }, + "address2": { + "type": ["null", "string"] + }, + "company": { + "type": ["null", "string"] + }, + "latitude": { + "type": ["null", "number"] + }, + "longitude": { + "type": ["null", "number"] + }, + "name": { + "type": ["null", "string"] + }, + "country_code": { + "type": ["null", "string"] + }, + "province_code": { + "type": ["null", "string"] + } + } + }, + "customer": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "email": { + "type": ["null", "string"] + }, + "accepts_marketing": { + "type": ["null", "boolean"] + }, + "created_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "updated_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "first_name": { + "type": ["null", "string"] + }, + "last_name": { + "type": ["null", "string"] + }, + "orders_count": { + "type": ["null", "integer"] + }, + "state": { + "type": ["null", "string"] + }, + "total_spent": { + "type": ["null", "number"] + }, + "last_order_id": { + "type": ["null", "integer"] + }, + "note": { + "type": ["null", "string"] + }, + "verified_email": { + "type": ["null", "boolean"] + }, + "multipass_identifier": { + "type": ["null", "string"] + }, + "tax_exempt": { + "type": ["null", "boolean"] + }, + "phone": { + "type": ["null", "string"] + }, + "tags": { + "type": ["null", "string"] + }, + "last_order_name": { + "type": ["null", "string"] + }, + "currency": { + "type": ["null", "string"] + }, + "accepts_marketing_updated_at": { + "type": ["null", "string"] + }, + "marketing_opt_in_level": { + "type": ["null", "string"] + }, + "admin_graphql_api_id": { + "type": ["null", "string"] + }, + "default_address": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "customer_id": { + "type": ["null", "integer"] + }, + "first_name": { + "type": ["null", "string"] + }, + "last_name": { + "type": ["null", "string"] + }, + "company": { + "type": ["null", "string"] + }, + "address1": { + "type": ["null", "string"] + }, + "address2": { + "type": ["null", "string"] + }, + "city": { + "type": ["null", "string"] + }, + "province": { + "type": ["null", "string"] + }, + "country": { + "type": ["null", "string"] + }, + "zip": { + "type": ["null", "string"] + }, + "phone": { + "type": ["null", "string"] + }, + "name": { + "type": ["null", "string"] + }, + "province_code": { + "type": ["null", "string"] + }, + "country_code": { + "type": ["null", "string"] + }, + "country_name": { + "type": ["null", "string"] + }, + "default": { + "type": ["null", "boolean"] + } + } + }, + "email_marketing_consent": { + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "state": { + "type": ["null", "string"] + }, + "opt_in_level": { + "type": ["null", "string"] + }, + "consent_updated_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "consent_collected_from": { + "type": ["null", "string"] + } + } + }, + "sms_marketing_consent": { + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "state": { + "type": ["null", "string"] + }, + "opt_in_level": { + "type": ["null", "string"] + }, + "consent_updated_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "consent_collected_from": { + "type": ["null", "string"] + } + } + }, + "tax_exemptions": { + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + } + } + }, + "discount_allocations": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "string"] + }, + "amount": { + "type": ["null", "string"] + }, + "description": { + "type": ["null", "string"] + }, + "created_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "discount_application_index": { + "type": ["null", "number"] + }, + "amount_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "application_type": { + "type": ["null", "string"] + } + } + } + }, + "fulfillments": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "admin_graphql_api_id": { + "type": ["null", "string"] + }, + "created_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "location_id": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + }, + "order_id": { + "type": ["null", "integer"] + }, + "receipt": { + "type": ["null", "object"] + }, + "service": { + "type": ["null", "string"] + }, + "shipment_status": { + "type": ["null", "string"] + }, + "status": { + "type": ["null", "string"] + }, + "tracking_company": { + "type": ["null", "string"] + }, + "tracking_number": { + "type": ["null", "string"] + }, + "tracking_numbers": { + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + }, + "tracking_url": { + "type": ["null", "string"] + }, + "tracking_urls": { + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + }, + "updated_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "line_items": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "admin_graphql_api_id": { + "type": ["null", "string"] + }, + "destination_location": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "country_code": { + "type": ["null", "string"] + }, + "province_code": { + "type": ["null", "string"] + }, + "name": { + "type": ["null", "string"] + }, + "address1": { + "type": ["null", "string"] + }, + "address2": { + "type": ["null", "string"] + }, + "city": { + "type": ["null", "string"] + }, + "zip": { + "type": ["null", "string"] + } + } + }, + "fulfillable_quantity": { + "type": ["null", "integer"] + }, + "fulfillment_service": { + "type": ["null", "string"] + }, + "fulfillment_status": { + "type": ["null", "string"] + }, + "gift_card": { + "type": ["null", "boolean"] + }, + "grams": { + "type": ["null", "integer"] + }, + "name": { + "type": ["null", "string"] + }, + "origin_location": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "country_code": { + "type": ["null", "string"] + }, + "province_code": { + "type": ["null", "string"] + }, + "name": { + "type": ["null", "string"] + }, + "address1": { + "type": ["null", "string"] + }, + "address2": { + "type": ["null", "string"] + }, + "city": { + "type": ["null", "string"] + }, + "zip": { + "type": ["null", "string"] + } + } + }, + "price": { + "type": ["null", "number"] + }, + "price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "pre_tax_price": { + "type": ["null", "number"] + }, + "product_exists": { + "type": ["null", "boolean"] + }, + "product_id": { + "type": ["null", "integer"] + }, + "properties": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "name": { + "type": ["null", "string"] + }, + "value": { + "type": ["null", "string"] + } + } + } + }, + "quantity": { + "type": ["null", "integer"] + }, + "requires_shipping": { + "type": ["null", "boolean"] + }, + "sku": { + "type": ["null", "string"] + }, + "taxable": { + "type": ["null", "boolean"] + }, + "title": { + "type": ["null", "string"] + }, + "total_discount": { + "type": ["null", "number"] + }, + "total_discount_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "variant_id": { + "type": ["null", "integer"] + }, + "variant_inventory_management": { + "type": ["null", "string"] + }, + "variant_title": { + "type": ["null", "string"] + }, + "vendor": { + "type": ["null", "string"] + }, + "tax_lines": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "channel_liable": { + "type": ["null", "boolean"] + }, + "price": { + "type": ["null", "number"] + }, + "price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "rate": { + "type": ["null", "number"] + }, + "title": { + "type": ["null", "string"] + } + } + } + }, + "duties": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "string"] + }, + "harmonized_system_code": { + "type": ["null", "string"] + }, + "country_code_of_origin": { + "type": ["null", "string"] + }, + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "tax_lines": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "title": { + "type": ["null", "string"] + }, + "price": { + "type": ["null", "string"] + }, + "rate": { + "type": ["null", "number"] + }, + "price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "channel_liable": { + "type": ["null", "boolean"] + } + } + } + }, + "admin_graphql_api_id": { + "type": ["null", "string"] + } + } + } + }, + "discount_allocations": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "string"] + }, + "amount": { + "type": ["null", "string"] + }, + "description": { + "type": ["null", "string"] + }, + "created_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "discount_application_index": { + "type": ["null", "number"] + }, + "amount_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "application_type": { + "type": ["null", "string"] + } + } + } + } + } + } + }, + "origin_address": { + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "address1": { + "type": ["null", "string"] + }, + "address2": { + "type": ["null", "string"] + }, + "city": { + "type": ["null", "string"] + }, + "country_code": { + "type": ["null", "string"] + }, + "province_code": { + "type": ["null", "string"] + }, + "zip": { + "type": ["null", "string"] + } + } + } + } + } + }, + "line_items": { + "description": "Details of the products within an order", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique identifier for the item", + "type": ["null", "integer"] + }, + "admin_graphql_api_id": { + "description": "Unique identifier for the item", + "type": ["null", "string"] + }, + "destination_location": { + "description": "Destination address of the item", + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique identifier for the location", + "type": ["null", "integer"] + }, + "country_code": { + "description": "Country code of the address", + "type": ["null", "string"] + }, + "province_code": { + "description": "Province code of the address", + "type": ["null", "string"] + }, + "name": { + "description": "Name of the location", + "type": ["null", "string"] + }, + "address1": { + "description": "First line of address", + "type": ["null", "string"] + }, + "address2": { + "description": "Second line of address", + "type": ["null", "string"] + }, + "city": { + "description": "City of the address", + "type": ["null", "string"] + }, + "zip": { + "description": "Zip code of the address", + "type": ["null", "string"] + } + } + }, + "fulfillable_quantity": { + "description": "Quantity that is fulfillable", + "type": ["null", "integer"] + }, + "fulfillment_service": { + "description": "Service used for fulfillment", + "type": ["null", "string"] + }, + "fulfillment_status": { + "description": "Status of fulfillment", + "type": ["null", "string"] + }, + "gift_card": { + "description": "Whether the item is a gift card", + "type": ["null", "boolean"] + }, + "grams": { + "description": "Weight in grams", + "type": ["null", "integer"] + }, + "name": { + "description": "Name of the item", + "type": ["null", "string"] + }, + "origin_location": { + "description": "Origin address of the item", + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique identifier for the location", + "type": ["null", "integer"] + }, + "country_code": { + "description": "Country code of the address", + "type": ["null", "string"] + }, + "province_code": { + "description": "Province code of the address", + "type": ["null", "string"] + }, + "name": { + "description": "Name of the location", + "type": ["null", "string"] + }, + "address1": { + "description": "First line of address", + "type": ["null", "string"] + }, + "address2": { + "description": "Second line of address", + "type": ["null", "string"] + }, + "city": { + "description": "City of the address", + "type": ["null", "string"] + }, + "zip": { + "description": "Zip code of the address", + "type": ["null", "string"] + } + } + }, + "price": { + "description": "Price of the item", + "type": ["null", "number"] + }, + "price_set": { + "description": "Details of the item price", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Item price in shop currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Item price in presentment currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "pre_tax_price": { + "description": "Price before tax", + "type": ["null", "number"] + }, + "product_exists": { + "description": "Whether the product exists", + "type": ["null", "boolean"] + }, + "product_id": { + "description": "Identifier for the product", + "type": ["null", "integer"] + }, + "properties": { + "description": "Any additional properties associated with the item", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "name": { + "description": "Name of the property", + "type": ["null", "string"] + }, + "value": { + "description": "Value of the property", + "type": ["null", "string"] + } + } + } + }, + "quantity": { + "description": "Quantity of the item", + "type": ["null", "integer"] + }, + "requires_shipping": { + "description": "Whether shipping is required", + "type": ["null", "boolean"] + }, + "sku": { + "description": "Stock keeping unit of the item", + "type": ["null", "string"] + }, + "taxable": { + "description": "Whether the item is taxable", + "type": ["null", "boolean"] + }, + "title": { + "description": "Title of the item", + "type": ["null", "string"] + }, + "total_discount": { + "description": "Total discount applied to the item", + "type": ["null", "number"] + }, + "total_discount_set": { + "description": "Details of the total discount applied to the item", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Total discount amount in shop currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Total discount amount in presentment currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "variant_id": { + "description": "Identifier for the variant of the item", + "type": ["null", "integer"] + }, + "variant_inventory_management": { + "description": "Inventory management type for the variant", + "type": ["null", "string"] + }, + "variant_title": { + "description": "Title of the variant", + "type": ["null", "string"] + }, + "vendor": { + "description": "Vendor of the item", + "type": ["null", "string"] + }, + "tax_lines": { + "description": "Details of tax lines associated with the item", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "channel_liable": { + "description": "Whether the channel is liable for the tax", + "type": ["null", "boolean"] + }, + "price": { + "description": "Price of the tax", + "type": ["null", "number"] + }, + "price_set": { + "description": "Details of the tax price", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Tax price in shop currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Tax price in presentment currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "rate": { + "description": "Tax rate", + "type": ["null", "number"] + }, + "title": { + "description": "Title of the tax", + "type": ["null", "string"] + } + } + } + }, + "duties": { + "description": "Details of any duties associated with the item", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique identifier for the duty", + "type": ["null", "string"] + }, + "harmonized_system_code": { + "description": "Harmonized system code for the duty", + "type": ["null", "string"] + }, + "country_code_of_origin": { + "description": "Country code of origin for the duty", + "type": ["null", "string"] + }, + "shop_money": { + "description": "Duty amount in shop currency", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Duty amount", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code of the duty amount", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Duty amount in presentment currency", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Duty amount", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code of the duty amount", + "type": ["null", "string"] + } + } + }, + "tax_lines": { + "description": "Details of tax lines associated with the duty", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "title": { + "description": "Title of the tax", + "type": ["null", "string"] + }, + "price": { + "description": "Price of the tax", + "type": ["null", "string"] + }, + "rate": { + "description": "Tax rate", + "type": ["null", "number"] + }, + "price_set": { + "description": "Details of the tax price", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Tax price in shop currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Tax price in presentment currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "channel_liable": { + "description": "Whether the channel is liable for the tax", + "type": ["null", "boolean"] + } + } + } + }, + "admin_graphql_api_id": { + "description": "Unique identifier for the duty", + "type": ["null", "string"] + } + } + } + }, + "discount_allocations": { + "description": "Details of any discounts applied to the item", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique identifier for the discount", + "type": ["null", "string"] + }, + "amount": { + "description": "Amount of the discount", + "type": ["null", "string"] + }, + "description": { + "description": "Description of the discount", + "type": ["null", "string"] + }, + "created_at": { + "description": "Timestamp of when the discount was created", + "type": ["null", "string"], + "format": "date-time" + }, + "discount_application_index": { + "description": "Index of the discount application", + "type": ["null", "number"] + }, + "amount_set": { + "description": "Details of the discount amount", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Discount amount in shop currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Discount amount in presentment currency", + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "application_type": { + "description": "Type of application of the discount", + "type": ["null", "string"] + } + } + } + } + } + } + }, + "refunds": { + "description": "Information about the refunds associated with the order", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique ID of the refund", + "type": ["null", "integer"] + }, + "admin_graphql_api_id": { + "description": "Unique ID of the refund in the GraphQL Admin API", + "type": ["null", "string"] + }, + "created_at": { + "description": "Timestamp for when the refund was created", + "type": ["null", "string"], + "format": "date-time" + }, + "note": { + "description": "Additional note associated with the refund", + "type": ["null", "string"] + }, + "order_id": { + "description": "ID of the order for which the refund is created", + "type": ["null", "integer"] + }, + "processed_at": { + "description": "Timestamp for when the refund was processed", + "type": ["null", "string"], + "format": "date-time" + }, + "restock": { + "description": "Indicates if restocking is required", + "type": ["null", "boolean"] + }, + "user_id": { + "description": "ID of the user associated with the refund", + "type": ["null", "integer"] + }, + "order_adjustments": { + "description": "Adjustments made to the order related to the refund", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount of the adjustment", + "type": ["null", "string"] + }, + "amount_set": { + "description": "Set of amounts for the adjustment", + "type": ["null", "object"], + "properties": { + "presentment_money": { + "description": "Presentment amount of adjustment", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + } + } + }, + "shop_money": { + "description": "Shop amount of adjustment", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in shop currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + } + } + } + } + }, + "id": { + "description": "Unique ID of the adjustment", + "type": ["null", "integer"] + }, + "kind": { + "description": "Type of adjustment", + "type": ["null", "string"] + }, + "order_id": { + "description": "ID of the order associated with the adjustment", + "type": ["null", "integer"] + }, + "reason": { + "description": "Reason for the adjustment", + "type": ["null", "string"] + }, + "refund_id": { + "description": "ID of the refund associated with the adjustment", + "type": ["null", "integer"] + }, + "tax_amount": { + "description": "Tax amount of the adjustment", + "type": ["null", "string"] + }, + "tax_amount_set": { + "description": "Set of tax amounts for the adjustment", + "type": ["null", "object"], + "properties": { + "presentment_money": { + "description": "Presentment tax amount of the adjustment", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + } + } + }, + "shop_money": { + "description": "Shop tax amount of the adjustment", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in shop currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + } + } + } + } + } + } + } + }, + "transactions": { + "description": "Information about transactions related to the refund", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique ID of the transaction", + "type": ["null", "integer"] + }, + "admin_graphql_api_id": { + "description": "Unique ID of the transaction in the GraphQL Admin API", + "type": ["null", "string"] + }, + "amount": { + "description": "Amount of the transaction", + "type": ["null", "string"] + }, + "authorization": { + "description": "Authorization code of the transaction", + "type": ["null", "string"] + }, + "created_at": { + "description": "Timestamp for when the transaction was created", + "type": ["null", "string"] + }, + "currency": { + "description": "Currency of the transaction", + "type": ["null", "string"] + }, + "device_id": { + "description": "ID of the device used for the transaction", + "type": ["null", "integer"] + }, + "error_code": { + "description": "Error code of the transaction", + "type": ["null", "string"] + }, + "gateway": { + "description": "Payment gateway used for the transaction", + "type": ["null", "string"] + }, + "kind": { + "description": "Type of transaction", + "type": ["null", "string"] + }, + "location_id": { + "description": "ID of the location", + "type": ["null", "integer"] + }, + "message": { + "description": "Message related to the transaction", + "type": ["null", "string"] + }, + "order_id": { + "description": "ID of the order associated with the transaction", + "type": ["null", "integer"] + }, + "parent_id": { + "description": "ID of the parent transaction", + "type": ["null", "integer"] + }, + "processed_at": { + "description": "Timestamp for when the transaction was processed", + "type": ["null", "string"] + }, + "receipt": { + "description": "Receipt information for the transaction", + "type": ["null", "object"], + "properties": { + "paid_amount": { + "description": "Amount paid", + "type": ["null", "string"] + } + } + }, + "source_name": { + "description": "Name of the transaction source", + "type": ["null", "string"] + }, + "status": { + "description": "Status of the transaction", + "type": ["null", "string"] + }, + "test": { + "description": "Indicates if the transaction is a test", + "type": ["null", "boolean"] + }, + "user_id": { + "description": "ID of the user associated with the transaction", + "type": ["null", "integer"] + }, + "payment_details": { + "description": "Details about the payment", + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "avs_result_code": { + "description": "AVS (Address Verification System) result code", + "type": ["null", "string"] + }, + "buyer_action_info": { + "description": "Additional info on buyer action", + "type": ["null", "string"] + }, + "credit_card_bin": { + "description": "BIN (Bank Identification Number) of the credit card", + "type": ["null", "string"] + }, + "credit_card_company": { + "description": "Company of the credit card", + "type": ["null", "string"] + }, + "credit_card_expiration_month": { + "description": "Expiration month of the credit card", + "type": ["null", "integer"] + }, + "credit_card_expiration_year": { + "description": "Expiration year of the credit card", + "type": ["null", "integer"] + }, + "credit_card_name": { + "description": "Name on the credit card", + "type": ["null", "string"] + }, + "credit_card_number": { + "description": "Number of the credit card", + "type": ["null", "string"] + }, + "credit_card_wallet": { + "description": "Wallet used for the credit card", + "type": ["null", "string"] + }, + "cvv_result_code": { + "description": "CVV (Card Verification Value) result code", + "type": ["null", "string"] + } + } + }, + "payment_id": { + "description": "ID of the payment", + "type": ["null", "string"] + } + } + } + }, + "refund_line_items": { + "description": "Information about the line items included in the refund", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique ID of the refund line item", + "type": ["null", "integer"] + }, + "line_item_id": { + "description": "ID of the line item included in the refund", + "type": ["null", "integer"] + }, + "location_id": { + "description": "ID of the location", + "type": ["null", "integer"] + }, + "quantity": { + "description": "Quantity of the line item included in the refund", + "type": ["null", "integer"] + }, + "restock_type": { + "description": "Type of restocking", + "type": ["null", "string"] + }, + "subtotal": { + "description": "Subtotal of the line item included in the refund", + "type": ["null", "number"] + }, + "subtotal_set": { + "description": "Set of subtotals for the line item included in the refund", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Shop subtotal of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in shop currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Presentment subtotal of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + } + } + } + } + }, + "total_tax": { + "description": "Total tax for the line item included in the refund", + "type": ["null", "number"] + }, + "total_tax_set": { + "description": "Set of total taxes for the line item included in the refund", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Shop total tax of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in shop currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Presentment total tax of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + } + } + } + } + }, + "line_item": { + "description": "Information about the line item in the refund", + "type": ["null", "object"], + "properties": { + "id": { + "description": "Unique ID of the line item", + "type": ["null", "integer"] + }, + "admin_graphql_api_id": { + "description": "Unique ID of the line item in the GraphQL Admin API", + "type": ["null", "string"] + }, + "fulfillable_quantity": { + "description": "Quantity fulfillable for the line item", + "type": ["null", "integer"] + }, + "fulfillment_service": { + "description": "Service responsible for fulfillment", + "type": ["null", "string"] + }, + "fulfillment_status": { + "description": "Status of fulfillment", + "type": ["null", "string"] + }, + "gift_card": { + "description": "Indicates if line item is a gift card", + "type": ["null", "boolean"] + }, + "grams": { + "description": "Weight of the line item in grams", + "type": ["null", "number"] + }, + "name": { + "description": "Name of the line item", + "type": ["null", "string"] + }, + "price": { + "description": "Price of the line item", + "type": ["null", "string"] + }, + "price_set": { + "description": "Set of prices for the line item", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Shop price of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in shop currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Presentment price of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + } + } + } + } + }, + "product_exists": { + "description": "Indicates if the product for the line item exists", + "type": ["null", "boolean"] + }, + "product_id": { + "description": "ID of the associated product", + "type": ["null", "integer"] + }, + "properties": { + "description": "Additional properties of the line item", + "type": ["null", "array"], + "items": { + "type": ["null", "string"] + } + }, + "quantity": { + "description": "Quantity of the line item", + "type": ["null", "integer"] + }, + "requires_shipping": { + "description": "Indicates if shipping is required for the line item", + "type": ["null", "boolean"] + }, + "sku": { + "description": "Stock keeping unit of the line item", + "type": ["null", "string"] + }, + "taxable": { + "description": "Indicates if the line item is taxable", + "type": ["null", "boolean"] + }, + "title": { + "description": "Title of the line item", + "type": ["null", "string"] + }, + "total_discount": { + "description": "Total discount applied to the line item", + "type": ["null", "string"] + }, + "total_discount_set": { + "description": "Set of total discounts for the line item", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Shop total discount of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in shop currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Presentment total discount of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + } + } + } + } + }, + "variant_id": { + "description": "ID of the variant associated with the line item", + "type": ["null", "integer"] + }, + "variant_inventory_management": { + "description": "Type of inventory management for the variant", + "type": ["null", "string"] + }, + "variant_title": { + "description": "Title of the variant associated with the line item", + "type": ["null", "string"] + }, + "vendor": { + "description": "Vendor of the line item", + "type": ["null", "string"] + }, + "tax_lines": { + "description": "Information about tax applied to the line item", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "channel_liable": { + "description": "Indicates if the channel is liable for the tax", + "type": ["null", "boolean"] + }, + "price": { + "description": "Tax price applied to the line item", + "type": ["null", "string"] + }, + "price_set": { + "description": "Set of tax prices for the line item", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Shop tax price of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in shop currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Presentment tax price of the line item", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + } + } + } + } + }, + "rate": { + "description": "Tax rate applied to the line item", + "type": ["null", "number"] + }, + "title": { + "description": "Title of the tax applied", + "type": ["null", "string"] + } + } + } + }, + "discount_allocations": { + "description": "Allocations of discounts for the line item", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount of the discount", + "type": ["null", "string"] + }, + "amount_set": { + "description": "Set of amounts for the discount allocation", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Shop amount of the discount allocation", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in shop currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "description": "Presentment amount of the discount allocation", + "type": ["null", "object"], + "properties": { + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "string"] + }, + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + } + } + } + } + }, + "discount_application_index": { + "description": "Index of the discount application", + "type": ["null", "number"] + } + } + } + }, + "duties": { + "description": "Information about duties of the line item", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "duty_id": { + "description": "ID of the duty", + "type": ["null", "integer"] + }, + "amount_set": { + "description": "Set of amounts for the duties of the line item", + "properties": { + "shop_money": { + "description": "Shop amount of duty for the line item", + "properties": { + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + }, + "amount": { + "description": "Amount in shop currency", + "type": ["null", "number"] + } + }, + "type": ["null", "object"] + }, + "presentment_money": { + "description": "Presentment amount of duty for the line item", + "properties": { + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + }, + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "number"] + } + }, + "type": ["null", "object"] + } + }, + "type": ["null", "object"] + } + } + } + } + } + } + } + } + }, + "duties": { + "description": "Information about duties for the refund", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "duty_id": { + "description": "ID of the duty", + "type": ["null", "integer"] + }, + "amount_set": { + "description": "Set of amounts for duties", + "properties": { + "shop_money": { + "description": "Shop amount of duty", + "properties": { + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + }, + "amount": { + "description": "Amount in shop currency", + "type": ["null", "number"] + } + }, + "type": ["null", "object"] + }, + "presentment_money": { + "description": "Presentment amount of duty", + "properties": { + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + }, + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "number"] + } + }, + "type": ["null", "object"] + } + }, + "type": ["null", "object"] + } + } + } + }, + "total_duties_set": { + "description": "Set of total duties for the order", + "type": ["null", "object"], + "properties": { + "shop_money": { + "description": "Shop total duties", + "type": ["null", "object"], + "properties": { + "currency_code": { + "description": "Currency code for shop amount", + "type": ["null", "string"] + }, + "amount": { + "description": "Amount in shop currency", + "type": ["null", "number"] + } + } + }, + "presentment_money": { + "description": "Presentment total duties", + "type": ["null", "object"], + "properties": { + "currency_code": { + "description": "Currency code for presentment amount", + "type": ["null", "string"] + }, + "amount": { + "description": "Amount in presentment currency", + "type": ["null", "number"] + } + } + } + } + } + } + } + }, + "shipping_address": { + "type": ["null", "object"], + "properties": { + "first_name": { + "type": ["null", "string"] + }, + "address1": { + "type": ["null", "string"] + }, + "phone": { + "type": ["null", "string"] + }, + "city": { + "type": ["null", "string"] + }, + "zip": { + "type": ["null", "string"] + }, + "province": { + "type": ["null", "string"] + }, + "country": { + "type": ["null", "string"] + }, + "last_name": { + "type": ["null", "string"] + }, + "address2": { + "type": ["null", "string"] + }, + "company": { + "type": ["null", "string"] + }, + "latitude": { + "type": ["null", "number"] + }, + "longitude": { + "type": ["null", "number"] + }, + "name": { + "type": ["null", "string"] + }, + "country_code": { + "type": ["null", "string"] + }, + "province_code": { + "type": ["null", "string"] + } + } + }, + "shipping_lines": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "integer"] + }, + "carrier_identifier": { + "type": ["null", "string"] + }, + "code": { + "type": ["null", "string"] + }, + "discounted_price": { + "type": ["null", "number"] + }, + "discounted_price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "phone": { + "type": ["null", "string"] + }, + "price": { + "type": ["null", "number"] + }, + "price_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "number"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "requested_fulfillment_service_id": { + "type": ["null", "string"] + }, + "source": { + "type": ["null", "string"] + }, + "title": { + "type": ["null", "string"] + }, + "tax_lines": { + "type": ["null", "array"] + }, + "discount_allocations": { + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "id": { + "type": ["null", "string"] + }, + "amount": { + "type": ["null", "string"] + }, + "description": { + "type": ["null", "string"] + }, + "created_at": { + "type": ["null", "string"], + "format": "date-time" + }, + "discount_application_index": { + "type": ["null", "number"] + }, + "amount_set": { + "type": ["null", "object"], + "properties": { + "shop_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + }, + "presentment_money": { + "type": ["null", "object"], + "properties": { + "amount": { + "type": ["null", "string"] + }, + "currency_code": { + "type": ["null", "string"] + } + } + } + } + }, + "application_type": { + "type": ["null", "string"] + } + } + } + } + } + } + }, + "deleted_at": { + "description": "The date and time when the order was deleted", + "type": ["null", "string"], + "format": "date-time" + }, + "deleted_message": { + "description": "Message provided when the order was deleted", + "type": ["null", "string"] + }, + "deleted_description": { + "description": "Description provided when the order was deleted", + "type": ["null", "string"] + } + } +} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/source.py b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/source.py new file mode 100644 index 000000000000..8017f3081798 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/source.py @@ -0,0 +1,26 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + +import logging +from typing import Any, List, Mapping, Tuple + +from airbyte_cdk.sources import AbstractSource +from airbyte_cdk.sources.streams import Stream + +from .streams import Countries, Orders + +DEFAULT_COUNT = 1_000 + + +class SourceFakerHardcode(AbstractSource): + def check_connection(self, logger: logging.Logger, config: Mapping[str, Any]) -> Tuple[bool, Any]: + if type(config["count"]) == int or type(config["count"]) == float: + return True, None + else: + return False, "Count option is missing" + + def streams(self, config: Mapping[str, Any]) -> List[Stream]: + count: int = config["count"] if "count" in config else DEFAULT_COUNT + + return [Countries(count), Orders(count)] diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/spec.json b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/spec.json new file mode 100644 index 000000000000..864ec5ca6202 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/spec.json @@ -0,0 +1,20 @@ +{ + "documentationUrl": "https://docs.airbyte.com/integrations/sources/faker", + "connectionSpecification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Faker Hardcode Source Spec", + "type": "object", + "required": [], + "additionalProperties": true, + "properties": { + "count": { + "title": "Count", + "description": "How many records per stream should be generated", + "type": "integer", + "minimum": 1, + "default": 1000, + "order": 0 + } + } + } +} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/streams.py b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/streams.py new file mode 100644 index 000000000000..85b8563f5079 --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/streams.py @@ -0,0 +1,467 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + +from typing import Any, Iterable, Mapping + +from airbyte_cdk.sources.streams import Stream + + +class Countries(Stream): + primary_key = "id" + cursor_field = "updated_at" + + def __init__(self, count: int, **kwargs): + super().__init__(**kwargs) + self.count = count + + def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: + """ """ + sample_record = { + "id": 417014808765, + "name": "Ukraine", + "code": "UA", + "tax_name": "PDV", + "tax": 0.2, + "provinces": [], + "shop_url": "airbyte-integration-test", + } + for _ in range(self.count): + yield sample_record + + +class Orders(Stream): + primary_key = "id" + cursor_field = "updated_at" + + def __init__(self, count: int, **kwargs): + super().__init__(**kwargs) + self.count = count + + def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: + """ """ + sample_record = { + "id": 4554821468349, + "admin_graphql_api_id": "gid://shopify/Order/4554821468349", + "app_id": 580111, + "browser_ip": "176.113.167.23", + "buyer_accepts_marketing": False, + "cancel_reason": None, + "cancelled_at": None, + "cart_token": None, + "checkout_id": 25048437719229, + "checkout_token": "cf5d16a0a0688905bd551c6dec591506", + "client_details": { + "accept_language": "en-US,en;q=0.9,uk;q=0.8", + "browser_height": 754, + "browser_ip": "176.113.167.23", + "browser_width": 1519, + "session_hash": None, + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", + }, + "closed_at": "2022-06-15T06:25:43-07:00", + "company": None, + "confirmation_number": None, + "confirmed": True, + "contact_email": "integration-test@airbyte.io", + "created_at": "2022-06-15T05:16:53-07:00", + "currency": "USD", + "current_subtotal_price": 0.0, + "current_subtotal_price_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "current_total_additional_fees_set": None, + "current_total_discounts": 0.0, + "current_total_discounts_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "current_total_duties_set": None, + "current_total_price": 0.0, + "current_total_price_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "current_total_tax": 0.0, + "current_total_tax_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "customer_locale": "en", + "device_id": None, + "discount_codes": [], + "email": "integration-test@airbyte.io", + "estimated_taxes": False, + "financial_status": "refunded", + "fulfillment_status": "fulfilled", + "landing_site": "/wallets/checkouts.json", + "landing_site_ref": None, + "location_id": None, + "merchant_of_record_app_id": None, + "name": "#1136", + "note": "updated_mon_24.04.2023", + "note_attributes": [], + "number": 136, + "order_number": 1136, + "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/e4f98630ea44a884e33e700203ce2130/authenticate?key=edf087d6ae55a4541bf1375432f6a4b8", + "original_total_additional_fees_set": None, + "original_total_duties_set": None, + "payment_gateway_names": ["bogus"], + "phone": None, + "po_number": None, + "presentment_currency": "USD", + "processed_at": "2022-06-15T05:16:53-07:00", + "reference": None, + "referring_site": "https://airbyte-integration-test.myshopify.com/products/all-black-sneaker-right-foot", + "source_identifier": None, + "source_name": "web", + "source_url": None, + "subtotal_price": 57.23, + "subtotal_price_set": { + "shop_money": {"amount": 57.23, "currency_code": "USD"}, + "presentment_money": {"amount": 57.23, "currency_code": "USD"}, + }, + "tags": "Refund", + "tax_exempt": False, + "tax_lines": [], + "taxes_included": True, + "test": True, + "token": "e4f98630ea44a884e33e700203ce2130", + "total_discounts": 1.77, + "total_discounts_set": { + "shop_money": {"amount": 1.77, "currency_code": "USD"}, + "presentment_money": {"amount": 1.77, "currency_code": "USD"}, + }, + "total_line_items_price": 59.0, + "total_line_items_price_set": { + "shop_money": {"amount": 59.0, "currency_code": "USD"}, + "presentment_money": {"amount": 59.0, "currency_code": "USD"}, + }, + "total_outstanding": 0.0, + "total_price": 57.23, + "total_price_set": { + "shop_money": {"amount": 57.23, "currency_code": "USD"}, + "presentment_money": {"amount": 57.23, "currency_code": "USD"}, + }, + "total_shipping_price_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "total_tax": 0.0, + "total_tax_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "total_tip_received": 0.0, + "total_weight": 0, + "updated_at": "2023-04-24T07:00:37-07:00", + "user_id": None, + "billing_address": { + "first_name": "Iryna", + "address1": "2261 Market Street", + "phone": None, + "city": "San Francisco", + "zip": "94114", + "province": "California", + "country": "United States", + "last_name": "Grankova", + "address2": "4381", + "company": None, + "latitude": 37.7647751, + "longitude": -122.4320369, + "name": "Iryna Grankova", + "country_code": "US", + "province_code": "CA", + }, + "customer": { + "id": 5362027233469, + "email": "integration-test@airbyte.io", + "created_at": "2021-07-08T05:41:47-07:00", + "updated_at": "2022-06-22T03:50:13-07:00", + "first_name": "Airbyte", + "last_name": "Team", + "state": "disabled", + "note": None, + "verified_email": True, + "multipass_identifier": None, + "tax_exempt": False, + "phone": None, + "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": None}, + "sms_marketing_consent": None, + "tags": "", + "currency": "USD", + "accepts_marketing": False, + "accepts_marketing_updated_at": None, + "marketing_opt_in_level": "single_opt_in", + "tax_exemptions": [], + "admin_graphql_api_id": "gid://shopify/Customer/5362027233469", + "default_address": { + "id": 7492260823229, + "customer_id": 5362027233469, + "first_name": "Airbyte", + "last_name": "Team", + "company": None, + "address1": "2261 Market Street", + "address2": "4381", + "city": "San Francisco", + "province": "California", + "country": "United States", + "zip": "94114", + "phone": None, + "name": "Airbyte Team", + "province_code": "CA", + "country_code": "US", + "country_name": "United States", + "default": True, + }, + }, + "discount_applications": [ + { + "target_type": "line_item", + "type": "automatic", + "value": "3.0", + "value_type": "percentage", + "allocation_method": "across", + "target_selection": "all", + "title": "eeeee", + } + ], + "fulfillments": [ + { + "id": 4075788501181, + "admin_graphql_api_id": "gid://shopify/Fulfillment/4075788501181", + "created_at": "2022-06-15T05:16:55-07:00", + "location_id": 63590301885, + "name": "#1136.1", + "order_id": 4554821468349, + "origin_address": {}, + "receipt": {}, + "service": "manual", + "shipment_status": None, + "status": "success", + "tracking_company": None, + "tracking_number": None, + "tracking_numbers": [], + "tracking_url": None, + "tracking_urls": [], + "updated_at": "2022-06-15T05:16:55-07:00", + "line_items": [ + { + "id": 11406125564093, + "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", + "fulfillable_quantity": 0, + "fulfillment_service": "manual", + "fulfillment_status": "fulfilled", + "gift_card": False, + "grams": 0, + "name": "All Black Sneaker Right Foot - ivory", + "price": 59.0, + "price_set": { + "shop_money": {"amount": 59.0, "currency_code": "USD"}, + "presentment_money": {"amount": 59.0, "currency_code": "USD"}, + }, + "product_exists": True, + "product_id": 6796226560189, + "properties": [], + "quantity": 1, + "requires_shipping": False, + "sku": "", + "taxable": True, + "title": "All Black Sneaker Right Foot", + "total_discount": 0.0, + "total_discount_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "variant_id": 40090597884093, + "variant_inventory_management": "shopify", + "variant_title": "ivory", + "vendor": "Becker - Moore", + "tax_lines": [], + "duties": [], + "discount_allocations": [ + { + "amount": "1.77", + "amount_set": { + "shop_money": {"amount": "1.77", "currency_code": "USD"}, + "presentment_money": {"amount": "1.77", "currency_code": "USD"}, + }, + "discount_application_index": 0, + } + ], + } + ], + } + ], + "line_items": [ + { + "id": 11406125564093, + "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", + "fulfillable_quantity": 0, + "fulfillment_service": "manual", + "fulfillment_status": "fulfilled", + "gift_card": False, + "grams": 0, + "name": "All Black Sneaker Right Foot - ivory", + "price": 59.0, + "price_set": { + "shop_money": {"amount": 59.0, "currency_code": "USD"}, + "presentment_money": {"amount": 59.0, "currency_code": "USD"}, + }, + "product_exists": True, + "product_id": 6796226560189, + "properties": [], + "quantity": 1, + "requires_shipping": False, + "sku": "", + "taxable": True, + "title": "All Black Sneaker Right Foot", + "total_discount": 0.0, + "total_discount_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "variant_id": 40090597884093, + "variant_inventory_management": "shopify", + "variant_title": "ivory", + "vendor": "Becker - Moore", + "tax_lines": [], + "duties": [], + "discount_allocations": [ + { + "amount": "1.77", + "amount_set": { + "shop_money": {"amount": "1.77", "currency_code": "USD"}, + "presentment_money": {"amount": "1.77", "currency_code": "USD"}, + }, + "discount_application_index": 0, + } + ], + } + ], + "payment_terms": None, + "refunds": [ + { + "id": 852809646269, + "admin_graphql_api_id": "gid://shopify/Refund/852809646269", + "created_at": "2022-06-15T06:25:43-07:00", + "note": None, + "order_id": 4554821468349, + "processed_at": "2022-06-15T06:25:43-07:00", + "restock": True, + "total_duties_set": { + "shop_money": {"amount": 0.0, "currency_code": "USD"}, + "presentment_money": {"amount": 0.0, "currency_code": "USD"}, + }, + "user_id": 74861019325, + "order_adjustments": [], + "transactions": [ + { + "id": 5721170968765, + "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765", + "amount": "57.23", + "authorization": None, + "created_at": "2022-06-15T06:25:42-07:00", + "currency": "USD", + "device_id": None, + "error_code": None, + "gateway": "bogus", + "kind": "refund", + "location_id": None, + "message": "Bogus Gateway: Forced success", + "order_id": 4554821468349, + "parent_id": 5721110872253, + "payment_id": "c25048437719229.2", + "processed_at": "2022-06-15T06:25:42-07:00", + "receipt": {"paid_amount": "57.23"}, + "source_name": "1830279", + "status": "success", + "test": True, + "user_id": None, + "payment_details": { + "credit_card_bin": "1", + "avs_result_code": None, + "cvv_result_code": None, + "credit_card_number": "•••• •••• •••• 1", + "credit_card_company": "Bogus", + "buyer_action_info": None, + "credit_card_name": "Bogus Gateway", + "credit_card_wallet": None, + "credit_card_expiration_month": 2, + "credit_card_expiration_year": 2025, + }, + } + ], + "refund_line_items": [ + { + "id": 363131404477, + "line_item_id": 11406125564093, + "location_id": 63590301885, + "quantity": 1, + "restock_type": "return", + "subtotal": 57.23, + "subtotal_set": { + "shop_money": {"amount": "57.23", "currency_code": "USD"}, + "presentment_money": {"amount": "57.23", "currency_code": "USD"}, + }, + "total_tax": 0.0, + "total_tax_set": { + "shop_money": {"amount": "0.00", "currency_code": "USD"}, + "presentment_money": {"amount": "0.00", "currency_code": "USD"}, + }, + "line_item": { + "id": 11406125564093, + "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", + "fulfillable_quantity": 0, + "fulfillment_service": "manual", + "fulfillment_status": "fulfilled", + "gift_card": False, + "grams": 0, + "name": "All Black Sneaker Right Foot - ivory", + "price": "59.00", + "price_set": { + "shop_money": {"amount": "59.00", "currency_code": "USD"}, + "presentment_money": {"amount": "59.00", "currency_code": "USD"}, + }, + "product_exists": True, + "product_id": 6796226560189, + "properties": [], + "quantity": 1, + "requires_shipping": False, + "sku": "", + "taxable": True, + "title": "All Black Sneaker Right Foot", + "total_discount": "0.00", + "total_discount_set": { + "shop_money": {"amount": "0.00", "currency_code": "USD"}, + "presentment_money": {"amount": "0.00", "currency_code": "USD"}, + }, + "variant_id": 40090597884093, + "variant_inventory_management": "shopify", + "variant_title": "ivory", + "vendor": "Becker - Moore", + "tax_lines": [], + "duties": [], + "discount_allocations": [ + { + "amount": "1.77", + "amount_set": { + "shop_money": {"amount": "1.77", "currency_code": "USD"}, + "presentment_money": {"amount": "1.77", "currency_code": "USD"}, + }, + "discount_application_index": 0, + } + ], + }, + } + ], + "duties": [], + } + ], + "shipping_address": None, + "shipping_lines": [], + "shop_url": "airbyte-integration-test", + } + for _ in range(self.count): + yield sample_record diff --git a/airbyte-integrations/connectors/source-faker-hardcode/unit_tests/unit_test.py b/airbyte-integrations/connectors/source-faker-hardcode/unit_tests/unit_test.py new file mode 100644 index 000000000000..e83e0d5ff18c --- /dev/null +++ b/airbyte-integrations/connectors/source-faker-hardcode/unit_tests/unit_test.py @@ -0,0 +1,5 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + + From 30b17ec83b4ec32440a3e014bd1437caee7e83b2 Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 11:33:50 +0200 Subject: [PATCH 02/10] Source Hardcoded Records: ref [skip ci] Signed-off-by: Artem Inzhyyants --- .../source_faker_hardcode/__init__.py | 8 - .../schemas/countries.json | 71 - .../source_faker_hardcode/schemas/orders.json | 2991 ----------------- .../source_faker_hardcode/streams.py | 467 --- .../README.md | 36 +- .../acceptance-test-config.yml | 4 +- .../icon.svg | 0 .../integration_tests/__init__.py | 0 .../integration_tests/abnormal_state.json | 0 .../integration_tests/acceptance.py | 0 .../integration_tests/configured_catalog.json | 4 +- .../integration_tests/expected_records.jsonl | 0 .../integration_tests/invalid_config.json | 0 .../integration_tests/sample_config.json | 0 .../integration_tests/sample_state.json | 0 .../main.py | 2 +- .../metadata.yaml | 12 +- .../poetry.lock | 0 .../pyproject.toml | 10 +- .../source_hardcoded_records/__init__.py | 8 + .../source_hardcoded_records}/run.py | 4 +- .../schemas/customers.json | 308 ++ .../schemas/products.json | 21 + .../source_hardcoded_records}/source.py | 6 +- .../source_hardcoded_records}/spec.json | 4 +- .../source_hardcoded_records/streams.py | 121 + .../unit_tests/unit_test.py | 0 27 files changed, 499 insertions(+), 3578 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/__init__.py delete mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/countries.json delete mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/orders.json delete mode 100644 airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/streams.py rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/README.md (73%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/acceptance-test-config.yml (92%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/icon.svg (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/integration_tests/__init__.py (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/integration_tests/abnormal_state.json (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/integration_tests/acceptance.py (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/integration_tests/configured_catalog.json (91%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/integration_tests/expected_records.jsonl (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/integration_tests/invalid_config.json (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/integration_tests/sample_config.json (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/integration_tests/sample_state.json (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/main.py (69%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/metadata.yaml (82%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/poetry.lock (100%) rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/pyproject.toml (63%) create mode 100644 airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/__init__.py rename airbyte-integrations/connectors/{source-faker-hardcode/source_faker_hardcode => source-hardcoded-records/source_hardcoded_records}/run.py (67%) create mode 100644 airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/customers.json create mode 100644 airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/products.json rename airbyte-integrations/connectors/{source-faker-hardcode/source_faker_hardcode => source-hardcoded-records/source_hardcoded_records}/source.py (82%) rename airbyte-integrations/connectors/{source-faker-hardcode/source_faker_hardcode => source-hardcoded-records/source_hardcoded_records}/spec.json (87%) create mode 100644 airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py rename airbyte-integrations/connectors/{source-faker-hardcode => source-hardcoded-records}/unit_tests/unit_test.py (100%) diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/__init__.py b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/__init__.py deleted file mode 100644 index 82c3fb63fb97..000000000000 --- a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2021 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceFakerHardcode - -__all__ = ["SourceFakerHardcode"] diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/countries.json b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/countries.json deleted file mode 100644 index dd79992f3023..000000000000 --- a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/countries.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "code": { - "description": "ISO country code.", - "type": ["null", "string"] - }, - "id": { - "description": "Unique identifier for the country.", - "type": ["null", "integer"] - }, - "name": { - "description": "Name of the country.", - "type": ["null", "string"] - }, - "provinces": { - "description": "Array of provinces or states within the country.", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "code": { - "description": "Province or state code.", - "type": ["null", "string"] - }, - "country_id": { - "description": "Unique identifier of the country the province belongs to.", - "type": ["null", "integer"] - }, - "id": { - "description": "Unique identifier for the province.", - "type": ["null", "integer"] - }, - "name": { - "description": "Name of the province.", - "type": ["null", "string"] - }, - "tax": { - "description": "Tax information for the province.", - "type": ["null", "number"] - }, - "tax_name": { - "description": "Name of the tax applicable for the province.", - "type": ["null", "string"] - }, - "tax_type": { - "description": "Type of tax (e.g., sales tax, VAT) applicable in the province.", - "type": ["null", "string"] - }, - "tax_percentage": { - "description": "Percentage value of tax applicable in the province.", - "type": ["null", "number"] - } - } - } - }, - "tax": { - "description": "Overall tax information for the country.", - "type": ["null", "number"] - }, - "tax_name": { - "description": "Name of the tax applicable for the country.", - "type": ["null", "string"] - }, - "shop_url": { - "description": "URL for the shop related to this country.", - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/orders.json b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/orders.json deleted file mode 100644 index 2d8d23b56094..000000000000 --- a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/schemas/orders.json +++ /dev/null @@ -1,2991 +0,0 @@ -{ - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "description": "The unique identifier of the order", - "type": ["null", "integer"] - }, - "admin_graphql_api_id": { - "description": "The unique identifier of the order in the GraphQL Admin API", - "type": ["null", "string"] - }, - "app_id": { - "description": "The ID of the app that created the order", - "type": ["null", "integer"] - }, - "browser_ip": { - "description": "The IP address of the customer's browser", - "type": ["null", "string"] - }, - "buyer_accepts_marketing": { - "description": "Indicates if the customer has agreed to receive marketing emails", - "type": ["null", "boolean"] - }, - "cancel_reason": { - "description": "The reason provided if the order was canceled", - "type": ["null", "string"] - }, - "cancelled_at": { - "description": "The date and time when the order was canceled", - "type": ["null", "string"], - "format": "date-time" - }, - "cart_token": { - "description": "Token representing the cart associated with the order", - "type": ["null", "string"] - }, - "checkout_id": { - "description": "The ID of the checkout that processed the order", - "type": ["null", "integer"] - }, - "checkout_token": { - "description": "Token representing the checkout associated with the order", - "type": ["null", "string"] - }, - "client_details": { - "type": ["null", "object"], - "properties": { - "accept_language": { - "type": ["null", "string"] - }, - "browser_height": { - "type": ["null", "integer"] - }, - "browser_ip": { - "type": ["null", "string"] - }, - "browser_width": { - "type": ["null", "integer"] - }, - "session_hash": { - "type": ["null", "string"] - }, - "user_agent": { - "type": ["null", "string"] - } - } - }, - "closed_at": { - "description": "The date and time when the order was closed", - "type": ["null", "string"], - "format": "date-time" - }, - "company": { - "description": "The name of the company associated with the order", - "type": ["null", "string"] - }, - "confirmed": { - "description": "Indicates if the order has been confirmed", - "type": ["null", "boolean"] - }, - "confirmation_number": { - "description": "The unique number for confirming the order", - "type": ["null", "string"] - }, - "contact_email": { - "description": "The email address for order-related contacts", - "type": ["null", "string"] - }, - "created_at": { - "description": "The date and time when the order was created", - "type": ["null", "string"], - "format": "date-time" - }, - "currency": { - "description": "The currency used for the order", - "type": ["null", "string"] - }, - "current_subtotal_price": { - "description": "The current subtotal price of the order", - "type": ["null", "number"] - }, - "current_subtotal_price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "current_total_discounts": { - "description": "The current total discounts applied to the order", - "type": ["null", "number"] - }, - "current_total_discounts_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "current_total_duties_set": { - "description": "The current total duties set for the order", - "type": ["null", "string"] - }, - "current_total_price": { - "description": "The current total price of the order", - "type": ["null", "number"] - }, - "current_total_price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "current_total_tax": { - "description": "The current total tax amount for the order", - "type": ["null", "number"] - }, - "current_total_tax_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "current_total_additional_fees_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "customer_locale": { - "description": "The locale of the customer", - "type": ["null", "string"] - }, - "device_id": { - "description": "The ID of the device used to place the order", - "type": ["null", "string"] - }, - "discount_applications": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "type": { - "type": ["null", "string"] - }, - "title": { - "type": ["null", "string"] - }, - "description": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - }, - "value_type": { - "type": ["null", "string"] - }, - "allocation_method": { - "type": ["null", "string"] - }, - "target_selection": { - "type": ["null", "string"] - }, - "target_type": { - "type": ["null", "string"] - } - } - } - }, - "discount_codes": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "code": { - "type": ["null", "string"] - }, - "amount": { - "type": ["null", "string"] - }, - "type": { - "type": ["null", "string"] - } - } - } - }, - "email": { - "description": "The email address of the customer", - "type": ["null", "string"] - }, - "estimated_taxes": { - "description": "Estimated taxes for the order", - "type": ["null", "boolean"] - }, - "financial_status": { - "description": "The financial status of the order", - "type": ["null", "string"] - }, - "fulfillment_status": { - "description": "The fulfillment status of the order", - "type": ["null", "string"] - }, - "landing_site": { - "description": "The landing site of the order", - "type": ["null", "string"] - }, - "landing_site_ref": { - "description": "Reference for the landing site of the order", - "type": ["null", "string"] - }, - "location_id": { - "description": "The location ID associated with the order", - "type": ["null", "integer"] - }, - "merchant_of_record_app_id": { - "description": "The app ID of the merchant of record", - "type": ["null", "string"] - }, - "name": { - "description": "The name of the order", - "type": ["null", "string"] - }, - "note": { - "description": "Additional notes related to the order", - "type": ["null", "string"] - }, - "note_attributes": { - "description": "Custom note attributes associated with the order", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "name": { - "description": "Name of the note attribute", - "type": ["null", "string"] - }, - "value": { - "description": "Value of the note attribute", - "type": ["null", "string"] - } - } - } - }, - "number": { - "description": "The order number", - "type": ["null", "integer"] - }, - "order_number": { - "description": "The unique number assigned to the order", - "type": ["null", "integer"] - }, - "order_status_url": { - "description": "URL to check the status of the order", - "type": ["null", "string"] - }, - "original_total_duties_set": { - "description": "The original total duties set for the order", - "type": ["null", "string"] - }, - "original_total_additional_fees_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "payment_gateway_names": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "payment_terms": { - "description": "The terms of payment for the order", - "type": ["null", "string"] - }, - "phone": { - "description": "The phone number of the customer", - "type": ["null", "string"] - }, - "presentment_currency": { - "description": "The currency used for presenting the order", - "type": ["null", "string"] - }, - "processed_at": { - "description": "The date and time when the order was processed", - "type": ["null", "string"] - }, - "po_number": { - "description": "The purchase order number", - "type": ["null", "string"] - }, - "reference": { - "description": "Reference associated with the order", - "type": ["null", "string"] - }, - "referring_site": { - "description": "The referring site of the order", - "type": ["null", "string"] - }, - "source_identifier": { - "description": "Identifier for the order's source", - "type": ["null", "string"] - }, - "source_name": { - "description": "Name of the order's source", - "type": ["null", "string"] - }, - "source_url": { - "description": "URL of the order's source", - "type": ["null", "string"] - }, - "shop_url": { - "description": "URL of the shop associated with the order", - "type": ["null", "string"] - }, - "subtotal_price": { - "description": "The subtotal price of the order", - "type": ["null", "number"] - }, - "subtotal_price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "tags": { - "description": "Tags associated with the order", - "type": ["null", "string"] - }, - "tax_exempt": { - "description": "Indicates if the order is tax exempt", - "type": ["null", "boolean"] - }, - "tax_lines": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "channel_liable": { - "type": ["null", "boolean"] - }, - "price": { - "type": ["null", "number"] - }, - "rate": { - "type": ["null", "number"] - }, - "title": { - "type": ["null", "string"] - }, - "price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - } - } - } - }, - "taxes_included": { - "description": "Indicates if taxes are included in the prices", - "type": ["null", "boolean"] - }, - "test": { - "description": "Indicates if the order is a test order", - "type": ["null", "boolean"] - }, - "token": { - "description": "Token associated with the order", - "type": ["null", "string"] - }, - "total_discounts": { - "description": "The total amount of discounts applied to the order", - "type": ["null", "number"] - }, - "total_discounts_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "total_line_items_price": { - "description": "The total price of all line items in the order", - "type": ["null", "number"] - }, - "total_line_items_price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "total_outstanding": { - "description": "The total outstanding amount for the order", - "type": ["null", "number"] - }, - "total_price": { - "description": "The total price of the order", - "type": ["null", "number"] - }, - "total_price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "total_price_usd": { - "description": "The total price of the order in USD", - "type": ["null", "number"] - }, - "total_shipping_price_set": { - "description": "The details of the total shipping price for the order.", - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "description": "The total shipping amount in shop currency", - "type": ["null", "number"] - }, - "currency_code": { - "description": "The currency code for the total shipping price in shop currency", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "description": "The total shipping amount in presentment currency", - "type": ["null", "number"] - }, - "currency_code": { - "description": "The currency code for the total shipping price", - "type": ["null", "string"] - } - } - } - } - }, - "total_tax": { - "description": "The total tax amount for the order", - "type": ["null", "number"] - }, - "total_tax_set": { - "description": "The details of the total tax applied to the order.", - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "description": "The total tax amount in shop currency", - "type": ["null", "number"] - }, - "currency_code": { - "description": "The currency code for the total tax amount in shop currency", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "description": "The total tax amount in presentment currency", - "type": ["null", "number"] - }, - "currency_code": { - "description": "The currency code for the total tax amount", - "type": ["null", "string"] - } - } - } - } - }, - "total_tip_received": { - "description": "The total tip amount received, if any", - "type": ["null", "number"] - }, - "total_weight": { - "description": "The total weight of all items in the order", - "type": ["null", "integer"] - }, - "updated_at": { - "description": "The date and time when the order was last updated", - "type": ["null", "string"], - "format": "date-time" - }, - "user_id": { - "description": "The unique identifier of the user associated with the order", - "type": ["null", "number"] - }, - "billing_address": { - "type": ["null", "object"], - "properties": { - "first_name": { - "type": ["null", "string"] - }, - "address1": { - "type": ["null", "string"] - }, - "phone": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - }, - "province": { - "type": ["null", "string"] - }, - "country": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "address2": { - "type": ["null", "string"] - }, - "company": { - "type": ["null", "string"] - }, - "latitude": { - "type": ["null", "number"] - }, - "longitude": { - "type": ["null", "number"] - }, - "name": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "province_code": { - "type": ["null", "string"] - } - } - }, - "customer": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "integer"] - }, - "email": { - "type": ["null", "string"] - }, - "accepts_marketing": { - "type": ["null", "boolean"] - }, - "created_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "updated_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "first_name": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "orders_count": { - "type": ["null", "integer"] - }, - "state": { - "type": ["null", "string"] - }, - "total_spent": { - "type": ["null", "number"] - }, - "last_order_id": { - "type": ["null", "integer"] - }, - "note": { - "type": ["null", "string"] - }, - "verified_email": { - "type": ["null", "boolean"] - }, - "multipass_identifier": { - "type": ["null", "string"] - }, - "tax_exempt": { - "type": ["null", "boolean"] - }, - "phone": { - "type": ["null", "string"] - }, - "tags": { - "type": ["null", "string"] - }, - "last_order_name": { - "type": ["null", "string"] - }, - "currency": { - "type": ["null", "string"] - }, - "accepts_marketing_updated_at": { - "type": ["null", "string"] - }, - "marketing_opt_in_level": { - "type": ["null", "string"] - }, - "admin_graphql_api_id": { - "type": ["null", "string"] - }, - "default_address": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "integer"] - }, - "customer_id": { - "type": ["null", "integer"] - }, - "first_name": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "company": { - "type": ["null", "string"] - }, - "address1": { - "type": ["null", "string"] - }, - "address2": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "province": { - "type": ["null", "string"] - }, - "country": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - }, - "phone": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "province_code": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "country_name": { - "type": ["null", "string"] - }, - "default": { - "type": ["null", "boolean"] - } - } - }, - "email_marketing_consent": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "state": { - "type": ["null", "string"] - }, - "opt_in_level": { - "type": ["null", "string"] - }, - "consent_updated_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "consent_collected_from": { - "type": ["null", "string"] - } - } - }, - "sms_marketing_consent": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "state": { - "type": ["null", "string"] - }, - "opt_in_level": { - "type": ["null", "string"] - }, - "consent_updated_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "consent_collected_from": { - "type": ["null", "string"] - } - } - }, - "tax_exemptions": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - } - } - }, - "discount_allocations": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "string"] - }, - "amount": { - "type": ["null", "string"] - }, - "description": { - "type": ["null", "string"] - }, - "created_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "discount_application_index": { - "type": ["null", "number"] - }, - "amount_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "application_type": { - "type": ["null", "string"] - } - } - } - }, - "fulfillments": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "integer"] - }, - "admin_graphql_api_id": { - "type": ["null", "string"] - }, - "created_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "location_id": { - "type": ["null", "integer"] - }, - "name": { - "type": ["null", "string"] - }, - "order_id": { - "type": ["null", "integer"] - }, - "receipt": { - "type": ["null", "object"] - }, - "service": { - "type": ["null", "string"] - }, - "shipment_status": { - "type": ["null", "string"] - }, - "status": { - "type": ["null", "string"] - }, - "tracking_company": { - "type": ["null", "string"] - }, - "tracking_number": { - "type": ["null", "string"] - }, - "tracking_numbers": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "tracking_url": { - "type": ["null", "string"] - }, - "tracking_urls": { - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "updated_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "line_items": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "integer"] - }, - "admin_graphql_api_id": { - "type": ["null", "string"] - }, - "destination_location": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "integer"] - }, - "country_code": { - "type": ["null", "string"] - }, - "province_code": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "address1": { - "type": ["null", "string"] - }, - "address2": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - } - } - }, - "fulfillable_quantity": { - "type": ["null", "integer"] - }, - "fulfillment_service": { - "type": ["null", "string"] - }, - "fulfillment_status": { - "type": ["null", "string"] - }, - "gift_card": { - "type": ["null", "boolean"] - }, - "grams": { - "type": ["null", "integer"] - }, - "name": { - "type": ["null", "string"] - }, - "origin_location": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "integer"] - }, - "country_code": { - "type": ["null", "string"] - }, - "province_code": { - "type": ["null", "string"] - }, - "name": { - "type": ["null", "string"] - }, - "address1": { - "type": ["null", "string"] - }, - "address2": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - } - } - }, - "price": { - "type": ["null", "number"] - }, - "price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "pre_tax_price": { - "type": ["null", "number"] - }, - "product_exists": { - "type": ["null", "boolean"] - }, - "product_id": { - "type": ["null", "integer"] - }, - "properties": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "name": { - "type": ["null", "string"] - }, - "value": { - "type": ["null", "string"] - } - } - } - }, - "quantity": { - "type": ["null", "integer"] - }, - "requires_shipping": { - "type": ["null", "boolean"] - }, - "sku": { - "type": ["null", "string"] - }, - "taxable": { - "type": ["null", "boolean"] - }, - "title": { - "type": ["null", "string"] - }, - "total_discount": { - "type": ["null", "number"] - }, - "total_discount_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "variant_id": { - "type": ["null", "integer"] - }, - "variant_inventory_management": { - "type": ["null", "string"] - }, - "variant_title": { - "type": ["null", "string"] - }, - "vendor": { - "type": ["null", "string"] - }, - "tax_lines": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "channel_liable": { - "type": ["null", "boolean"] - }, - "price": { - "type": ["null", "number"] - }, - "price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "rate": { - "type": ["null", "number"] - }, - "title": { - "type": ["null", "string"] - } - } - } - }, - "duties": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "string"] - }, - "harmonized_system_code": { - "type": ["null", "string"] - }, - "country_code_of_origin": { - "type": ["null", "string"] - }, - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "tax_lines": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "title": { - "type": ["null", "string"] - }, - "price": { - "type": ["null", "string"] - }, - "rate": { - "type": ["null", "number"] - }, - "price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "channel_liable": { - "type": ["null", "boolean"] - } - } - } - }, - "admin_graphql_api_id": { - "type": ["null", "string"] - } - } - } - }, - "discount_allocations": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "string"] - }, - "amount": { - "type": ["null", "string"] - }, - "description": { - "type": ["null", "string"] - }, - "created_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "discount_application_index": { - "type": ["null", "number"] - }, - "amount_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "application_type": { - "type": ["null", "string"] - } - } - } - } - } - } - }, - "origin_address": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "address1": { - "type": ["null", "string"] - }, - "address2": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "province_code": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - } - } - } - } - } - }, - "line_items": { - "description": "Details of the products within an order", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique identifier for the item", - "type": ["null", "integer"] - }, - "admin_graphql_api_id": { - "description": "Unique identifier for the item", - "type": ["null", "string"] - }, - "destination_location": { - "description": "Destination address of the item", - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique identifier for the location", - "type": ["null", "integer"] - }, - "country_code": { - "description": "Country code of the address", - "type": ["null", "string"] - }, - "province_code": { - "description": "Province code of the address", - "type": ["null", "string"] - }, - "name": { - "description": "Name of the location", - "type": ["null", "string"] - }, - "address1": { - "description": "First line of address", - "type": ["null", "string"] - }, - "address2": { - "description": "Second line of address", - "type": ["null", "string"] - }, - "city": { - "description": "City of the address", - "type": ["null", "string"] - }, - "zip": { - "description": "Zip code of the address", - "type": ["null", "string"] - } - } - }, - "fulfillable_quantity": { - "description": "Quantity that is fulfillable", - "type": ["null", "integer"] - }, - "fulfillment_service": { - "description": "Service used for fulfillment", - "type": ["null", "string"] - }, - "fulfillment_status": { - "description": "Status of fulfillment", - "type": ["null", "string"] - }, - "gift_card": { - "description": "Whether the item is a gift card", - "type": ["null", "boolean"] - }, - "grams": { - "description": "Weight in grams", - "type": ["null", "integer"] - }, - "name": { - "description": "Name of the item", - "type": ["null", "string"] - }, - "origin_location": { - "description": "Origin address of the item", - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique identifier for the location", - "type": ["null", "integer"] - }, - "country_code": { - "description": "Country code of the address", - "type": ["null", "string"] - }, - "province_code": { - "description": "Province code of the address", - "type": ["null", "string"] - }, - "name": { - "description": "Name of the location", - "type": ["null", "string"] - }, - "address1": { - "description": "First line of address", - "type": ["null", "string"] - }, - "address2": { - "description": "Second line of address", - "type": ["null", "string"] - }, - "city": { - "description": "City of the address", - "type": ["null", "string"] - }, - "zip": { - "description": "Zip code of the address", - "type": ["null", "string"] - } - } - }, - "price": { - "description": "Price of the item", - "type": ["null", "number"] - }, - "price_set": { - "description": "Details of the item price", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Item price in shop currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Item price in presentment currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "pre_tax_price": { - "description": "Price before tax", - "type": ["null", "number"] - }, - "product_exists": { - "description": "Whether the product exists", - "type": ["null", "boolean"] - }, - "product_id": { - "description": "Identifier for the product", - "type": ["null", "integer"] - }, - "properties": { - "description": "Any additional properties associated with the item", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "name": { - "description": "Name of the property", - "type": ["null", "string"] - }, - "value": { - "description": "Value of the property", - "type": ["null", "string"] - } - } - } - }, - "quantity": { - "description": "Quantity of the item", - "type": ["null", "integer"] - }, - "requires_shipping": { - "description": "Whether shipping is required", - "type": ["null", "boolean"] - }, - "sku": { - "description": "Stock keeping unit of the item", - "type": ["null", "string"] - }, - "taxable": { - "description": "Whether the item is taxable", - "type": ["null", "boolean"] - }, - "title": { - "description": "Title of the item", - "type": ["null", "string"] - }, - "total_discount": { - "description": "Total discount applied to the item", - "type": ["null", "number"] - }, - "total_discount_set": { - "description": "Details of the total discount applied to the item", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Total discount amount in shop currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Total discount amount in presentment currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "variant_id": { - "description": "Identifier for the variant of the item", - "type": ["null", "integer"] - }, - "variant_inventory_management": { - "description": "Inventory management type for the variant", - "type": ["null", "string"] - }, - "variant_title": { - "description": "Title of the variant", - "type": ["null", "string"] - }, - "vendor": { - "description": "Vendor of the item", - "type": ["null", "string"] - }, - "tax_lines": { - "description": "Details of tax lines associated with the item", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "channel_liable": { - "description": "Whether the channel is liable for the tax", - "type": ["null", "boolean"] - }, - "price": { - "description": "Price of the tax", - "type": ["null", "number"] - }, - "price_set": { - "description": "Details of the tax price", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Tax price in shop currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Tax price in presentment currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "rate": { - "description": "Tax rate", - "type": ["null", "number"] - }, - "title": { - "description": "Title of the tax", - "type": ["null", "string"] - } - } - } - }, - "duties": { - "description": "Details of any duties associated with the item", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique identifier for the duty", - "type": ["null", "string"] - }, - "harmonized_system_code": { - "description": "Harmonized system code for the duty", - "type": ["null", "string"] - }, - "country_code_of_origin": { - "description": "Country code of origin for the duty", - "type": ["null", "string"] - }, - "shop_money": { - "description": "Duty amount in shop currency", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Duty amount", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code of the duty amount", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Duty amount in presentment currency", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Duty amount", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code of the duty amount", - "type": ["null", "string"] - } - } - }, - "tax_lines": { - "description": "Details of tax lines associated with the duty", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "title": { - "description": "Title of the tax", - "type": ["null", "string"] - }, - "price": { - "description": "Price of the tax", - "type": ["null", "string"] - }, - "rate": { - "description": "Tax rate", - "type": ["null", "number"] - }, - "price_set": { - "description": "Details of the tax price", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Tax price in shop currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Tax price in presentment currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "channel_liable": { - "description": "Whether the channel is liable for the tax", - "type": ["null", "boolean"] - } - } - } - }, - "admin_graphql_api_id": { - "description": "Unique identifier for the duty", - "type": ["null", "string"] - } - } - } - }, - "discount_allocations": { - "description": "Details of any discounts applied to the item", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique identifier for the discount", - "type": ["null", "string"] - }, - "amount": { - "description": "Amount of the discount", - "type": ["null", "string"] - }, - "description": { - "description": "Description of the discount", - "type": ["null", "string"] - }, - "created_at": { - "description": "Timestamp of when the discount was created", - "type": ["null", "string"], - "format": "date-time" - }, - "discount_application_index": { - "description": "Index of the discount application", - "type": ["null", "number"] - }, - "amount_set": { - "description": "Details of the discount amount", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Discount amount in shop currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Discount amount in presentment currency", - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "application_type": { - "description": "Type of application of the discount", - "type": ["null", "string"] - } - } - } - } - } - } - }, - "refunds": { - "description": "Information about the refunds associated with the order", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique ID of the refund", - "type": ["null", "integer"] - }, - "admin_graphql_api_id": { - "description": "Unique ID of the refund in the GraphQL Admin API", - "type": ["null", "string"] - }, - "created_at": { - "description": "Timestamp for when the refund was created", - "type": ["null", "string"], - "format": "date-time" - }, - "note": { - "description": "Additional note associated with the refund", - "type": ["null", "string"] - }, - "order_id": { - "description": "ID of the order for which the refund is created", - "type": ["null", "integer"] - }, - "processed_at": { - "description": "Timestamp for when the refund was processed", - "type": ["null", "string"], - "format": "date-time" - }, - "restock": { - "description": "Indicates if restocking is required", - "type": ["null", "boolean"] - }, - "user_id": { - "description": "ID of the user associated with the refund", - "type": ["null", "integer"] - }, - "order_adjustments": { - "description": "Adjustments made to the order related to the refund", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount of the adjustment", - "type": ["null", "string"] - }, - "amount_set": { - "description": "Set of amounts for the adjustment", - "type": ["null", "object"], - "properties": { - "presentment_money": { - "description": "Presentment amount of adjustment", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - } - } - }, - "shop_money": { - "description": "Shop amount of adjustment", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in shop currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - } - } - } - } - }, - "id": { - "description": "Unique ID of the adjustment", - "type": ["null", "integer"] - }, - "kind": { - "description": "Type of adjustment", - "type": ["null", "string"] - }, - "order_id": { - "description": "ID of the order associated with the adjustment", - "type": ["null", "integer"] - }, - "reason": { - "description": "Reason for the adjustment", - "type": ["null", "string"] - }, - "refund_id": { - "description": "ID of the refund associated with the adjustment", - "type": ["null", "integer"] - }, - "tax_amount": { - "description": "Tax amount of the adjustment", - "type": ["null", "string"] - }, - "tax_amount_set": { - "description": "Set of tax amounts for the adjustment", - "type": ["null", "object"], - "properties": { - "presentment_money": { - "description": "Presentment tax amount of the adjustment", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - } - } - }, - "shop_money": { - "description": "Shop tax amount of the adjustment", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in shop currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - } - } - } - } - } - } - } - }, - "transactions": { - "description": "Information about transactions related to the refund", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique ID of the transaction", - "type": ["null", "integer"] - }, - "admin_graphql_api_id": { - "description": "Unique ID of the transaction in the GraphQL Admin API", - "type": ["null", "string"] - }, - "amount": { - "description": "Amount of the transaction", - "type": ["null", "string"] - }, - "authorization": { - "description": "Authorization code of the transaction", - "type": ["null", "string"] - }, - "created_at": { - "description": "Timestamp for when the transaction was created", - "type": ["null", "string"] - }, - "currency": { - "description": "Currency of the transaction", - "type": ["null", "string"] - }, - "device_id": { - "description": "ID of the device used for the transaction", - "type": ["null", "integer"] - }, - "error_code": { - "description": "Error code of the transaction", - "type": ["null", "string"] - }, - "gateway": { - "description": "Payment gateway used for the transaction", - "type": ["null", "string"] - }, - "kind": { - "description": "Type of transaction", - "type": ["null", "string"] - }, - "location_id": { - "description": "ID of the location", - "type": ["null", "integer"] - }, - "message": { - "description": "Message related to the transaction", - "type": ["null", "string"] - }, - "order_id": { - "description": "ID of the order associated with the transaction", - "type": ["null", "integer"] - }, - "parent_id": { - "description": "ID of the parent transaction", - "type": ["null", "integer"] - }, - "processed_at": { - "description": "Timestamp for when the transaction was processed", - "type": ["null", "string"] - }, - "receipt": { - "description": "Receipt information for the transaction", - "type": ["null", "object"], - "properties": { - "paid_amount": { - "description": "Amount paid", - "type": ["null", "string"] - } - } - }, - "source_name": { - "description": "Name of the transaction source", - "type": ["null", "string"] - }, - "status": { - "description": "Status of the transaction", - "type": ["null", "string"] - }, - "test": { - "description": "Indicates if the transaction is a test", - "type": ["null", "boolean"] - }, - "user_id": { - "description": "ID of the user associated with the transaction", - "type": ["null", "integer"] - }, - "payment_details": { - "description": "Details about the payment", - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "avs_result_code": { - "description": "AVS (Address Verification System) result code", - "type": ["null", "string"] - }, - "buyer_action_info": { - "description": "Additional info on buyer action", - "type": ["null", "string"] - }, - "credit_card_bin": { - "description": "BIN (Bank Identification Number) of the credit card", - "type": ["null", "string"] - }, - "credit_card_company": { - "description": "Company of the credit card", - "type": ["null", "string"] - }, - "credit_card_expiration_month": { - "description": "Expiration month of the credit card", - "type": ["null", "integer"] - }, - "credit_card_expiration_year": { - "description": "Expiration year of the credit card", - "type": ["null", "integer"] - }, - "credit_card_name": { - "description": "Name on the credit card", - "type": ["null", "string"] - }, - "credit_card_number": { - "description": "Number of the credit card", - "type": ["null", "string"] - }, - "credit_card_wallet": { - "description": "Wallet used for the credit card", - "type": ["null", "string"] - }, - "cvv_result_code": { - "description": "CVV (Card Verification Value) result code", - "type": ["null", "string"] - } - } - }, - "payment_id": { - "description": "ID of the payment", - "type": ["null", "string"] - } - } - } - }, - "refund_line_items": { - "description": "Information about the line items included in the refund", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique ID of the refund line item", - "type": ["null", "integer"] - }, - "line_item_id": { - "description": "ID of the line item included in the refund", - "type": ["null", "integer"] - }, - "location_id": { - "description": "ID of the location", - "type": ["null", "integer"] - }, - "quantity": { - "description": "Quantity of the line item included in the refund", - "type": ["null", "integer"] - }, - "restock_type": { - "description": "Type of restocking", - "type": ["null", "string"] - }, - "subtotal": { - "description": "Subtotal of the line item included in the refund", - "type": ["null", "number"] - }, - "subtotal_set": { - "description": "Set of subtotals for the line item included in the refund", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Shop subtotal of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in shop currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Presentment subtotal of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - } - } - } - } - }, - "total_tax": { - "description": "Total tax for the line item included in the refund", - "type": ["null", "number"] - }, - "total_tax_set": { - "description": "Set of total taxes for the line item included in the refund", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Shop total tax of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in shop currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Presentment total tax of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - } - } - } - } - }, - "line_item": { - "description": "Information about the line item in the refund", - "type": ["null", "object"], - "properties": { - "id": { - "description": "Unique ID of the line item", - "type": ["null", "integer"] - }, - "admin_graphql_api_id": { - "description": "Unique ID of the line item in the GraphQL Admin API", - "type": ["null", "string"] - }, - "fulfillable_quantity": { - "description": "Quantity fulfillable for the line item", - "type": ["null", "integer"] - }, - "fulfillment_service": { - "description": "Service responsible for fulfillment", - "type": ["null", "string"] - }, - "fulfillment_status": { - "description": "Status of fulfillment", - "type": ["null", "string"] - }, - "gift_card": { - "description": "Indicates if line item is a gift card", - "type": ["null", "boolean"] - }, - "grams": { - "description": "Weight of the line item in grams", - "type": ["null", "number"] - }, - "name": { - "description": "Name of the line item", - "type": ["null", "string"] - }, - "price": { - "description": "Price of the line item", - "type": ["null", "string"] - }, - "price_set": { - "description": "Set of prices for the line item", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Shop price of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in shop currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Presentment price of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - } - } - } - } - }, - "product_exists": { - "description": "Indicates if the product for the line item exists", - "type": ["null", "boolean"] - }, - "product_id": { - "description": "ID of the associated product", - "type": ["null", "integer"] - }, - "properties": { - "description": "Additional properties of the line item", - "type": ["null", "array"], - "items": { - "type": ["null", "string"] - } - }, - "quantity": { - "description": "Quantity of the line item", - "type": ["null", "integer"] - }, - "requires_shipping": { - "description": "Indicates if shipping is required for the line item", - "type": ["null", "boolean"] - }, - "sku": { - "description": "Stock keeping unit of the line item", - "type": ["null", "string"] - }, - "taxable": { - "description": "Indicates if the line item is taxable", - "type": ["null", "boolean"] - }, - "title": { - "description": "Title of the line item", - "type": ["null", "string"] - }, - "total_discount": { - "description": "Total discount applied to the line item", - "type": ["null", "string"] - }, - "total_discount_set": { - "description": "Set of total discounts for the line item", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Shop total discount of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in shop currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Presentment total discount of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - } - } - } - } - }, - "variant_id": { - "description": "ID of the variant associated with the line item", - "type": ["null", "integer"] - }, - "variant_inventory_management": { - "description": "Type of inventory management for the variant", - "type": ["null", "string"] - }, - "variant_title": { - "description": "Title of the variant associated with the line item", - "type": ["null", "string"] - }, - "vendor": { - "description": "Vendor of the line item", - "type": ["null", "string"] - }, - "tax_lines": { - "description": "Information about tax applied to the line item", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "channel_liable": { - "description": "Indicates if the channel is liable for the tax", - "type": ["null", "boolean"] - }, - "price": { - "description": "Tax price applied to the line item", - "type": ["null", "string"] - }, - "price_set": { - "description": "Set of tax prices for the line item", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Shop tax price of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in shop currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Presentment tax price of the line item", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - } - } - } - } - }, - "rate": { - "description": "Tax rate applied to the line item", - "type": ["null", "number"] - }, - "title": { - "description": "Title of the tax applied", - "type": ["null", "string"] - } - } - } - }, - "discount_allocations": { - "description": "Allocations of discounts for the line item", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount of the discount", - "type": ["null", "string"] - }, - "amount_set": { - "description": "Set of amounts for the discount allocation", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Shop amount of the discount allocation", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in shop currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "description": "Presentment amount of the discount allocation", - "type": ["null", "object"], - "properties": { - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "string"] - }, - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - } - } - } - } - }, - "discount_application_index": { - "description": "Index of the discount application", - "type": ["null", "number"] - } - } - } - }, - "duties": { - "description": "Information about duties of the line item", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "duty_id": { - "description": "ID of the duty", - "type": ["null", "integer"] - }, - "amount_set": { - "description": "Set of amounts for the duties of the line item", - "properties": { - "shop_money": { - "description": "Shop amount of duty for the line item", - "properties": { - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - }, - "amount": { - "description": "Amount in shop currency", - "type": ["null", "number"] - } - }, - "type": ["null", "object"] - }, - "presentment_money": { - "description": "Presentment amount of duty for the line item", - "properties": { - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - }, - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "number"] - } - }, - "type": ["null", "object"] - } - }, - "type": ["null", "object"] - } - } - } - } - } - } - } - } - }, - "duties": { - "description": "Information about duties for the refund", - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "additionalProperties": true, - "properties": { - "duty_id": { - "description": "ID of the duty", - "type": ["null", "integer"] - }, - "amount_set": { - "description": "Set of amounts for duties", - "properties": { - "shop_money": { - "description": "Shop amount of duty", - "properties": { - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - }, - "amount": { - "description": "Amount in shop currency", - "type": ["null", "number"] - } - }, - "type": ["null", "object"] - }, - "presentment_money": { - "description": "Presentment amount of duty", - "properties": { - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - }, - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "number"] - } - }, - "type": ["null", "object"] - } - }, - "type": ["null", "object"] - } - } - } - }, - "total_duties_set": { - "description": "Set of total duties for the order", - "type": ["null", "object"], - "properties": { - "shop_money": { - "description": "Shop total duties", - "type": ["null", "object"], - "properties": { - "currency_code": { - "description": "Currency code for shop amount", - "type": ["null", "string"] - }, - "amount": { - "description": "Amount in shop currency", - "type": ["null", "number"] - } - } - }, - "presentment_money": { - "description": "Presentment total duties", - "type": ["null", "object"], - "properties": { - "currency_code": { - "description": "Currency code for presentment amount", - "type": ["null", "string"] - }, - "amount": { - "description": "Amount in presentment currency", - "type": ["null", "number"] - } - } - } - } - } - } - } - }, - "shipping_address": { - "type": ["null", "object"], - "properties": { - "first_name": { - "type": ["null", "string"] - }, - "address1": { - "type": ["null", "string"] - }, - "phone": { - "type": ["null", "string"] - }, - "city": { - "type": ["null", "string"] - }, - "zip": { - "type": ["null", "string"] - }, - "province": { - "type": ["null", "string"] - }, - "country": { - "type": ["null", "string"] - }, - "last_name": { - "type": ["null", "string"] - }, - "address2": { - "type": ["null", "string"] - }, - "company": { - "type": ["null", "string"] - }, - "latitude": { - "type": ["null", "number"] - }, - "longitude": { - "type": ["null", "number"] - }, - "name": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "province_code": { - "type": ["null", "string"] - } - } - }, - "shipping_lines": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "integer"] - }, - "carrier_identifier": { - "type": ["null", "string"] - }, - "code": { - "type": ["null", "string"] - }, - "discounted_price": { - "type": ["null", "number"] - }, - "discounted_price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "phone": { - "type": ["null", "string"] - }, - "price": { - "type": ["null", "number"] - }, - "price_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "number"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "requested_fulfillment_service_id": { - "type": ["null", "string"] - }, - "source": { - "type": ["null", "string"] - }, - "title": { - "type": ["null", "string"] - }, - "tax_lines": { - "type": ["null", "array"] - }, - "discount_allocations": { - "type": ["null", "array"], - "items": { - "type": ["null", "object"], - "properties": { - "id": { - "type": ["null", "string"] - }, - "amount": { - "type": ["null", "string"] - }, - "description": { - "type": ["null", "string"] - }, - "created_at": { - "type": ["null", "string"], - "format": "date-time" - }, - "discount_application_index": { - "type": ["null", "number"] - }, - "amount_set": { - "type": ["null", "object"], - "properties": { - "shop_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - }, - "presentment_money": { - "type": ["null", "object"], - "properties": { - "amount": { - "type": ["null", "string"] - }, - "currency_code": { - "type": ["null", "string"] - } - } - } - } - }, - "application_type": { - "type": ["null", "string"] - } - } - } - } - } - } - }, - "deleted_at": { - "description": "The date and time when the order was deleted", - "type": ["null", "string"], - "format": "date-time" - }, - "deleted_message": { - "description": "Message provided when the order was deleted", - "type": ["null", "string"] - }, - "deleted_description": { - "description": "Description provided when the order was deleted", - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/streams.py b/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/streams.py deleted file mode 100644 index 85b8563f5079..000000000000 --- a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/streams.py +++ /dev/null @@ -1,467 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from typing import Any, Iterable, Mapping - -from airbyte_cdk.sources.streams import Stream - - -class Countries(Stream): - primary_key = "id" - cursor_field = "updated_at" - - def __init__(self, count: int, **kwargs): - super().__init__(**kwargs) - self.count = count - - def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: - """ """ - sample_record = { - "id": 417014808765, - "name": "Ukraine", - "code": "UA", - "tax_name": "PDV", - "tax": 0.2, - "provinces": [], - "shop_url": "airbyte-integration-test", - } - for _ in range(self.count): - yield sample_record - - -class Orders(Stream): - primary_key = "id" - cursor_field = "updated_at" - - def __init__(self, count: int, **kwargs): - super().__init__(**kwargs) - self.count = count - - def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: - """ """ - sample_record = { - "id": 4554821468349, - "admin_graphql_api_id": "gid://shopify/Order/4554821468349", - "app_id": 580111, - "browser_ip": "176.113.167.23", - "buyer_accepts_marketing": False, - "cancel_reason": None, - "cancelled_at": None, - "cart_token": None, - "checkout_id": 25048437719229, - "checkout_token": "cf5d16a0a0688905bd551c6dec591506", - "client_details": { - "accept_language": "en-US,en;q=0.9,uk;q=0.8", - "browser_height": 754, - "browser_ip": "176.113.167.23", - "browser_width": 1519, - "session_hash": None, - "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", - }, - "closed_at": "2022-06-15T06:25:43-07:00", - "company": None, - "confirmation_number": None, - "confirmed": True, - "contact_email": "integration-test@airbyte.io", - "created_at": "2022-06-15T05:16:53-07:00", - "currency": "USD", - "current_subtotal_price": 0.0, - "current_subtotal_price_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "current_total_additional_fees_set": None, - "current_total_discounts": 0.0, - "current_total_discounts_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "current_total_duties_set": None, - "current_total_price": 0.0, - "current_total_price_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "current_total_tax": 0.0, - "current_total_tax_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "customer_locale": "en", - "device_id": None, - "discount_codes": [], - "email": "integration-test@airbyte.io", - "estimated_taxes": False, - "financial_status": "refunded", - "fulfillment_status": "fulfilled", - "landing_site": "/wallets/checkouts.json", - "landing_site_ref": None, - "location_id": None, - "merchant_of_record_app_id": None, - "name": "#1136", - "note": "updated_mon_24.04.2023", - "note_attributes": [], - "number": 136, - "order_number": 1136, - "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/e4f98630ea44a884e33e700203ce2130/authenticate?key=edf087d6ae55a4541bf1375432f6a4b8", - "original_total_additional_fees_set": None, - "original_total_duties_set": None, - "payment_gateway_names": ["bogus"], - "phone": None, - "po_number": None, - "presentment_currency": "USD", - "processed_at": "2022-06-15T05:16:53-07:00", - "reference": None, - "referring_site": "https://airbyte-integration-test.myshopify.com/products/all-black-sneaker-right-foot", - "source_identifier": None, - "source_name": "web", - "source_url": None, - "subtotal_price": 57.23, - "subtotal_price_set": { - "shop_money": {"amount": 57.23, "currency_code": "USD"}, - "presentment_money": {"amount": 57.23, "currency_code": "USD"}, - }, - "tags": "Refund", - "tax_exempt": False, - "tax_lines": [], - "taxes_included": True, - "test": True, - "token": "e4f98630ea44a884e33e700203ce2130", - "total_discounts": 1.77, - "total_discounts_set": { - "shop_money": {"amount": 1.77, "currency_code": "USD"}, - "presentment_money": {"amount": 1.77, "currency_code": "USD"}, - }, - "total_line_items_price": 59.0, - "total_line_items_price_set": { - "shop_money": {"amount": 59.0, "currency_code": "USD"}, - "presentment_money": {"amount": 59.0, "currency_code": "USD"}, - }, - "total_outstanding": 0.0, - "total_price": 57.23, - "total_price_set": { - "shop_money": {"amount": 57.23, "currency_code": "USD"}, - "presentment_money": {"amount": 57.23, "currency_code": "USD"}, - }, - "total_shipping_price_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "total_tax": 0.0, - "total_tax_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "total_tip_received": 0.0, - "total_weight": 0, - "updated_at": "2023-04-24T07:00:37-07:00", - "user_id": None, - "billing_address": { - "first_name": "Iryna", - "address1": "2261 Market Street", - "phone": None, - "city": "San Francisco", - "zip": "94114", - "province": "California", - "country": "United States", - "last_name": "Grankova", - "address2": "4381", - "company": None, - "latitude": 37.7647751, - "longitude": -122.4320369, - "name": "Iryna Grankova", - "country_code": "US", - "province_code": "CA", - }, - "customer": { - "id": 5362027233469, - "email": "integration-test@airbyte.io", - "created_at": "2021-07-08T05:41:47-07:00", - "updated_at": "2022-06-22T03:50:13-07:00", - "first_name": "Airbyte", - "last_name": "Team", - "state": "disabled", - "note": None, - "verified_email": True, - "multipass_identifier": None, - "tax_exempt": False, - "phone": None, - "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": None}, - "sms_marketing_consent": None, - "tags": "", - "currency": "USD", - "accepts_marketing": False, - "accepts_marketing_updated_at": None, - "marketing_opt_in_level": "single_opt_in", - "tax_exemptions": [], - "admin_graphql_api_id": "gid://shopify/Customer/5362027233469", - "default_address": { - "id": 7492260823229, - "customer_id": 5362027233469, - "first_name": "Airbyte", - "last_name": "Team", - "company": None, - "address1": "2261 Market Street", - "address2": "4381", - "city": "San Francisco", - "province": "California", - "country": "United States", - "zip": "94114", - "phone": None, - "name": "Airbyte Team", - "province_code": "CA", - "country_code": "US", - "country_name": "United States", - "default": True, - }, - }, - "discount_applications": [ - { - "target_type": "line_item", - "type": "automatic", - "value": "3.0", - "value_type": "percentage", - "allocation_method": "across", - "target_selection": "all", - "title": "eeeee", - } - ], - "fulfillments": [ - { - "id": 4075788501181, - "admin_graphql_api_id": "gid://shopify/Fulfillment/4075788501181", - "created_at": "2022-06-15T05:16:55-07:00", - "location_id": 63590301885, - "name": "#1136.1", - "order_id": 4554821468349, - "origin_address": {}, - "receipt": {}, - "service": "manual", - "shipment_status": None, - "status": "success", - "tracking_company": None, - "tracking_number": None, - "tracking_numbers": [], - "tracking_url": None, - "tracking_urls": [], - "updated_at": "2022-06-15T05:16:55-07:00", - "line_items": [ - { - "id": 11406125564093, - "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", - "fulfillable_quantity": 0, - "fulfillment_service": "manual", - "fulfillment_status": "fulfilled", - "gift_card": False, - "grams": 0, - "name": "All Black Sneaker Right Foot - ivory", - "price": 59.0, - "price_set": { - "shop_money": {"amount": 59.0, "currency_code": "USD"}, - "presentment_money": {"amount": 59.0, "currency_code": "USD"}, - }, - "product_exists": True, - "product_id": 6796226560189, - "properties": [], - "quantity": 1, - "requires_shipping": False, - "sku": "", - "taxable": True, - "title": "All Black Sneaker Right Foot", - "total_discount": 0.0, - "total_discount_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "variant_id": 40090597884093, - "variant_inventory_management": "shopify", - "variant_title": "ivory", - "vendor": "Becker - Moore", - "tax_lines": [], - "duties": [], - "discount_allocations": [ - { - "amount": "1.77", - "amount_set": { - "shop_money": {"amount": "1.77", "currency_code": "USD"}, - "presentment_money": {"amount": "1.77", "currency_code": "USD"}, - }, - "discount_application_index": 0, - } - ], - } - ], - } - ], - "line_items": [ - { - "id": 11406125564093, - "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", - "fulfillable_quantity": 0, - "fulfillment_service": "manual", - "fulfillment_status": "fulfilled", - "gift_card": False, - "grams": 0, - "name": "All Black Sneaker Right Foot - ivory", - "price": 59.0, - "price_set": { - "shop_money": {"amount": 59.0, "currency_code": "USD"}, - "presentment_money": {"amount": 59.0, "currency_code": "USD"}, - }, - "product_exists": True, - "product_id": 6796226560189, - "properties": [], - "quantity": 1, - "requires_shipping": False, - "sku": "", - "taxable": True, - "title": "All Black Sneaker Right Foot", - "total_discount": 0.0, - "total_discount_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "variant_id": 40090597884093, - "variant_inventory_management": "shopify", - "variant_title": "ivory", - "vendor": "Becker - Moore", - "tax_lines": [], - "duties": [], - "discount_allocations": [ - { - "amount": "1.77", - "amount_set": { - "shop_money": {"amount": "1.77", "currency_code": "USD"}, - "presentment_money": {"amount": "1.77", "currency_code": "USD"}, - }, - "discount_application_index": 0, - } - ], - } - ], - "payment_terms": None, - "refunds": [ - { - "id": 852809646269, - "admin_graphql_api_id": "gid://shopify/Refund/852809646269", - "created_at": "2022-06-15T06:25:43-07:00", - "note": None, - "order_id": 4554821468349, - "processed_at": "2022-06-15T06:25:43-07:00", - "restock": True, - "total_duties_set": { - "shop_money": {"amount": 0.0, "currency_code": "USD"}, - "presentment_money": {"amount": 0.0, "currency_code": "USD"}, - }, - "user_id": 74861019325, - "order_adjustments": [], - "transactions": [ - { - "id": 5721170968765, - "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765", - "amount": "57.23", - "authorization": None, - "created_at": "2022-06-15T06:25:42-07:00", - "currency": "USD", - "device_id": None, - "error_code": None, - "gateway": "bogus", - "kind": "refund", - "location_id": None, - "message": "Bogus Gateway: Forced success", - "order_id": 4554821468349, - "parent_id": 5721110872253, - "payment_id": "c25048437719229.2", - "processed_at": "2022-06-15T06:25:42-07:00", - "receipt": {"paid_amount": "57.23"}, - "source_name": "1830279", - "status": "success", - "test": True, - "user_id": None, - "payment_details": { - "credit_card_bin": "1", - "avs_result_code": None, - "cvv_result_code": None, - "credit_card_number": "•••• •••• •••• 1", - "credit_card_company": "Bogus", - "buyer_action_info": None, - "credit_card_name": "Bogus Gateway", - "credit_card_wallet": None, - "credit_card_expiration_month": 2, - "credit_card_expiration_year": 2025, - }, - } - ], - "refund_line_items": [ - { - "id": 363131404477, - "line_item_id": 11406125564093, - "location_id": 63590301885, - "quantity": 1, - "restock_type": "return", - "subtotal": 57.23, - "subtotal_set": { - "shop_money": {"amount": "57.23", "currency_code": "USD"}, - "presentment_money": {"amount": "57.23", "currency_code": "USD"}, - }, - "total_tax": 0.0, - "total_tax_set": { - "shop_money": {"amount": "0.00", "currency_code": "USD"}, - "presentment_money": {"amount": "0.00", "currency_code": "USD"}, - }, - "line_item": { - "id": 11406125564093, - "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", - "fulfillable_quantity": 0, - "fulfillment_service": "manual", - "fulfillment_status": "fulfilled", - "gift_card": False, - "grams": 0, - "name": "All Black Sneaker Right Foot - ivory", - "price": "59.00", - "price_set": { - "shop_money": {"amount": "59.00", "currency_code": "USD"}, - "presentment_money": {"amount": "59.00", "currency_code": "USD"}, - }, - "product_exists": True, - "product_id": 6796226560189, - "properties": [], - "quantity": 1, - "requires_shipping": False, - "sku": "", - "taxable": True, - "title": "All Black Sneaker Right Foot", - "total_discount": "0.00", - "total_discount_set": { - "shop_money": {"amount": "0.00", "currency_code": "USD"}, - "presentment_money": {"amount": "0.00", "currency_code": "USD"}, - }, - "variant_id": 40090597884093, - "variant_inventory_management": "shopify", - "variant_title": "ivory", - "vendor": "Becker - Moore", - "tax_lines": [], - "duties": [], - "discount_allocations": [ - { - "amount": "1.77", - "amount_set": { - "shop_money": {"amount": "1.77", "currency_code": "USD"}, - "presentment_money": {"amount": "1.77", "currency_code": "USD"}, - }, - "discount_application_index": 0, - } - ], - }, - } - ], - "duties": [], - } - ], - "shipping_address": None, - "shipping_lines": [], - "shop_url": "airbyte-integration-test", - } - for _ in range(self.count): - yield sample_record diff --git a/airbyte-integrations/connectors/source-faker-hardcode/README.md b/airbyte-integrations/connectors/source-hardcoded-records/README.md similarity index 73% rename from airbyte-integrations/connectors/source-faker-hardcode/README.md rename to airbyte-integrations/connectors/source-hardcoded-records/README.md index 082aeb47b12f..eb6cdc082653 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/README.md +++ b/airbyte-integrations/connectors/source-hardcoded-records/README.md @@ -1,7 +1,7 @@ -# Faker source connector +# Hardcoded Records source connector -This is the repository for the Faker source connector, written in Python. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/faker). +This is the repository for the Hardcoded Records source connector, written in Python. +For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/hardcoded-records). ## Local development @@ -20,18 +20,18 @@ poetry install --with dev ### Create credentials -**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/faker) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_faker/spec.yaml` file. +**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/hardcoded-records) +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_hardcoded_records/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-faker spec -poetry run source-faker check --config secrets/config.json -poetry run source-faker discover --config secrets/config.json -poetry run source-faker read --config secrets/config.json --catalog sample_files/configured_catalog.json +poetry run source-hardcoded-records spec +poetry run source-hardcoded-records check --config secrets/config.json +poetry run source-hardcoded-records discover --config secrets/config.json +poetry run source-hardcoded-records read --config secrets/config.json --catalog sample_files/configured_catalog.json ``` ### Running unit tests @@ -48,20 +48,20 @@ poetry run pytest unit_tests 2. Run the following command to build the docker image: ```bash -airbyte-ci connectors --name=source-faker build +airbyte-ci connectors --name=source-hardcoded-records build ``` -An image will be available on your host with the tag `airbyte/source-faker:dev`. +An image will be available on your host with the tag `airbyte/source-hardcoded-records:dev`. ### Running as a docker container Then run any of the connector commands as follows: ``` -docker run --rm airbyte/source-faker:dev spec -docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-faker:dev check --config /secrets/config.json -docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-faker:dev discover --config /secrets/config.json -docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-faker:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json +docker run --rm airbyte/source-hardcoded-records:dev spec +docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-hardcoded-records:dev check --config /secrets/config.json +docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-hardcoded-records:dev discover --config /secrets/config.json +docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-hardcoded-records:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` ### Running our CI test suite @@ -69,7 +69,7 @@ docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integrat 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-faker test +airbyte-ci connectors --name=source-hardcoded-records test ``` ### Customizing acceptance Tests @@ -92,12 +92,12 @@ Please commit the changes to `pyproject.toml` and `poetry.lock` files. 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-faker test` +1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-hardcoded-records 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. -4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/faker.md`). +4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/hardcoded-records.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. diff --git a/airbyte-integrations/connectors/source-faker-hardcode/acceptance-test-config.yml b/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml similarity index 92% rename from airbyte-integrations/connectors/source-faker-hardcode/acceptance-test-config.yml rename to airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml index bb7cacccf35c..68b77e683d37 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml @@ -1,9 +1,9 @@ -connector_image: airbyte/source-faker-hardcode:dev +connector_image: airbyte/source-hardcoded-records:dev test_strictness_level: high acceptance_tests: spec: tests: - - spec_path: source_faker/spec.json + - spec_path: source_hardcoded_records/spec.json connection: tests: - config_path: secrets/config.json diff --git a/airbyte-integrations/connectors/source-faker-hardcode/icon.svg b/airbyte-integrations/connectors/source-hardcoded-records/icon.svg similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/icon.svg rename to airbyte-integrations/connectors/source-hardcoded-records/icon.svg diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/__init__.py b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/__init__.py similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/integration_tests/__init__.py rename to airbyte-integrations/connectors/source-hardcoded-records/integration_tests/__init__.py diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/abnormal_state.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/abnormal_state.json similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/integration_tests/abnormal_state.json rename to airbyte-integrations/connectors/source-hardcoded-records/integration_tests/abnormal_state.json diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/acceptance.py b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/acceptance.py similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/integration_tests/acceptance.py rename to airbyte-integrations/connectors/source-hardcoded-records/integration_tests/acceptance.py diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/configured_catalog.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json similarity index 91% rename from airbyte-integrations/connectors/source-faker-hardcode/integration_tests/configured_catalog.json rename to airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json index fd431ce850b9..04a959be61b8 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/configured_catalog.json +++ b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json @@ -2,7 +2,7 @@ "streams": [ { "stream": { - "name": "orders", + "name": "customers", "json_schema": {}, "supported_sync_modes": ["incremental", "full_refresh"], "source_defined_cursor": true, @@ -13,7 +13,7 @@ }, { "stream": { - "name": "countries", + "name": "products", "json_schema": {}, "supported_sync_modes": ["incremental", "full_refresh"], "source_defined_cursor": true, diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/integration_tests/expected_records.jsonl rename to airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/invalid_config.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/invalid_config.json similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/integration_tests/invalid_config.json rename to airbyte-integrations/connectors/source-hardcoded-records/integration_tests/invalid_config.json diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_config.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_config.json similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_config.json rename to airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_config.json diff --git a/airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_state.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_state.json similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/integration_tests/sample_state.json rename to airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_state.json diff --git a/airbyte-integrations/connectors/source-faker-hardcode/main.py b/airbyte-integrations/connectors/source-hardcoded-records/main.py similarity index 69% rename from airbyte-integrations/connectors/source-faker-hardcode/main.py rename to airbyte-integrations/connectors/source-hardcoded-records/main.py index ab7445b536f2..ead17772f9c3 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/main.py +++ b/airbyte-integrations/connectors/source-hardcoded-records/main.py @@ -3,7 +3,7 @@ # -from source_faker_hardcode.run import run +from source_hardcoded_records.run import run if __name__ == "__main__": run() diff --git a/airbyte-integrations/connectors/source-faker-hardcode/metadata.yaml b/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml similarity index 82% rename from airbyte-integrations/connectors/source-faker-hardcode/metadata.yaml rename to airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml index b45e8022c557..2f762783fbc6 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/metadata.yaml +++ b/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml @@ -10,12 +10,12 @@ data: connectorType: source definitionId: 084124ab-22db-4019-b36d-630418541bf7 dockerImageTag: 0.0.1 - dockerRepository: airbyte/source-faker-hardcode - documentationUrl: https://docs.airbyte.com/integrations/sources/faker-hardcode - githubIssueLabel: source-faker + dockerRepository: airbyte/source-hardcoded-records + documentationUrl: https://docs.airbyte.com/integrations/sources/hardcoded-records + githubIssueLabel: source-hardcoded-records icon: faker.svg license: MIT - name: Sample Data (Faker HC) + name: Hardcoded Records registries: cloud: enabled: true @@ -25,7 +25,7 @@ data: remoteRegistries: pypi: enabled: true - packageName: airbyte-source-faker-hardcode + packageName: airbyte-source-hardcoded-records resourceRequirements: jobSpecific: - jobType: sync @@ -44,7 +44,7 @@ data: - suite: unitTests - suite: acceptanceTests testSecrets: - - name: SECRET_SOURCE-FAKER-HARDCODE_CREDS + - name: SECRET_SOURCE-HARDCODED-RECORDS_CREDS fileName: config.json secretStore: type: GSM diff --git a/airbyte-integrations/connectors/source-faker-hardcode/poetry.lock b/airbyte-integrations/connectors/source-hardcoded-records/poetry.lock similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/poetry.lock rename to airbyte-integrations/connectors/source-hardcoded-records/poetry.lock diff --git a/airbyte-integrations/connectors/source-faker-hardcode/pyproject.toml b/airbyte-integrations/connectors/source-hardcoded-records/pyproject.toml similarity index 63% rename from airbyte-integrations/connectors/source-faker-hardcode/pyproject.toml rename to airbyte-integrations/connectors/source-hardcoded-records/pyproject.toml index c33e73ce6222..d128673b6de4 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/pyproject.toml +++ b/airbyte-integrations/connectors/source-hardcoded-records/pyproject.toml @@ -4,23 +4,23 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] version = "0.0.1" -name = "source-faker-hardcode" -description = "Source implementation for fake but realistic looking data." +name = "source-hardcoded-records" +description = "Source implementation for hardcoded recprds." authors = [ "Airbyte ",] license = "MIT" readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/faker-hardcode" +documentation = "https://docs.airbyte.com/integrations/sources/hardcoded-records" homepage = "https://airbyte.com" repository = "https://github.com/airbytehq/airbyte" [[tool.poetry.packages]] -include = "source_faker_hardcode" +include = "source_hardcoded_records" [tool.poetry.dependencies] python = "^3.9,<4.0" airbyte-cdk = "^3.0" [tool.poetry.scripts] -source-faker = "source_faker_hardcode.run:run" +source-hardcoded-records = "source_hardcoded_records.run:run" [tool.poetry.group.dev.dependencies] pytest-mock = "^3.6.1" diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/__init__.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/__init__.py new file mode 100644 index 000000000000..b5d26aa4bc2c --- /dev/null +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/__init__.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# + + +from .source import SourceHardcodedRecords + +__all__ = ["SourceHardcodedRecords"] diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/run.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/run.py similarity index 67% rename from airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/run.py rename to airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/run.py index 3ebd25be7fa2..78e9d0b60530 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/run.py +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/run.py @@ -6,11 +6,11 @@ import sys from airbyte_cdk.entrypoint import launch -from source_faker_hardcode import SourceFakerHardcode +from source_hardcoded_records import SourceHardcodedRecords def run(): - source = SourceFakerHardcode() + source = SourceHardcodedRecords() launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/customers.json b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/customers.json new file mode 100644 index 000000000000..b11dc92ba890 --- /dev/null +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/customers.json @@ -0,0 +1,308 @@ +{ + "type": ["null", "object"], + "additionalProperties": true, + "properties": { + "last_order_name": { + "description": "Name of the customer's last order.", + "type": ["null", "string"] + }, + "currency": { + "description": "Currency associated with the customer.", + "type": ["null", "string"] + }, + "email": { + "description": "Customer's email address.", + "type": ["null", "string"] + }, + "multipass_identifier": { + "description": "Multipass identifier for the customer.", + "type": ["null", "string"] + }, + "shop_url": { + "description": "URL of the customer's associated shop.", + "type": ["null", "string"] + }, + "default_address": { + "description": "Customer's default address", + "type": ["null", "object"], + "properties": { + "city": { + "description": "City where the customer's default address is located.", + "type": ["null", "string"] + }, + "address1": { + "description": "First line of customer's default address.", + "type": ["null", "string"] + }, + "zip": { + "description": "Postal or ZIP code of the customer's default address.", + "type": ["null", "string"] + }, + "id": { + "description": "Unique identifier for the default address.", + "type": ["null", "integer"] + }, + "country_name": { + "description": "Name of the country for the customer's default address.", + "type": ["null", "string"] + }, + "province": { + "description": "Province or state where the customer's default address is located.", + "type": ["null", "string"] + }, + "phone": { + "description": "Customer's phone number associated with the default address.", + "type": ["null", "string"] + }, + "country": { + "description": "Country of the customer's default address.", + "type": ["null", "string"] + }, + "first_name": { + "description": "Customer's first name associated with the default address.", + "type": ["null", "string"] + }, + "customer_id": { + "description": "Unique identifier for the customer.", + "type": ["null", "integer"] + }, + "default": { + "description": "Indicates if this is the default address for the customer.", + "type": ["null", "boolean"] + }, + "last_name": { + "description": "Customer's last name associated with the default address.", + "type": ["null", "string"] + }, + "country_code": { + "description": "Country code of the customer's default address.", + "type": ["null", "string"] + }, + "name": { + "description": "Full name associated with the default address.", + "type": ["null", "string"] + }, + "province_code": { + "description": "Province or state code of the customer's default address.", + "type": ["null", "string"] + }, + "address2": { + "description": "Second line of customer's default address.", + "type": ["null", "string"] + }, + "company": { + "description": "Customer's company name associated with the default address.", + "type": ["null", "string"] + } + } + }, + "email_marketing_consent": { + "description": "Indicates if the customer has consented to receive marketing emails", + "type": ["null", "object"], + "properties": { + "consent_updated_at": { + "description": "Timestamp when the email marketing consent was last updated.", + "type": ["null", "string"], + "format": "date-time" + }, + "opt_in_level": { + "description": "Level of opt-in for email marketing.", + "type": ["null", "string"] + }, + "state": { + "description": "Current state of email marketing consent.", + "type": ["null", "string"] + } + } + }, + "orders_count": { + "description": "Total number of orders placed by the customer.", + "type": ["null", "integer"] + }, + "state": { + "description": "Current state or status of the customer.", + "type": ["null", "string"] + }, + "verified_email": { + "description": "Indicates if the customer's email address has been verified.", + "type": ["null", "boolean"] + }, + "total_spent": { + "description": "Total amount spent by the customer.", + "type": ["null", "number"] + }, + "last_order_id": { + "description": "Unique identifier for the customer's last order.", + "type": ["null", "integer"] + }, + "first_name": { + "description": "Customer's first name.", + "type": ["null", "string"] + }, + "updated_at": { + "description": "Timestamp when the customer data was last updated.", + "type": ["null", "string"], + "format": "date-time" + }, + "note": { + "description": "Additional notes or comments related to the customer.", + "type": ["null", "string"] + }, + "phone": { + "description": "Customer's phone number.", + "type": ["null", "string"] + }, + "admin_graphql_api_id": { + "description": "Unique identifier for the customer in the Admin GraphQL API.", + "type": ["null", "string"] + }, + "addresses": { + "description": "List of addresses associated with the customer", + "type": ["null", "array"], + "items": { + "type": ["null", "object"], + "properties": { + "city": { + "description": "City where the customer is located.", + "type": ["null", "string"] + }, + "address1": { + "description": "First line of customer's address.", + "type": ["null", "string"] + }, + "zip": { + "description": "Postal or ZIP code of the customer's address.", + "type": ["null", "string"] + }, + "id": { + "description": "Unique identifier for the address.", + "type": ["null", "integer"] + }, + "country_name": { + "description": "Name of the customer's country.", + "type": ["null", "string"] + }, + "province": { + "description": "Province or state where the customer is located.", + "type": ["null", "string"] + }, + "phone": { + "description": "Customer's phone number.", + "type": ["null", "string"] + }, + "country": { + "description": "Customer's country.", + "type": ["null", "string"] + }, + "first_name": { + "description": "Customer's first name.", + "type": ["null", "string"] + }, + "customer_id": { + "description": "Unique identifier for the customer.", + "type": ["null", "integer"] + }, + "default": { + "description": "Indicates if this address is the default address for the customer.", + "type": ["null", "boolean"] + }, + "last_name": { + "description": "Customer's last name.", + "type": ["null", "string"] + }, + "country_code": { + "description": "Country code of the customer's country.", + "type": ["null", "string"] + }, + "name": { + "description": "Full name associated with the address.", + "type": ["null", "string"] + }, + "province_code": { + "description": "Province or state code.", + "type": ["null", "string"] + }, + "address2": { + "description": "Second line of customer's address.", + "type": ["null", "string"] + }, + "company": { + "description": "Customer's company name.", + "type": ["null", "string"] + } + } + } + }, + "last_name": { + "description": "Customer's last name.", + "type": ["null", "string"] + }, + "tags": { + "description": "Tags associated with the customer for categorization.", + "type": ["null", "string"] + }, + "tax_exempt": { + "description": "Indicates if the customer is tax exempt.", + "type": ["null", "boolean"] + }, + "id": { + "description": "Unique identifier for the customer.", + "type": ["null", "integer"] + }, + "accepts_marketing": { + "description": "Indicates if the customer has agreed to receive marketing materials.", + "type": ["null", "boolean"] + }, + "accepts_marketing_updated_at": { + "description": "Timestamp when the marketing consent status was last updated.", + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "created_at": { + "description": "Timestamp when the customer was created.", + "type": ["null", "string"], + "format": "date-time" + }, + "sms_marketing_consent": { + "description": "Indicates if the customer has consented to receive marketing SMS messages", + "type": ["null", "object"], + "properties": { + "consent_collected_from": { + "description": "Source from which SMS marketing consent was collected.", + "type": ["null", "string"] + }, + "consent_updated_at": { + "description": "Timestamp when the SMS marketing consent was last updated.", + "type": ["null", "string"], + "format": "date-time" + }, + "opt_in_level": { + "description": "Level of opt-in for SMS marketing.", + "type": ["null", "string"] + }, + "state": { + "description": "Current state of SMS marketing consent.", + "type": ["null", "string"] + } + } + }, + "tax_exemptions": { + "description": "Information about tax exemptions for the customer.", + "type": ["null", "string"] + }, + "marketing_opt_in_level": { + "description": "Level of opt-in for marketing activities.", + "type": ["null", "string"] + } + } +} diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/products.json b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/products.json new file mode 100644 index 000000000000..9f86a457d4c8 --- /dev/null +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/products.json @@ -0,0 +1,21 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "id": { "type": "integer" }, + "make": { "type": "string" }, + "model": { "type": "string" }, + "year": { "type": "integer" }, + "price": { "type": "number" }, + "created_at": { + "type": "string", + "format": "date-time", + "airbyte_type": "timestamp_with_timezone" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "airbyte_type": "timestamp_with_timezone" + } + } +} diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/source.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py similarity index 82% rename from airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/source.py rename to airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py index 8017f3081798..e2f7e9f0a29b 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/source.py +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py @@ -8,12 +8,12 @@ from airbyte_cdk.sources import AbstractSource from airbyte_cdk.sources.streams import Stream -from .streams import Countries, Orders +from .streams import Customers, Products DEFAULT_COUNT = 1_000 -class SourceFakerHardcode(AbstractSource): +class SourceHardcodedRecords(AbstractSource): def check_connection(self, logger: logging.Logger, config: Mapping[str, Any]) -> Tuple[bool, Any]: if type(config["count"]) == int or type(config["count"]) == float: return True, None @@ -23,4 +23,4 @@ def check_connection(self, logger: logging.Logger, config: Mapping[str, Any]) -> def streams(self, config: Mapping[str, Any]) -> List[Stream]: count: int = config["count"] if "count" in config else DEFAULT_COUNT - return [Countries(count), Orders(count)] + return [Products(count), Customers(count)] diff --git a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/spec.json b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/spec.json similarity index 87% rename from airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/spec.json rename to airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/spec.json index 864ec5ca6202..659990512272 100644 --- a/airbyte-integrations/connectors/source-faker-hardcode/source_faker_hardcode/spec.json +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/spec.json @@ -1,8 +1,8 @@ { - "documentationUrl": "https://docs.airbyte.com/integrations/sources/faker", + "documentationUrl": "https://docs.airbyte.com/integrations/sources/hardcoded-records", "connectionSpecification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Faker Hardcode Source Spec", + "title": "Hardcoded Records Source Spec", "type": "object", "required": [], "additionalProperties": true, diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py new file mode 100644 index 000000000000..e77685d80b94 --- /dev/null +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py @@ -0,0 +1,121 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + +from typing import Any, Iterable, Mapping + +from airbyte_cdk.sources.streams import Stream + + +class Products(Stream): + primary_key = "id" + cursor_field = "updated_at" + + def __init__(self, count: int, **kwargs): + super().__init__(**kwargs) + self.count = count + + def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: + """ """ + sample_record = { + "id": 1, + "make": "Mazda", + "model": "MX-5", + "year": 2008, + "price": 2869, + "created_at": "2022-02-01T17:02:19+00:00", + "updated_at": "2022-11-01T17:02:19+00:00", + } + for _ in range(self.count): + yield sample_record + + +class Customers(Stream): + primary_key = "id" + cursor_field = "updated_at" + + def __init__(self, count: int, **kwargs): + super().__init__(**kwargs) + self.count = count + + def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: + """ """ + sample_record = { + "id": 6569096478909, + "email": "test@test.com", + "created_at": "2023-04-13T02:30:04-07:00", + "updated_at": "2023-04-24T06:53:48-07:00", + "first_name": "New Test", + "last_name": "Customer", + "orders_count": 0, + "state": "disabled", + "total_spent": 0.0, + "last_order_id": None, + "note": "updated_mon_24.04.2023", + "verified_email": True, + "multipass_identifier": None, + "tax_exempt": False, + "tags": "", + "last_order_name": None, + "currency": "USD", + "phone": "+380639379992", + "addresses": [ + { + "id": 8092523135165, + "customer_id": 6569096478909, + "first_name": "New Test", + "last_name": "Customer", + "company": "Test Company", + "address1": "My Best Accent", + "address2": "", + "city": "Fair Lawn", + "province": "New Jersey", + "country": "United States", + "zip": "07410", + "phone": "", + "name": "New Test Customer", + "province_code": "NJ", + "country_code": "US", + "country_name": "United States", + "default": True, + } + ], + "accepts_marketing": True, + "accepts_marketing_updated_at": "2023-04-13T02:30:04-07:00", + "marketing_opt_in_level": "single_opt_in", + "tax_exemptions": "[]", + "email_marketing_consent": { + "state": "subscribed", + "opt_in_level": "single_opt_in", + "consent_updated_at": "2023-04-13T02:30:04-07:00", + }, + "sms_marketing_consent": { + "state": "not_subscribed", + "opt_in_level": "single_opt_in", + "consent_updated_at": None, + "consent_collected_from": "SHOPIFY", + }, + "admin_graphql_api_id": "gid://shopify/Customer/6569096478909", + "default_address": { + "id": 8092523135165, + "customer_id": 6569096478909, + "first_name": "New Test", + "last_name": "Customer", + "company": "Test Company", + "address1": "My Best Accent", + "address2": "", + "city": "Fair Lawn", + "province": "New Jersey", + "country": "United States", + "zip": "07410", + "phone": "", + "name": "New Test Customer", + "province_code": "NJ", + "country_code": "US", + "country_name": "United States", + "default": True, + }, + "shop_url": "airbyte-integration-test", + } + for _ in range(self.count): + yield sample_record diff --git a/airbyte-integrations/connectors/source-faker-hardcode/unit_tests/unit_test.py b/airbyte-integrations/connectors/source-hardcoded-records/unit_tests/unit_test.py similarity index 100% rename from airbyte-integrations/connectors/source-faker-hardcode/unit_tests/unit_test.py rename to airbyte-integrations/connectors/source-hardcoded-records/unit_tests/unit_test.py From 11497d9ff79966f6b778333f6d22f7b1012246d3 Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 13:46:39 +0200 Subject: [PATCH 03/10] Source Hardcoded Records: remove extras Signed-off-by: Artem Inzhyyants --- .../connectors/source-hardcoded-records/metadata.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml b/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml index 2f762783fbc6..fcce04874b9b 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml +++ b/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml @@ -26,12 +26,6 @@ data: pypi: enabled: true packageName: airbyte-source-hardcoded-records - resourceRequirements: - jobSpecific: - - jobType: sync - resourceRequirements: - cpu_limit: "4.0" - cpu_request: "1.0" suggestedStreams: streams: - countries From c7804d2bd2b035bbe9aa8b9de603fd7e0c38bd42 Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 13:56:41 +0200 Subject: [PATCH 04/10] Source Hardcoded Records: remove extras Signed-off-by: Artem Inzhyyants --- .../acceptance-test-config.yml | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml b/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml index 68b77e683d37..be692ef932bf 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml @@ -22,25 +22,5 @@ acceptance_tests: tests: - config_path: secrets/config.json configured_catalog_path: integration_tests/configured_catalog.json - ignored_fields: - users: - - name: updated_at - bypass_reason: "dynamic field" - - name: created_at - bypass_reason: "dynamic field" - products: - - name: updated_at - bypass_reason: "dynamic field" - - name: created_at - bypass_reason: "dynamic field" - purchases: - - name: updated_at - bypass_reason: "dynamic field" - - name: created_at - bypass_reason: "dynamic field" 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 + bypass_reason: "Incremental is not supported" \ No newline at end of file From a67cd8191178ed5e3ae2448a7f9fd275e97925cf Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 13:58:28 +0200 Subject: [PATCH 05/10] Source Hardcoded Records: update expected recs Signed-off-by: Artem Inzhyyants --- .../integration_tests/expected_records.jsonl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl index e69de29bb2d1..92533349dde4 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl @@ -0,0 +1,2 @@ +{"stream":"customers","data":{"id":6569096478909,"email":"test@test.com","created_at":"2023-04-13T02:30:04-07:00","updated_at":"2023-04-24T06:53:48-07:00","first_name":"New Test","last_name":"Customer","orders_count":0,"state":"disabled","total_spent":0.0,"last_order_id":null,"note":"updated_mon_24.04.2023","verified_email":true,"multipass_identifier":null,"tax_exempt":false,"tags":"","last_order_name":null,"currency":"USD","phone":"+380639379992","addresses":[{"id":8092523135165,"customer_id":6569096478909,"first_name":"New Test","last_name":"Customer","company":"Test Company","address1":"My Best Accent","address2":"","city":"Fair Lawn","province":"New Jersey","country":"United States","zip":"07410","phone":"","name":"New Test Customer","province_code":"NJ","country_code":"US","country_name":"United States","default":true}],"accepts_marketing":true,"accepts_marketing_updated_at":"2023-04-13T02:30:04-07:00","marketing_opt_in_level":"single_opt_in","tax_exemptions":"[]","email_marketing_consent":{"state":"subscribed","opt_in_level":"single_opt_in","consent_updated_at":"2023-04-13T02:30:04-07:00"},"sms_marketing_consent":{"state":"not_subscribed","opt_in_level":"single_opt_in","consent_updated_at":null,"consent_collected_from":"SHOPIFY"},"admin_graphql_api_id":"gid://shopify/Customer/6569096478909","default_address":{"id":8092523135165,"customer_id":6569096478909,"first_name":"New Test","last_name":"Customer","company":"Test Company","address1":"My Best Accent","address2":"","city":"Fair Lawn","province":"New Jersey","country":"United States","zip":"07410","phone":"","name":"New Test Customer","province_code":"NJ","country_code":"US","country_name":"United States","default":true},"shop_url":"airbyte-integration-test"},"emitted_at":1721727132543} +{"stream":"products","data":{"id":1,"make":"Mazda","model":"MX-5","year":2008,"price":2869,"created_at":"2022-02-01T17:02:19+00:00","updated_at":"2022-11-01T17:02:19+00:00"},"emitted_at":1721727132544} From ff9ff0c81a358b558d86aa29e41378a4ea15915d Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 14:10:45 +0200 Subject: [PATCH 06/10] Source Hardcoded Records: fmt Signed-off-by: Artem Inzhyyants --- .../source-hardcoded-records/acceptance-test-config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml b/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml index be692ef932bf..a4c1c4170573 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-hardcoded-records/acceptance-test-config.yml @@ -23,4 +23,4 @@ acceptance_tests: - config_path: secrets/config.json configured_catalog_path: integration_tests/configured_catalog.json incremental: - bypass_reason: "Incremental is not supported" \ No newline at end of file + bypass_reason: "Incremental is not supported" From 668af71f9ffa0ed4ebf534fb70609c06e49ba9b4 Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 14:16:46 +0200 Subject: [PATCH 07/10] Source Hardcoded Records: add docs Signed-off-by: Artem Inzhyyants --- .../integrations/sources/hardcoded-records.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/integrations/sources/hardcoded-records.md diff --git a/docs/integrations/sources/hardcoded-records.md b/docs/integrations/sources/hardcoded-records.md new file mode 100644 index 000000000000..fa2b500f2e8c --- /dev/null +++ b/docs/integrations/sources/hardcoded-records.md @@ -0,0 +1,35 @@ +# Hardcoded Records + +## Sync overview + +The Sample Data (Hardcoded Records) source outputs sample data using the hardcoded . + +### Output schema + +This source will generate an "e-commerce-like" dataset with users, products, and purchases. Here's +what is produced at a Postgres destination connected to this source: + + +### Features + +| Feature | Supported?\(Yes/No\) | Notes | +|:------------------|:---------------------|:------| +| Full Refresh Sync | Yes | | +| Incremental Sync | No | | +| Namespaces | No | | + + +### Requirements + +None! + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|:--------|:-----------|:---------------------------------------------------------|:-----------------| +| 0.0.1 | 2024-07-23 | [42434](https://github.com/airbytehq/airbyte/pull/42434) | Initial Release | + +
From b41be5bbeb678775debf7d4d4e4ffa18da12fa41 Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 14:30:26 +0200 Subject: [PATCH 08/10] Source Hardcoded Records: fmt Signed-off-by: Artem Inzhyyants --- .../source_hardcoded_records/run.py | 4 +- .../source_hardcoded_records/source.py | 5 +- .../source_hardcoded_records/streams.py | 161 +++++++++--------- 3 files changed, 80 insertions(+), 90 deletions(-) diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/run.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/run.py index 78e9d0b60530..577f766ea8f6 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/run.py +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/run.py @@ -1,6 +1,4 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. import sys diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py index e2f7e9f0a29b..725852ec467e 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py @@ -1,6 +1,5 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. + import logging from typing import Any, List, Mapping, Tuple diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py index e77685d80b94..66ef252a138e 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py @@ -1,15 +1,16 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. + +from abc import ABC from typing import Any, Iterable, Mapping from airbyte_cdk.sources.streams import Stream -class Products(Stream): +class HardcodedStream(Stream, ABC): primary_key = "id" cursor_field = "updated_at" + sample_record = None def __init__(self, count: int, **kwargs): super().__init__(**kwargs) @@ -17,86 +18,44 @@ def __init__(self, count: int, **kwargs): def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: """ """ - sample_record = { - "id": 1, - "make": "Mazda", - "model": "MX-5", - "year": 2008, - "price": 2869, - "created_at": "2022-02-01T17:02:19+00:00", - "updated_at": "2022-11-01T17:02:19+00:00", - } for _ in range(self.count): - yield sample_record + yield self.sample_record -class Customers(Stream): - primary_key = "id" - cursor_field = "updated_at" +class Products(HardcodedStream): + sample_record = { + "id": 1, + "make": "Mazda", + "model": "MX-5", + "year": 2008, + "price": 2869, + "created_at": "2022-02-01T17:02:19+00:00", + "updated_at": "2022-11-01T17:02:19+00:00", + } - def __init__(self, count: int, **kwargs): - super().__init__(**kwargs) - self.count = count - def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: - """ """ - sample_record = { - "id": 6569096478909, - "email": "test@test.com", - "created_at": "2023-04-13T02:30:04-07:00", - "updated_at": "2023-04-24T06:53:48-07:00", - "first_name": "New Test", - "last_name": "Customer", - "orders_count": 0, - "state": "disabled", - "total_spent": 0.0, - "last_order_id": None, - "note": "updated_mon_24.04.2023", - "verified_email": True, - "multipass_identifier": None, - "tax_exempt": False, - "tags": "", - "last_order_name": None, - "currency": "USD", - "phone": "+380639379992", - "addresses": [ - { - "id": 8092523135165, - "customer_id": 6569096478909, - "first_name": "New Test", - "last_name": "Customer", - "company": "Test Company", - "address1": "My Best Accent", - "address2": "", - "city": "Fair Lawn", - "province": "New Jersey", - "country": "United States", - "zip": "07410", - "phone": "", - "name": "New Test Customer", - "province_code": "NJ", - "country_code": "US", - "country_name": "United States", - "default": True, - } - ], - "accepts_marketing": True, - "accepts_marketing_updated_at": "2023-04-13T02:30:04-07:00", - "marketing_opt_in_level": "single_opt_in", - "tax_exemptions": "[]", - "email_marketing_consent": { - "state": "subscribed", - "opt_in_level": "single_opt_in", - "consent_updated_at": "2023-04-13T02:30:04-07:00", - }, - "sms_marketing_consent": { - "state": "not_subscribed", - "opt_in_level": "single_opt_in", - "consent_updated_at": None, - "consent_collected_from": "SHOPIFY", - }, - "admin_graphql_api_id": "gid://shopify/Customer/6569096478909", - "default_address": { +class Customers(HardcodedStream): + sample_record = { + "id": 6569096478909, + "email": "test@test.com", + "created_at": "2023-04-13T02:30:04-07:00", + "updated_at": "2023-04-24T06:53:48-07:00", + "first_name": "New Test", + "last_name": "Customer", + "orders_count": 0, + "state": "disabled", + "total_spent": 0.0, + "last_order_id": None, + "note": "updated_mon_24.04.2023", + "verified_email": True, + "multipass_identifier": None, + "tax_exempt": False, + "tags": "", + "last_order_name": None, + "currency": "USD", + "phone": "+380639379992", + "addresses": [ + { "id": 8092523135165, "customer_id": 6569096478909, "first_name": "New Test", @@ -114,8 +73,42 @@ def read_records(self, **kwargs) -> Iterable[Mapping[str, Any]]: "country_code": "US", "country_name": "United States", "default": True, - }, - "shop_url": "airbyte-integration-test", - } - for _ in range(self.count): - yield sample_record + } + ], + "accepts_marketing": True, + "accepts_marketing_updated_at": "2023-04-13T02:30:04-07:00", + "marketing_opt_in_level": "single_opt_in", + "tax_exemptions": "[]", + "email_marketing_consent": { + "state": "subscribed", + "opt_in_level": "single_opt_in", + "consent_updated_at": "2023-04-13T02:30:04-07:00", + }, + "sms_marketing_consent": { + "state": "not_subscribed", + "opt_in_level": "single_opt_in", + "consent_updated_at": None, + "consent_collected_from": "SHOPIFY", + }, + "admin_graphql_api_id": "gid://shopify/Customer/6569096478909", + "default_address": { + "id": 8092523135165, + "customer_id": 6569096478909, + "first_name": "New Test", + "last_name": "Customer", + "company": "Test Company", + "address1": "My Best Accent", + "address2": "", + "city": "Fair Lawn", + "province": "New Jersey", + "country": "United States", + "zip": "07410", + "phone": "", + "name": "New Test Customer", + "province_code": "NJ", + "country_code": "US", + "country_name": "United States", + "default": True, + }, + "shop_url": "airbyte-integration-test", + } From f0f31d9dbb386c660dc7ca03072173002bc9fbf9 Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Tue, 23 Jul 2024 14:39:33 +0200 Subject: [PATCH 09/10] Source Hardcoded Records: ref Signed-off-by: Artem Inzhyyants --- .../integration_tests/abnormal_state.json | 35 ------------------- .../integration_tests/configured_catalog.json | 4 +-- .../integration_tests/sample_config.json | 5 +-- .../integration_tests/sample_state.json | 24 ------------- 4 files changed, 3 insertions(+), 65 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-hardcoded-records/integration_tests/abnormal_state.json delete mode 100644 airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_state.json diff --git a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/abnormal_state.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/abnormal_state.json deleted file mode 100644 index 48ec425863b9..000000000000 --- a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/abnormal_state.json +++ /dev/null @@ -1,35 +0,0 @@ -[ - { - "type": "STREAM", - "stream": { - "stream_state": { - "updated_at": 11 - }, - "stream_descriptor": { - "name": "users" - } - } - }, - { - "type": "STREAM", - "stream": { - "stream_state": { - "updated_at": 11 - }, - "stream_descriptor": { - "name": "purchases" - } - } - }, - { - "type": "STREAM", - "stream": { - "stream_state": { - "updated_at": 101 - }, - "stream_descriptor": { - "name": "products" - } - } - } -] diff --git a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json index 04a959be61b8..cce86213cb2f 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json +++ b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json @@ -8,7 +8,7 @@ "source_defined_cursor": true, "default_cursor_field": ["updated_at"] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" }, { @@ -19,7 +19,7 @@ "source_defined_cursor": true, "default_cursor_field": ["updated_at"] }, - "sync_mode": "incremental", + "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" } ] diff --git a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_config.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_config.json index b9edd86b582b..0197c990240b 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_config.json +++ b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_config.json @@ -1,6 +1,3 @@ { - "count": 10, - "seed": 0, - "parallelism": 1, - "always_updated": false + "count": 100 } diff --git a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_state.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_state.json deleted file mode 100644 index 11d94567aeb7..000000000000 --- a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/sample_state.json +++ /dev/null @@ -1,24 +0,0 @@ -[ - { - "type": "STREAM", - "stream": { - "stream_state": { - "id": 0 - }, - "stream_descriptor": { - "name": "users" - } - } - }, - { - "type": "STREAM", - "stream": { - "stream_state": { - "user_id": 0 - }, - "stream_descriptor": { - "name": "purchases" - } - } - } -] From 136cc94d10fc2dfaf6c56130c56128c6ec8069ca Mon Sep 17 00:00:00 2001 From: Artem Inzhyyants Date: Thu, 25 Jul 2024 10:24:12 +0200 Subject: [PATCH 10/10] Source Hardcoded Records: add new stream & update docs Signed-off-by: Artem Inzhyyants --- .../integration_tests/configured_catalog.json | 11 ++ .../integration_tests/expected_records.jsonl | 1 + .../source-hardcoded-records/metadata.yaml | 1 - .../schemas/dummy_fields.json | 11 ++ .../source_hardcoded_records/source.py | 4 +- .../source_hardcoded_records/streams.py | 13 +- .../unit_tests/unit_test.py | 5 - .../integrations/sources/hardcoded-records.md | 127 +++++++++++++++++- 8 files changed, 159 insertions(+), 14 deletions(-) create mode 100644 airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/dummy_fields.json delete mode 100644 airbyte-integrations/connectors/source-hardcoded-records/unit_tests/unit_test.py diff --git a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json index cce86213cb2f..9c7b11ba3e01 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json +++ b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/configured_catalog.json @@ -21,6 +21,17 @@ }, "sync_mode": "full_refresh", "destination_sync_mode": "overwrite" + }, + { + "stream": { + "name": "dummy_fields", + "json_schema": {}, + "supported_sync_modes": ["incremental", "full_refresh"], + "source_defined_cursor": true, + "default_cursor_field": ["updated_at"] + }, + "sync_mode": "full_refresh", + "destination_sync_mode": "overwrite" } ] } diff --git a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl index 92533349dde4..9c62ad44636e 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-hardcoded-records/integration_tests/expected_records.jsonl @@ -1,2 +1,3 @@ {"stream":"customers","data":{"id":6569096478909,"email":"test@test.com","created_at":"2023-04-13T02:30:04-07:00","updated_at":"2023-04-24T06:53:48-07:00","first_name":"New Test","last_name":"Customer","orders_count":0,"state":"disabled","total_spent":0.0,"last_order_id":null,"note":"updated_mon_24.04.2023","verified_email":true,"multipass_identifier":null,"tax_exempt":false,"tags":"","last_order_name":null,"currency":"USD","phone":"+380639379992","addresses":[{"id":8092523135165,"customer_id":6569096478909,"first_name":"New Test","last_name":"Customer","company":"Test Company","address1":"My Best Accent","address2":"","city":"Fair Lawn","province":"New Jersey","country":"United States","zip":"07410","phone":"","name":"New Test Customer","province_code":"NJ","country_code":"US","country_name":"United States","default":true}],"accepts_marketing":true,"accepts_marketing_updated_at":"2023-04-13T02:30:04-07:00","marketing_opt_in_level":"single_opt_in","tax_exemptions":"[]","email_marketing_consent":{"state":"subscribed","opt_in_level":"single_opt_in","consent_updated_at":"2023-04-13T02:30:04-07:00"},"sms_marketing_consent":{"state":"not_subscribed","opt_in_level":"single_opt_in","consent_updated_at":null,"consent_collected_from":"SHOPIFY"},"admin_graphql_api_id":"gid://shopify/Customer/6569096478909","default_address":{"id":8092523135165,"customer_id":6569096478909,"first_name":"New Test","last_name":"Customer","company":"Test Company","address1":"My Best Accent","address2":"","city":"Fair Lawn","province":"New Jersey","country":"United States","zip":"07410","phone":"","name":"New Test Customer","province_code":"NJ","country_code":"US","country_name":"United States","default":true},"shop_url":"airbyte-integration-test"},"emitted_at":1721727132543} {"stream":"products","data":{"id":1,"make":"Mazda","model":"MX-5","year":2008,"price":2869,"created_at":"2022-02-01T17:02:19+00:00","updated_at":"2022-11-01T17:02:19+00:00"},"emitted_at":1721727132544} +{"stream":"dummy_fields","data":{"field1":"valuevaluevaluevaluevalue1","field2":"valuevaluevaluevaluevalue1","field3":"valuevaluevaluevaluevalue1","field4":"valuevaluevaluevaluevalue1","field5":"valuevaluevaluevaluevalue1"},"emitted_at":1721895471355} diff --git a/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml b/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml index fcce04874b9b..d53c93fc59de 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml +++ b/airbyte-integrations/connectors/source-hardcoded-records/metadata.yaml @@ -35,7 +35,6 @@ data: - language:python - cdk:python connectorTestSuitesOptions: - - suite: unitTests - suite: acceptanceTests testSecrets: - name: SECRET_SOURCE-HARDCODED-RECORDS_CREDS diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/dummy_fields.json b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/dummy_fields.json new file mode 100644 index 000000000000..07b38ee24216 --- /dev/null +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/schemas/dummy_fields.json @@ -0,0 +1,11 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "field1": { "type": "string" }, + "field2": { "type": "string" }, + "field3": { "type": "string" }, + "field4": { "type": "string" }, + "field5": { "type": "string" } + } +} diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py index 725852ec467e..862ac9470e96 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/source.py @@ -7,7 +7,7 @@ from airbyte_cdk.sources import AbstractSource from airbyte_cdk.sources.streams import Stream -from .streams import Customers, Products +from .streams import Customers, DummyFields, Products DEFAULT_COUNT = 1_000 @@ -22,4 +22,4 @@ def check_connection(self, logger: logging.Logger, config: Mapping[str, Any]) -> def streams(self, config: Mapping[str, Any]) -> List[Stream]: count: int = config["count"] if "count" in config else DEFAULT_COUNT - return [Products(count), Customers(count)] + return [Products(count), Customers(count), DummyFields(count)] diff --git a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py index 66ef252a138e..7f3ea89850eb 100644 --- a/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py +++ b/airbyte-integrations/connectors/source-hardcoded-records/source_hardcoded_records/streams.py @@ -8,8 +8,7 @@ class HardcodedStream(Stream, ABC): - primary_key = "id" - cursor_field = "updated_at" + primary_key = None sample_record = None def __init__(self, count: int, **kwargs): @@ -112,3 +111,13 @@ class Customers(HardcodedStream): }, "shop_url": "airbyte-integration-test", } + + +class DummyFields(HardcodedStream): + sample_record = { + "field1": "valuevaluevaluevaluevalue1", + "field2": "valuevaluevaluevaluevalue1", + "field3": "valuevaluevaluevaluevalue1", + "field4": "valuevaluevaluevaluevalue1", + "field5": "valuevaluevaluevaluevalue1", + } diff --git a/airbyte-integrations/connectors/source-hardcoded-records/unit_tests/unit_test.py b/airbyte-integrations/connectors/source-hardcoded-records/unit_tests/unit_test.py deleted file mode 100644 index e83e0d5ff18c..000000000000 --- a/airbyte-integrations/connectors/source-hardcoded-records/unit_tests/unit_test.py +++ /dev/null @@ -1,5 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - diff --git a/docs/integrations/sources/hardcoded-records.md b/docs/integrations/sources/hardcoded-records.md index fa2b500f2e8c..798d1a56beb3 100644 --- a/docs/integrations/sources/hardcoded-records.md +++ b/docs/integrations/sources/hardcoded-records.md @@ -2,13 +2,132 @@ ## Sync overview -The Sample Data (Hardcoded Records) source outputs sample data using the hardcoded . +The Sample Data (Hardcoded Records) source outputs sample data (same record over and over again, but very fast) and is intended to be used in performance testing. -### Output schema +### Output schemas -This source will generate an "e-commerce-like" dataset with users, products, and purchases. Here's -what is produced at a Postgres destination connected to this source: +This source will generate an dataset with products (skinny), customers (fat) and dummy fields. Here's the examples: +
+Products + +```json +{ + "id": 1, + "make": "Mazda", + "model": "MX-5", + "year": 2008, + "price": 2869, + "created_at": "2022-02-01T17:02:19+00:00", + "updated_at": "2022-11-01T17:02:19+00:00" +} +``` + +
+ +
+ +
+Customers + +```json +{ + "id": 6569096478909, + "email": "test@test.com", + "created_at": "2023-04-13T02:30:04-07:00", + "updated_at": "2023-04-24T06:53:48-07:00", + "first_name": "New Test", + "last_name": "Customer", + "orders_count": 0, + "state": "disabled", + "total_spent": 0.0, + "last_order_id": null, + "note": "updated_mon_24.04.2023", + "verified_email": true, + "multipass_identifier": null, + "tax_exempt": false, + "tags": "", + "last_order_name": null, + "currency": "USD", + "phone": "+380639379992", + "addresses": [ + { + "id": 8092523135165, + "customer_id": 6569096478909, + "first_name": "New Test", + "last_name": "Customer", + "company": "Test Company", + "address1": "My Best Accent", + "address2": "", + "city": "Fair Lawn", + "province": "New Jersey", + "country": "United States", + "zip": "07410", + "phone": "", + "name": "New Test Customer", + "province_code": "NJ", + "country_code": "US", + "country_name": "United States", + "default": true + } + ], + "accepts_marketing": true, + "accepts_marketing_updated_at": "2023-04-13T02:30:04-07:00", + "marketing_opt_in_level": "single_opt_in", + "tax_exemptions": "[]", + "email_marketing_consent": { + "state": "subscribed", + "opt_in_level": "single_opt_in", + "consent_updated_at": "2023-04-13T02:30:04-07:00" + }, + "sms_marketing_consent": { + "state": "not_subscribed", + "opt_in_level": "single_opt_in", + "consent_updated_at": null, + "consent_collected_from": "SHOPIFY" + }, + "admin_graphql_api_id": "gid://shopify/Customer/6569096478909", + "default_address": { + "id": 8092523135165, + "customer_id": 6569096478909, + "first_name": "New Test", + "last_name": "Customer", + "company": "Test Company", + "address1": "My Best Accent", + "address2": "", + "city": "Fair Lawn", + "province": "New Jersey", + "country": "United States", + "zip": "07410", + "phone": "", + "name": "New Test Customer", + "province_code": "NJ", + "country_code": "US", + "country_name": "United States", + "default": true + }, + "shop_url": "airbyte-integration-test" +} +``` + +
+ +
+ +
+Dummy Fields + +```json +{ + "field1": "valuevaluevaluevaluevalue1", + "field2": "valuevaluevaluevaluevalue1", + "field3": "valuevaluevaluevaluevalue1", + "field4": "valuevaluevaluevaluevalue1", + "field5": "valuevaluevaluevaluevalue1" +} +``` + +
### Features